From b1e0de862f8a9042131c89c22c1433ea5a6ff1ee Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 29 May 2024 16:18:41 +0200 Subject: [PATCH] feat: implement selling/dissolving of mods (#240) --- src/controllers/api/sellController.ts | 15 +++++++++++++-- src/models/inventoryModels/inventoryModel.ts | 2 ++ src/services/inventoryService.ts | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts index 0eb9fc46..b240475b 100644 --- a/src/controllers/api/sellController.ts +++ b/src/controllers/api/sellController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { ISellRequest } from "@/src/types/sellTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getInventory } from "@/src/services/inventoryService"; +import { getInventory, addMods } from "@/src/services/inventoryService"; export const sellController: RequestHandler = async (req, res) => { const payload: ISellRequest = JSON.parse(req.body.toString()); @@ -43,7 +43,18 @@ export const sellController: RequestHandler = async (req, res) => { // Note: sellItem.String is a uniqueName in this case } if (payload.Items.Upgrades) { - // TODO + payload.Items.Upgrades.forEach(sellItem => { + if (sellItem.Count == 0) { + inventory.Upgrades.pull({ _id: sellItem.String }); + } else { + addMods(inventory, [ + { + ItemType: sellItem.String, + ItemCount: sellItem.Count * -1 + } + ]); + } + }); } await inventory.save(); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 14a13bdf..7efd2ee2 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -2,6 +2,7 @@ import { Model, Schema, Types, model } from "mongoose"; import { IFlavourItem, IRawUpgrade, + ICrewShipSalvagedWeaponSkin, IMiscItem, IInventoryDatabase, IBooster, @@ -1001,6 +1002,7 @@ type InventoryDocumentProps = { Melee: Types.DocumentArray; FlavourItems: Types.DocumentArray; RawUpgrades: Types.DocumentArray; + Upgrades: Types.DocumentArray; MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; OperatorLoadOuts: Types.DocumentArray; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 550cbc62..bc10e555 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -276,7 +276,7 @@ export const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IT }); }; -const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => { +export const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => { const { RawUpgrades } = inventory; itemsArray?.forEach(({ ItemType, ItemCount }) => { const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType);