forked from OpenWF/SpaceNinjaServer
		
	chore: split confirmGuildInvitation get & post controllers (#1465)
Reviewed-on: OpenWF/SpaceNinjaServer#1465 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									6bb74b026a
								
							
						
					
					
						commit
						2ef59cd570
					
				@ -1,3 +1,4 @@
 | 
			
		||||
src/routes/api.ts
 | 
			
		||||
static/webui/libs/
 | 
			
		||||
*.html
 | 
			
		||||
*.md
 | 
			
		||||
 | 
			
		||||
@ -9,62 +9,8 @@ import { IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
			
		||||
import { RequestHandler } from "express";
 | 
			
		||||
import { Types } from "mongoose";
 | 
			
		||||
 | 
			
		||||
export const confirmGuildInvitationController: RequestHandler = async (req, res) => {
 | 
			
		||||
    if (req.body) {
 | 
			
		||||
        // POST request: Clan representative accepting invite(s).
 | 
			
		||||
        const accountId = await getAccountIdForRequest(req);
 | 
			
		||||
        const guild = (await Guild.findById(req.query.clanId as string, "Ranks RosterActivity"))!;
 | 
			
		||||
        if (!(await hasGuildPermission(guild, accountId, GuildPermission.Recruiter))) {
 | 
			
		||||
            res.status(400).json("Invalid permission");
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        const payload = getJSONfromString<{ userId: string }>(String(req.body));
 | 
			
		||||
        const filter: { accountId?: string; status: number } = { status: 1 };
 | 
			
		||||
        if (payload.userId != "all") {
 | 
			
		||||
            filter.accountId = payload.userId;
 | 
			
		||||
        }
 | 
			
		||||
        const guildMembers = await GuildMember.find(filter);
 | 
			
		||||
        const newMembers: string[] = [];
 | 
			
		||||
        for (const guildMember of guildMembers) {
 | 
			
		||||
            guildMember.status = 0;
 | 
			
		||||
            guildMember.RequestMsg = undefined;
 | 
			
		||||
            guildMember.RequestExpiry = undefined;
 | 
			
		||||
            await guildMember.save();
 | 
			
		||||
 | 
			
		||||
            // Remove other pending applications for this account
 | 
			
		||||
            await GuildMember.deleteMany({ accountId: guildMember.accountId, status: 1 });
 | 
			
		||||
 | 
			
		||||
            // Update inventory of new member
 | 
			
		||||
            const inventory = await getInventory(guildMember.accountId.toString(), "GuildId Recipes");
 | 
			
		||||
            inventory.GuildId = new Types.ObjectId(req.query.clanId as string);
 | 
			
		||||
            addRecipes(inventory, [
 | 
			
		||||
                {
 | 
			
		||||
                    ItemType: "/Lotus/Types/Keys/DojoKeyBlueprint",
 | 
			
		||||
                    ItemCount: 1
 | 
			
		||||
                }
 | 
			
		||||
            ]);
 | 
			
		||||
            await inventory.save();
 | 
			
		||||
 | 
			
		||||
            // Add join to clan log
 | 
			
		||||
            const account = (await Account.findOne({ _id: guildMember.accountId }))!;
 | 
			
		||||
            guild.RosterActivity ??= [];
 | 
			
		||||
            guild.RosterActivity.push({
 | 
			
		||||
                dateTime: new Date(),
 | 
			
		||||
                entryType: 6,
 | 
			
		||||
                details: getSuffixedName(account)
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            newMembers.push(account._id.toString());
 | 
			
		||||
        }
 | 
			
		||||
        await guild.save();
 | 
			
		||||
        res.json({
 | 
			
		||||
            NewMembers: newMembers
 | 
			
		||||
        });
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // GET request: A player accepting an invite they got in their inbox.
 | 
			
		||||
 | 
			
		||||
// GET request: A player accepting an invite they got in their inbox.
 | 
			
		||||
export const confirmGuildInvitationGetController: RequestHandler = async (req, res) => {
 | 
			
		||||
    const account = await getAccountForRequest(req);
 | 
			
		||||
    const invitedGuildMember = await GuildMember.findOne({
 | 
			
		||||
        accountId: account._id,
 | 
			
		||||
@ -124,3 +70,55 @@ export const confirmGuildInvitationController: RequestHandler = async (req, res)
 | 
			
		||||
        res.end();
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// POST request: Clan representative accepting invite(s).
 | 
			
		||||
export const confirmGuildInvitationPostController: RequestHandler = async (req, res) => {
 | 
			
		||||
    const accountId = await getAccountIdForRequest(req);
 | 
			
		||||
    const guild = (await Guild.findById(req.query.clanId as string, "Ranks RosterActivity"))!;
 | 
			
		||||
    if (!(await hasGuildPermission(guild, accountId, GuildPermission.Recruiter))) {
 | 
			
		||||
        res.status(400).json("Invalid permission");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    const payload = getJSONfromString<{ userId: string }>(String(req.body));
 | 
			
		||||
    const filter: { accountId?: string; status: number } = { status: 1 };
 | 
			
		||||
    if (payload.userId != "all") {
 | 
			
		||||
        filter.accountId = payload.userId;
 | 
			
		||||
    }
 | 
			
		||||
    const guildMembers = await GuildMember.find(filter);
 | 
			
		||||
    const newMembers: string[] = [];
 | 
			
		||||
    for (const guildMember of guildMembers) {
 | 
			
		||||
        guildMember.status = 0;
 | 
			
		||||
        guildMember.RequestMsg = undefined;
 | 
			
		||||
        guildMember.RequestExpiry = undefined;
 | 
			
		||||
        await guildMember.save();
 | 
			
		||||
 | 
			
		||||
        // Remove other pending applications for this account
 | 
			
		||||
        await GuildMember.deleteMany({ accountId: guildMember.accountId, status: 1 });
 | 
			
		||||
 | 
			
		||||
        // Update inventory of new member
 | 
			
		||||
        const inventory = await getInventory(guildMember.accountId.toString(), "GuildId Recipes");
 | 
			
		||||
        inventory.GuildId = new Types.ObjectId(req.query.clanId as string);
 | 
			
		||||
        addRecipes(inventory, [
 | 
			
		||||
            {
 | 
			
		||||
                ItemType: "/Lotus/Types/Keys/DojoKeyBlueprint",
 | 
			
		||||
                ItemCount: 1
 | 
			
		||||
            }
 | 
			
		||||
        ]);
 | 
			
		||||
        await inventory.save();
 | 
			
		||||
 | 
			
		||||
        // Add join to clan log
 | 
			
		||||
        const account = (await Account.findOne({ _id: guildMember.accountId }))!;
 | 
			
		||||
        guild.RosterActivity ??= [];
 | 
			
		||||
        guild.RosterActivity.push({
 | 
			
		||||
            dateTime: new Date(),
 | 
			
		||||
            entryType: 6,
 | 
			
		||||
            details: getSuffixedName(account)
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        newMembers.push(account._id.toString());
 | 
			
		||||
    }
 | 
			
		||||
    await guild.save();
 | 
			
		||||
    res.json({
 | 
			
		||||
        NewMembers: newMembers
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialo
 | 
			
		||||
import { clearNewEpisodeRewardController } from "@/src/controllers/api/clearNewEpisodeRewardController";
 | 
			
		||||
import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
 | 
			
		||||
import { confirmAllianceInvitationController } from "@/src/controllers/api/confirmAllianceInvitationController";
 | 
			
		||||
import { confirmGuildInvitationController } from "@/src/controllers/api/confirmGuildInvitationController";
 | 
			
		||||
import { confirmGuildInvitationGetController, confirmGuildInvitationPostController } from "@/src/controllers/api/confirmGuildInvitationController";
 | 
			
		||||
import { contributeGuildClassController } from "@/src/controllers/api/contributeGuildClassController";
 | 
			
		||||
import { contributeToDojoComponentController } from "@/src/controllers/api/contributeToDojoComponentController";
 | 
			
		||||
import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController";
 | 
			
		||||
@ -146,7 +146,7 @@ apiRouter.get("/changeGuildRank.php", changeGuildRankController);
 | 
			
		||||
apiRouter.get("/checkDailyMissionBonus.php", checkDailyMissionBonusController);
 | 
			
		||||
apiRouter.get("/claimLibraryDailyTaskReward.php", claimLibraryDailyTaskRewardController);
 | 
			
		||||
apiRouter.get("/confirmAllianceInvitation.php", confirmAllianceInvitationController);
 | 
			
		||||
apiRouter.get("/confirmGuildInvitation.php", confirmGuildInvitationController);
 | 
			
		||||
apiRouter.get("/confirmGuildInvitation.php", confirmGuildInvitationGetController);
 | 
			
		||||
apiRouter.get("/credits.php", creditsController);
 | 
			
		||||
apiRouter.get("/declineAllianceInvite.php", declineAllianceInviteController);
 | 
			
		||||
apiRouter.get("/declineGuildInvite.php", declineGuildInviteController);
 | 
			
		||||
@ -201,7 +201,7 @@ apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
 | 
			
		||||
apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
 | 
			
		||||
apiRouter.post("/clearNewEpisodeReward.php", clearNewEpisodeRewardController);
 | 
			
		||||
apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
 | 
			
		||||
apiRouter.post("/confirmGuildInvitation.php", confirmGuildInvitationController);
 | 
			
		||||
apiRouter.post("/confirmGuildInvitation.php", confirmGuildInvitationPostController);
 | 
			
		||||
apiRouter.post("/contributeGuildClass.php", contributeGuildClassController);
 | 
			
		||||
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
 | 
			
		||||
apiRouter.post("/contributeToVault.php", contributeToVaultController);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user