chore: split confirmGuildInvitation get & post controllers (#1465)
Reviewed-on: #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