From 6e8ef2d186fea5780e06759b219ed1d49d18604b Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 4 Mar 2025 19:45:45 +0100 Subject: [PATCH] feat: destroyDojoDeco --- .../api/destroyDojoDecoController.ts | 19 +++++++++++++++++++ src/routes/api.ts | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 src/controllers/api/destroyDojoDecoController.ts diff --git a/src/controllers/api/destroyDojoDecoController.ts b/src/controllers/api/destroyDojoDecoController.ts new file mode 100644 index 00000000..ca329615 --- /dev/null +++ b/src/controllers/api/destroyDojoDecoController.ts @@ -0,0 +1,19 @@ +import { getDojoClient, getGuildForRequest } from "@/src/services/guildService"; +import { RequestHandler } from "express"; + +export const destroyDojoDecoController: RequestHandler = async (req, res) => { + const guild = await getGuildForRequest(req); + const request = JSON.parse(String(req.body)) as IDestroyDojoDecoRequest; + const component = guild.DojoComponents.id(request.ComponentId)!; + const decoIndex = component.Decos!.findIndex(x => x._id.equals(request.DecoId)); + component.Decos!.splice(decoIndex, 1); + // TODO: The client says this is supposed to refund the resources to the clan vault, so we should probably do that. + await guild.save(); + res.json(getDojoClient(guild, 0)); +}; + +interface IDestroyDojoDecoRequest { + DecoType: string; + ComponentId: string; + DecoId: string; +} diff --git a/src/routes/api.ts b/src/routes/api.ts index 15ed59ee..72229b15 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -16,6 +16,7 @@ import { contributeToDojoComponentController } from "@/src/controllers/api/contr import { createGuildController } from "@/src/controllers/api/createGuildController"; import { creditsController } from "@/src/controllers/api/creditsController"; import { deleteSessionController } from "@/src/controllers/api/deleteSessionController"; +import { destroyDojoDecoController } from "@/src/controllers/api/destroyDojoDecoController"; import { dojoComponentRushController } from "@/src/controllers/api/dojoComponentRushController"; import { dojoController } from "@/src/controllers/api/dojoController"; import { dronesController } from "@/src/controllers/api/dronesController"; @@ -151,6 +152,7 @@ apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController); apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController); apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController); apiRouter.post("/createGuild.php", createGuildController); +apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController); apiRouter.post("/dojoComponentRush.php", dojoComponentRushController); apiRouter.post("/drones.php", dronesController); apiRouter.post("/endlessXp.php", endlessXpController);