Reviewed-on: OpenWF/SpaceNinjaServer#2693 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 type { 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
 | 
						|
    });
 | 
						|
};
 |