forked from OpenWF/SpaceNinjaServer
Reviewed-on: OpenWF/SpaceNinjaServer#1452 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import { Alliance, AllianceMember, Guild, GuildMember } from "@/src/models/guildModel";
|
|
import { getAllianceClient } from "@/src/services/guildService";
|
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
|
import { RequestHandler } from "express";
|
|
|
|
export const confirmAllianceInvitationController: RequestHandler = async (req, res) => {
|
|
// Check requester is a warlord in their guild
|
|
const accountId = await getAccountIdForRequest(req);
|
|
const guildMember = (await GuildMember.findOne({ accountId, status: 0 }))!;
|
|
if (guildMember.rank > 1) {
|
|
res.status(400).json({ Error: 104 });
|
|
return;
|
|
}
|
|
|
|
const allianceMember = await AllianceMember.findOne({
|
|
allianceId: req.query.allianceId,
|
|
guildId: guildMember.guildId
|
|
});
|
|
if (!allianceMember || !allianceMember.Pending) {
|
|
res.status(400);
|
|
return;
|
|
}
|
|
allianceMember.Pending = false;
|
|
|
|
const guild = (await Guild.findById(guildMember.guildId))!;
|
|
guild.AllianceId = allianceMember.allianceId;
|
|
|
|
await Promise.all([allianceMember.save(), guild.save()]);
|
|
|
|
// Give client the new alliance data which uses "AllianceId" instead of "_id" in this response
|
|
const alliance = (await Alliance.findById(allianceMember.allianceId))!;
|
|
const { _id, ...rest } = await getAllianceClient(alliance, guild);
|
|
res.json({
|
|
AllianceId: _id,
|
|
...rest
|
|
});
|
|
};
|