diff --git a/src/controllers/api/forceRemoveItemController.ts b/src/controllers/api/forceRemoveItemController.ts new file mode 100644 index 00000000..b55b58ae --- /dev/null +++ b/src/controllers/api/forceRemoveItemController.ts @@ -0,0 +1,27 @@ +import type { RequestHandler } from "express"; +import { getAccountIdForRequest } from "../../services/loginService.ts"; +import { getJSONfromString } from "../../helpers/stringHelpers.ts"; +import { getInventory } from "../../services/inventoryService.ts"; +import type { IInventoryChanges } from "../../types/purchaseTypes.ts"; + +export const forceRemoveItemController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId, "MiscItems"); + const body = getJSONfromString(String(req.body)); + const inventoryChanges: IInventoryChanges = {}; + for (const item of body.items) { + const index = inventory.MiscItems.findIndex(x => x.ItemType == item); + if (index != -1) { + inventoryChanges.MiscItems ??= []; + inventoryChanges.MiscItems.push({ ItemType: item, ItemCount: inventory.MiscItems[index].ItemCount * -1 }); + + inventory.MiscItems.splice(index, 1); + } + } + await inventory.save(); + res.json({ InventoryChanges: inventoryChanges }); +}; + +interface IForceRemoveItemRequest { + items: string[]; +} diff --git a/src/routes/api.ts b/src/routes/api.ts index a9c84b84..59bbc83b 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -53,6 +53,7 @@ import { evolveWeaponController } from "../controllers/api/evolveWeaponControlle import { findSessionsController } from "../controllers/api/findSessionsController.ts"; import { fishmongerController } from "../controllers/api/fishmongerController.ts"; import { focusController } from "../controllers/api/focusController.ts"; +import { forceRemoveItemController } from "../controllers/api/forceRemoveItemController.ts"; import { fusionTreasuresController } from "../controllers/api/fusionTreasuresController.ts"; import { gardeningController } from "../controllers/api/gardeningController.ts"; import { genericUpdateController } from "../controllers/api/genericUpdateController.ts"; @@ -66,8 +67,8 @@ import { getGuildEventScoreController } from "../controllers/api/getGuildEventSc import { getGuildLogController } from "../controllers/api/getGuildLogController.ts"; import { getIgnoredUsersController } from "../controllers/api/getIgnoredUsersController.ts"; import { getNewRewardSeedController } from "../controllers/api/getNewRewardSeedController.ts"; -import { getProfileViewingDataPostController } from "../controllers/dynamic/getProfileViewingDataController.ts"; import { getPastWeeklyChallengesController } from "../controllers/api/getPastWeeklyChallengesController.ts"; +import { getProfileViewingDataPostController } from "../controllers/dynamic/getProfileViewingDataController.ts"; import { getShipController } from "../controllers/api/getShipController.ts"; import { getVendorInfoController } from "../controllers/api/getVendorInfoController.ts"; import { getVoidProjectionRewardsController } from "../controllers/api/getVoidProjectionRewardsController.ts"; @@ -273,6 +274,7 @@ apiRouter.post("/evolveWeapon.php", evolveWeaponController); apiRouter.post("/findSessions.php", findSessionsController); apiRouter.post("/fishmonger.php", fishmongerController); apiRouter.post("/focus.php", focusController); +apiRouter.post("/forceRemoveItem.php", forceRemoveItemController); apiRouter.post("/fusionTreasures.php", fusionTreasuresController); apiRouter.post("/gardening.php", gardeningController); apiRouter.post("/genericUpdate.php", genericUpdateController);