SpaceNinjaServer/src/controllers/custom/addItemsController.ts

61 lines
2.0 KiB
TypeScript
Raw Normal View History

import { getAccountIdForRequest } from "@/src/services/loginService";
2025-01-20 12:21:50 +01:00
import { addEquipment, addPowerSuit, addMechSuit, getInventory, updateSlots } from "@/src/services/inventoryService";
2025-01-19 15:03:34 +01:00
import { SlotNames } from "@/src/types/purchaseTypes";
import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes";
2025-01-19 15:03:34 +01:00
import { RequestHandler } from "express";
export const addItemsController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
const requests = req.body as IAddItemRequest[];
const inventory = await getInventory(accountId);
for (const request of requests) {
2025-01-20 12:21:50 +01:00
updateSlots(inventory, productCategoryToSlotName[request.type], 0, 1);
switch (request.type) {
2025-01-19 15:03:34 +01:00
case ItemType.Suits:
addPowerSuit(inventory, request.internalName);
break;
2025-01-20 12:21:50 +01:00
case ItemType.MechSuits:
addMechSuit(inventory, request.internalName);
break;
2025-01-19 15:03:34 +01:00
default:
addEquipment(inventory, request.type, request.internalName);
break;
}
}
await inventory.save();
res.end();
};
2025-01-19 15:03:34 +01:00
const productCategoryToSlotName: Record<ItemType, SlotNames> = {
Suits: InventorySlot.SUITS,
Pistols: InventorySlot.WEAPONS,
Melee: InventorySlot.WEAPONS,
LongGuns: InventorySlot.WEAPONS,
SpaceSuits: InventorySlot.SPACESUITS,
SpaceGuns: InventorySlot.SPACESUITS,
SpaceMelee: InventorySlot.SPACESUITS,
Sentinels: InventorySlot.SENTINELS,
2025-01-20 12:21:50 +01:00
SentinelWeapons: InventorySlot.SENTINELS,
MechSuits: InventorySlot.MECHSUITS
2025-01-19 15:03:34 +01:00
};
enum ItemType {
2025-01-19 15:03:34 +01:00
Suits = "Suits",
SpaceSuits = "SpaceSuits",
LongGuns = "LongGuns",
Pistols = "Pistols",
Melee = "Melee",
SpaceGuns = "SpaceGuns",
SpaceMelee = "SpaceMelee",
SentinelWeapons = "SentinelWeapons",
2025-01-20 12:21:50 +01:00
Sentinels = "Sentinels",
MechSuits = "MechSuits"
}
interface IAddItemRequest {
type: ItemType;
internalName: string;
}