SpaceNinjaServer/src/controllers/custom/getGuildController.ts
AMelonInsideLemon d64531f4b2 feat(webui): guild view (#2752)
Also moves guild-specific cheats to a switch for each guild
Closes #1403

Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Reviewed-on: OpenWF/SpaceNinjaServer#2752
Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com>
Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
2025-09-09 23:55:10 -07:00

41 lines
1.6 KiB
TypeScript

import type { RequestHandler } from "express";
import { Guild, GuildMember } from "../../models/guildModel.ts";
import { toMongoDate, toOid2 } from "../../helpers/inventoryHelpers.ts";
import { addAccountDataToFriendInfo, addInventoryDataToFriendInfo } from "../../services/friendService.ts";
import type { IGuildMemberClient } from "../../types/guildTypes.ts";
export const getGuildController: RequestHandler = async (req, res) => {
const guildId = req.query.guildId;
if (guildId) {
const guild = await Guild.findById(guildId);
if (guild) {
const guildMembers = await GuildMember.find({ guildId: guild._id });
const members: IGuildMemberClient[] = [];
const dataFillInPromises: Promise<void>[] = [];
for (const guildMember of guildMembers) {
const member: IGuildMemberClient = {
_id: toOid2(guildMember.accountId, undefined),
Rank: guildMember.rank,
Status: guildMember.status,
Note: guildMember.RequestMsg,
RequestExpiry: guildMember.RequestExpiry ? toMongoDate(guildMember.RequestExpiry) : undefined
};
dataFillInPromises.push(addAccountDataToFriendInfo(member));
dataFillInPromises.push(addInventoryDataToFriendInfo(member));
members.push(member);
}
await Promise.all(dataFillInPromises);
res.json({
...guild.toObject(),
Members: members
});
} else {
res.status(400).end();
}
}
};