feat: implement purchasing of gear items

This commit is contained in:
Sainan 2024-05-09 16:01:47 +02:00
parent 9d590f4bfc
commit 19d7e59f3f
2 changed files with 23 additions and 2 deletions

View File

@ -246,7 +246,7 @@ export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray:
}); });
}; };
const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => {
const { Consumables } = inventory; const { Consumables } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => { itemsArray?.forEach(({ ItemCount, ItemType }) => {

View File

@ -3,6 +3,7 @@ import { getWeaponType } from "@/src/services/itemDataService";
import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers";
import { import {
addBooster, addBooster,
addConsumables,
addCustomization, addCustomization,
addMechSuit, addMechSuit,
addMiscItems, addMiscItems,
@ -14,7 +15,7 @@ import {
updateCurrency, updateCurrency,
updateSlots updateSlots
} from "@/src/services/inventoryService"; } from "@/src/services/inventoryService";
import { IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IConsumable, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes";
import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes";
import { logger } from "@/src/utils/logger"; import { logger } from "@/src/utils/logger";
@ -190,6 +191,9 @@ const handleTypesPurchase = async (typesName: string, accountId: string, quantit
case "Recipes": case "Recipes":
case "Consumables": // Blueprints for Ciphers, Antitoxins case "Consumables": // Blueprints for Ciphers, Antitoxins
return await handleRecipesPurchase(typesName, accountId, quantity); return await handleRecipesPurchase(typesName, accountId, quantity);
case "Restoratives": // Codex Scanner, Remote Observer, Starburst
return await handleRestorativesPurchase(typesName, accountId, quantity);
break;
default: default:
throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); throw new Error(`unknown Types category: ${typeCategory} not implemented or new`);
} }
@ -277,3 +281,20 @@ const handleRecipesPurchase = async (uniqueName: string, accountId: string, quan
} }
}; };
}; };
const handleRestorativesPurchase = async (uniqueName: string, accountId: string, quantity: number) => {
const inventory = await getInventory(accountId);
const consumablesChanges = [
{
ItemType: uniqueName,
ItemCount: quantity
} satisfies IConsumable
];
addConsumables(inventory, consumablesChanges);
await inventory.save();
return {
InventoryChanges: {
Consumables: consumablesChanges
}
};
};