feat: removeFromGuild
This commit is contained in:
parent
fd329f78f1
commit
c542d3df4b
45
src/controllers/api/removeFromGuildController.ts
Normal file
45
src/controllers/api/removeFromGuildController.ts
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import { GuildMember } from "@/src/models/guildModel";
|
||||||
|
import { getGuildForRequest } from "@/src/services/guildService";
|
||||||
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
|
import { RequestHandler } from "express";
|
||||||
|
|
||||||
|
export const removeFromGuildController: RequestHandler = async (req, res) => {
|
||||||
|
const guild = await getGuildForRequest(req);
|
||||||
|
// TODO: Check permissions
|
||||||
|
const payload = JSON.parse(String(req.body)) as IRemoveFromGuildRequest;
|
||||||
|
|
||||||
|
const guildMember = (await GuildMember.findOne({ accountId: payload.userId, guildId: guild._id }))!;
|
||||||
|
if (guildMember.status == 0) {
|
||||||
|
const inventory = await getInventory(payload.userId);
|
||||||
|
inventory.GuildId = undefined;
|
||||||
|
|
||||||
|
// Remove clan key or blueprint from kicked member
|
||||||
|
const itemIndex = inventory.MiscItems.findIndex(x => x.ItemType == "/Lotus/Types/Keys/DojoKey");
|
||||||
|
if (itemIndex != -1) {
|
||||||
|
inventory.MiscItems.splice(itemIndex, 1);
|
||||||
|
} else {
|
||||||
|
const recipeIndex = inventory.Recipes.findIndex(x => x.ItemType == "/Lotus/Types/Keys/DojoKeyBlueprint");
|
||||||
|
if (recipeIndex != -1) {
|
||||||
|
inventory.Recipes.splice(itemIndex, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await inventory.save();
|
||||||
|
|
||||||
|
// TODO: Handle clan leader kicking themselves (guild should be deleted in this case, I think)
|
||||||
|
} else if (guildMember.status == 2) {
|
||||||
|
// TODO: Maybe the inbox message for the sent invite should be deleted?
|
||||||
|
}
|
||||||
|
await GuildMember.deleteOne({ _id: guildMember._id });
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
_id: payload.userId,
|
||||||
|
ItemToRemove: "/Lotus/Types/Keys/DojoKey",
|
||||||
|
RecipeToRemove: "/Lotus/Types/Keys/DojoKeyBlueprint"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
interface IRemoveFromGuildRequest {
|
||||||
|
userId: string;
|
||||||
|
kicker?: string;
|
||||||
|
}
|
@ -70,6 +70,7 @@ import { playerSkillsController } from "@/src/controllers/api/playerSkillsContro
|
|||||||
import { projectionManagerController } from "@/src/controllers/api/projectionManagerController";
|
import { projectionManagerController } from "@/src/controllers/api/projectionManagerController";
|
||||||
import { purchaseController } from "@/src/controllers/api/purchaseController";
|
import { purchaseController } from "@/src/controllers/api/purchaseController";
|
||||||
import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController";
|
import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController";
|
||||||
|
import { removeFromGuildController } from "@/src/controllers/api/removeFromGuildController";
|
||||||
import { rerollRandomModController } from "@/src/controllers/api/rerollRandomModController";
|
import { rerollRandomModController } from "@/src/controllers/api/rerollRandomModController";
|
||||||
import { saveDialogueController } from "@/src/controllers/api/saveDialogueController";
|
import { saveDialogueController } from "@/src/controllers/api/saveDialogueController";
|
||||||
import { saveLoadoutController } from "@/src/controllers/api/saveLoadout";
|
import { saveLoadoutController } from "@/src/controllers/api/saveLoadout";
|
||||||
@ -195,6 +196,7 @@ apiRouter.post("/placeDecoInComponent.php", placeDecoInComponentController);
|
|||||||
apiRouter.post("/playerSkills.php", playerSkillsController);
|
apiRouter.post("/playerSkills.php", playerSkillsController);
|
||||||
apiRouter.post("/projectionManager.php", projectionManagerController);
|
apiRouter.post("/projectionManager.php", projectionManagerController);
|
||||||
apiRouter.post("/purchase.php", purchaseController);
|
apiRouter.post("/purchase.php", purchaseController);
|
||||||
|
apiRouter.post("/removeFromGuild.php", removeFromGuildController);
|
||||||
apiRouter.post("/rerollRandomMod.php", rerollRandomModController);
|
apiRouter.post("/rerollRandomMod.php", rerollRandomModController);
|
||||||
apiRouter.post("/saveDialogue.php", saveDialogueController);
|
apiRouter.post("/saveDialogue.php", saveDialogueController);
|
||||||
apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user