SpaceNinjaServer/src/controllers/api/confirmGuildInvitationController.ts
Sainan 6508d16190
All checks were successful
Build / build (18) (push) Successful in 47s
Build / build (20) (push) Successful in 1m4s
Build / build (22) (push) Successful in 1m6s
Build Docker image / docker (push) Successful in 34s
feat: track RosterActivity in clan log (#1173)
Reviewed-on: #1173
2025-03-13 10:46:08 -07:00

47 lines
1.5 KiB
TypeScript

import { Guild, GuildMember } from "@/src/models/guildModel";
import { getGuildClient, updateInventoryForConfirmedGuildJoin } from "@/src/services/guildService";
import { getAccountForRequest, getSuffixedName } from "@/src/services/loginService";
import { RequestHandler } from "express";
import { Types } from "mongoose";
export const confirmGuildInvitationController: RequestHandler = async (req, res) => {
const account = await getAccountForRequest(req);
const guildMember = await GuildMember.findOne({
accountId: account._id,
guildId: req.query.clanId as string
});
if (guildMember) {
guildMember.status = 0;
await guildMember.save();
await updateInventoryForConfirmedGuildJoin(
account._id.toString(),
new Types.ObjectId(req.query.clanId as string)
);
const guild = (await Guild.findOne({ _id: req.query.clanId as string }))!;
guild.RosterActivity ??= [];
guild.RosterActivity.push({
dateTime: new Date(),
entryType: 6,
details: getSuffixedName(account)
});
await guild.save();
res.json({
...(await getGuildClient(guild, account._id.toString())),
InventoryChanges: {
Recipes: [
{
ItemType: "/Lotus/Types/Keys/DojoKeyBlueprint",
ItemCount: 1
}
]
}
});
} else {
res.end();
}
};