SpaceNinjaServer/src/services/tradeService.ts

83 lines
2.9 KiB
TypeScript
Raw Normal View History

2023-06-05 05:30:55 +08:00
/* eslint-disable @typescript-eslint/no-unsafe-call */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
2023-06-05 03:13:46 +08:00
import { Item, Misc, Skin, Warframe, Weapon } from "warframe-items";
import { InventoryChanges, StoreItem } from "../types/commonTypes";
import { generateOid, parseString } from "../helpers/general";
2023-06-05 05:30:55 +08:00
import { UpdateInventory } from "./inventoryService";
2023-06-05 03:13:46 +08:00
2023-06-05 05:30:55 +08:00
const PurchaseItem = async (
accountId: string,
item: Item,
quantity: number,
usePremium: boolean,
price: number
): Promise<InventoryChanges> => {
2023-06-05 03:13:46 +08:00
// {"InventoryChanges":{"WishlistChanges":["/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem"],"FlavourItems":[{"ItemType":"/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem"}],"PremiumCredits":-75}}
const newInventoryChanges: InventoryChanges = {};
if ((item as Warframe).productCategory == "Suits") {
const newSuits: StoreItem[] = [
{
ItemType: item.uniqueName,
Cofigs: [],
ItemId: generateOid()
}
];
newInventoryChanges.Suits = newSuits;
2023-06-05 03:22:30 +08:00
} else if ((item as Weapon).productCategory == "LongGuns") {
2023-06-05 03:13:46 +08:00
const newLongGuns: StoreItem[] = [
{
ItemType: item.uniqueName,
Cofigs: [],
ItemId: generateOid()
}
];
newInventoryChanges.LongGuns = newLongGuns;
2023-06-05 03:22:30 +08:00
} else if ((item as Weapon).productCategory == "Pistols") {
2023-06-05 03:13:46 +08:00
const newPistols: StoreItem[] = [
{
ItemType: item.uniqueName,
Cofigs: [],
ItemId: generateOid()
}
];
newInventoryChanges.Pistols = newPistols;
2023-06-05 03:22:30 +08:00
} else if ((item as Weapon).productCategory == "Melee") {
2023-06-05 03:13:46 +08:00
const newMelee: StoreItem[] = [
{
ItemType: item.uniqueName,
Cofigs: [],
ItemId: generateOid()
}
];
newInventoryChanges.Melee = newMelee;
2023-06-05 03:22:30 +08:00
} else if (item as Skin) {
2023-06-05 03:13:46 +08:00
newInventoryChanges.WishlistChanges = [];
newInventoryChanges.WishlistChanges.push(parseString(item.uniqueName));
const newFlavourItem: StoreItem[] = [
{
ItemType: item.uniqueName
}
];
newInventoryChanges.FlavourItems = newFlavourItem;
2023-06-05 03:26:36 +08:00
} else if (item as Misc) {
const newMisc: StoreItem[] = [
{
ItemType: item.uniqueName,
ItemCount: quantity
}
];
newInventoryChanges.MiscItems = newMisc;
2023-06-05 03:13:46 +08:00
}
if (usePremium) {
newInventoryChanges.PremiumCredits = -price;
}
if (!usePremium) {
newInventoryChanges.RegularCredits = -price;
}
2023-06-05 05:30:55 +08:00
await UpdateInventory(accountId, newInventoryChanges);
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
2023-06-05 03:13:46 +08:00
return newInventoryChanges;
};
export { PurchaseItem };