feat: implement selling/dissolving of mods (#240)
This commit is contained in:
		
							parent
							
								
									a0b293685d
								
							
						
					
					
						commit
						b1e0de862f
					
				@ -1,7 +1,7 @@
 | 
				
			|||||||
import { RequestHandler } from "express";
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
import { ISellRequest } from "@/src/types/sellTypes";
 | 
					import { ISellRequest } from "@/src/types/sellTypes";
 | 
				
			||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
					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) => {
 | 
					export const sellController: RequestHandler = async (req, res) => {
 | 
				
			||||||
    const payload: ISellRequest = JSON.parse(req.body.toString());
 | 
					    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
 | 
					        // Note: sellItem.String is a uniqueName in this case
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (payload.Items.Upgrades) {
 | 
					    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();
 | 
					    await inventory.save();
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@ import { Model, Schema, Types, model } from "mongoose";
 | 
				
			|||||||
import {
 | 
					import {
 | 
				
			||||||
    IFlavourItem,
 | 
					    IFlavourItem,
 | 
				
			||||||
    IRawUpgrade,
 | 
					    IRawUpgrade,
 | 
				
			||||||
 | 
					    ICrewShipSalvagedWeaponSkin,
 | 
				
			||||||
    IMiscItem,
 | 
					    IMiscItem,
 | 
				
			||||||
    IInventoryDatabase,
 | 
					    IInventoryDatabase,
 | 
				
			||||||
    IBooster,
 | 
					    IBooster,
 | 
				
			||||||
@ -1001,6 +1002,7 @@ type InventoryDocumentProps = {
 | 
				
			|||||||
    Melee: Types.DocumentArray<IWeaponDatabase>;
 | 
					    Melee: Types.DocumentArray<IWeaponDatabase>;
 | 
				
			||||||
    FlavourItems: Types.DocumentArray<IFlavourItem>;
 | 
					    FlavourItems: Types.DocumentArray<IFlavourItem>;
 | 
				
			||||||
    RawUpgrades: Types.DocumentArray<IRawUpgrade>;
 | 
					    RawUpgrades: Types.DocumentArray<IRawUpgrade>;
 | 
				
			||||||
 | 
					    Upgrades: Types.DocumentArray<ICrewShipSalvagedWeaponSkin>;
 | 
				
			||||||
    MiscItems: Types.DocumentArray<IMiscItem>;
 | 
					    MiscItems: Types.DocumentArray<IMiscItem>;
 | 
				
			||||||
    Boosters: Types.DocumentArray<IBooster>;
 | 
					    Boosters: Types.DocumentArray<IBooster>;
 | 
				
			||||||
    OperatorLoadOuts: Types.DocumentArray<IOperatorConfigClient>;
 | 
					    OperatorLoadOuts: Types.DocumentArray<IOperatorConfigClient>;
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
					    const { RawUpgrades } = inventory;
 | 
				
			||||||
    itemsArray?.forEach(({ ItemType, ItemCount }) => {
 | 
					    itemsArray?.forEach(({ ItemType, ItemCount }) => {
 | 
				
			||||||
        const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType);
 | 
					        const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user