diff --git a/src/controllers/api/umbraController.ts b/src/controllers/api/umbraController.ts new file mode 100644 index 00000000..e89ca74d --- /dev/null +++ b/src/controllers/api/umbraController.ts @@ -0,0 +1,27 @@ +import { fromMongoDate, fromOid } from "@/src/helpers/inventoryHelpers"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { addMiscItem, getInventory } from "@/src/services/inventoryService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { RequestHandler } from "express"; + +export const umbraController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId, "Suits MiscItems"); + const payload = getJSONfromString(String(req.body)); + for (const clientSuit of payload.Suits) { + const dbSuit = inventory.Suits.id(fromOid(clientSuit.ItemId))!; + if (clientSuit.UmbraDate) { + addMiscItem(inventory, "/Lotus/Types/Items/MiscItems/UmbraEchoes", -1); + dbSuit.UmbraDate = fromMongoDate(clientSuit.UmbraDate); + } else { + dbSuit.UmbraDate = undefined; + } + } + await inventory.save(); + res.end(); +}; + +interface IUmbraRequest { + Suits: IEquipmentClient[]; +} diff --git a/src/routes/api.ts b/src/routes/api.ts index 55c2fd7b..8b0a12bc 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -148,6 +148,7 @@ import { syndicateStandingBonusController } from "@/src/controllers/api/syndicat import { tauntHistoryController } from "@/src/controllers/api/tauntHistoryController"; import { tradingController } from "@/src/controllers/api/tradingController"; import { trainingResultController } from "@/src/controllers/api/trainingResultController"; +import { umbraController } from "@/src/controllers/api/umbraController"; import { unlockShipFeatureController } from "@/src/controllers/api/unlockShipFeatureController"; import { updateAlignmentController } from "@/src/controllers/api/updateAlignmentController"; import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController"; @@ -329,6 +330,7 @@ apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); apiRouter.post("/syndicateStandingBonus.php", syndicateStandingBonusController); apiRouter.post("/tauntHistory.php", tauntHistoryController); apiRouter.post("/trainingResult.php", trainingResultController); +apiRouter.post("/umbra.php", umbraController); apiRouter.post("/unlockShipFeature.php", unlockShipFeatureController); apiRouter.post("/updateAlignment.php", updateAlignmentController); apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index ad53cad5..d598cbb1 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -1580,7 +1580,7 @@ export const addMiscItem = ( inventory: TInventoryDatabaseDocument, type: string, count: number, - inventoryChanges: IInventoryChanges + inventoryChanges: IInventoryChanges = {} ): void => { const miscItemChanges: IMiscItem[] = [ {