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