diff --git a/src/controllers/api/abortDojoComponentController.ts b/src/controllers/api/abortDojoComponentController.ts index b5218b3f..dd27102c 100644 --- a/src/controllers/api/abortDojoComponentController.ts +++ b/src/controllers/api/abortDojoComponentController.ts @@ -1,4 +1,4 @@ -import { getDojoClient, getGuildForRequestEx } from "@/src/services/guildService"; +import { getDojoClient, getGuildForRequestEx, removeDojoRoom } from "@/src/services/guildService"; import { getInventory } from "@/src/services/inventoryService"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { RequestHandler } from "express"; @@ -14,7 +14,7 @@ export const abortDojoComponentController: RequestHandler = async (req, res) => const decoIndex = component.Decos!.findIndex(x => x._id.equals(request.DecoId)); component.Decos!.splice(decoIndex, 1); } else { - guild.DojoComponents.pull({ _id: request.ComponentId }); + removeDojoRoom(guild, request.ComponentId); } await guild.save(); res.json(getDojoClient(guild, 0)); diff --git a/src/controllers/api/queueDojoComponentDestructionController.ts b/src/controllers/api/queueDojoComponentDestructionController.ts index 750f8392..2e30dc25 100644 --- a/src/controllers/api/queueDojoComponentDestructionController.ts +++ b/src/controllers/api/queueDojoComponentDestructionController.ts @@ -1,19 +1,12 @@ -import { getDojoClient, getGuildForRequest } from "@/src/services/guildService"; +import { getDojoClient, getGuildForRequest, removeDojoRoom } from "@/src/services/guildService"; import { RequestHandler } from "express"; -import { ExportDojoRecipes } from "warframe-public-export-plus"; export const queueDojoComponentDestructionController: RequestHandler = async (req, res) => { const guild = await getGuildForRequest(req); const componentId = req.query.componentId as string; - const component = guild.DojoComponents.splice( - guild.DojoComponents.findIndex(x => x._id.toString() === componentId), - 1 - )[0]; - const room = Object.values(ExportDojoRecipes.rooms).find(x => x.resultType == component.pf); - if (room) { - guild.DojoCapacity -= room.capacity; - guild.DojoEnergy -= room.energy; - } + + removeDojoRoom(guild, componentId); + await guild.save(); res.json(getDojoClient(guild, 1)); }; diff --git a/src/services/guildService.ts b/src/services/guildService.ts index aabc51ef..fbc3e37b 100644 --- a/src/services/guildService.ts +++ b/src/services/guildService.ts @@ -6,6 +6,7 @@ import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/invento import { IDojoClient, IDojoComponentClient } from "@/src/types/guildTypes"; import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; import { Types } from "mongoose"; +import { ExportDojoRecipes } from "warframe-public-export-plus"; export const getGuildForRequest = async (req: Request): Promise => { const accountId = await getAccountIdForRequest(req); @@ -90,3 +91,15 @@ export const scaleRequiredCount = (count: number): number => { // The recipes in the export are for Moon clans. For now we'll just assume we only have Ghost clans. return Math.max(1, Math.trunc(count / 100)); }; + +export const removeDojoRoom = (guild: TGuildDatabaseDocument, componentId: string): void => { + const component = guild.DojoComponents.splice( + guild.DojoComponents.findIndex(x => x._id.toString() === componentId), + 1 + )[0]; + const meta = Object.values(ExportDojoRecipes.rooms).find(x => x.resultType == component.pf); + if (meta) { + guild.DojoCapacity -= meta.capacity; + guild.DojoEnergy -= meta.energy; + } +};