missionInventoryUpdate request types
This commit is contained in:
parent
b583e7173a
commit
37bc361be0
@ -2,10 +2,11 @@ import { Inventory } from "@/src/models/inventoryModel";
|
|||||||
import new_inventory from "@/static/fixed_responses/postTutorialInventory.json";
|
import new_inventory from "@/static/fixed_responses/postTutorialInventory.json";
|
||||||
import config from "@/config.json";
|
import config from "@/config.json";
|
||||||
import { Types } from "mongoose";
|
import { Types } from "mongoose";
|
||||||
import { ISuitDatabase, ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes";
|
import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes";
|
||||||
import { SlotType } from "@/src/types/purchaseTypes";
|
import { SlotType } from "@/src/types/purchaseTypes";
|
||||||
import { IWeaponDatabase, IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes";
|
import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes";
|
||||||
import { FlavourItem, RawUpgrade, MiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
|
import { MissionInventoryUpdate, MissionInventoryUpdateCard, MissionInventoryUpdateGear, MissionInventoryUpdateItem } from "../types/missionInventoryUpdateType";
|
||||||
|
|
||||||
const createInventory = async (accountOwnerId: Types.ObjectId) => {
|
const createInventory = async (accountOwnerId: Types.ObjectId) => {
|
||||||
try {
|
try {
|
||||||
@ -106,30 +107,35 @@ export const addCustomization = async (customizatonName: string, accountId: stri
|
|||||||
return changedInventory.FlavourItems[flavourItemIndex].toJSON(); //mongoose bug forces as FlavourItem
|
return changedInventory.FlavourItems[flavourItemIndex].toJSON(); //mongoose bug forces as FlavourItem
|
||||||
};
|
};
|
||||||
|
|
||||||
export const missionInventoryUpdate = async (data: any, accountId: string): Promise<void> => { // TODO - add data type
|
export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accountId: string): Promise<void> => {
|
||||||
const { RawUpgrades, MiscItems, Suits, Pistols, LongGuns, Melee, RegularCredits } = data;
|
const { RawUpgrades, MiscItems, Suits, Pistols, LongGuns, Melee, RegularCredits } = data;
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
|
|
||||||
const addGearExpByCategory = (gearArray: (ISuitDatabase|IWeaponDatabase)[], category: 'Pistols'|'LongGuns'|'Melee'|'Suits') => {
|
const addGearExpByCategory = (gearArray: MissionInventoryUpdateGear[] | undefined, categoryName: 'Pistols'|'LongGuns'|'Melee'|'Suits') => {
|
||||||
gearArray?.forEach(({ ItemId, XP }: any) => {
|
const category = inventory[categoryName];
|
||||||
const itemIndex = inventory[category].findIndex(i => i._id?.equals(ItemId.$oid));
|
|
||||||
if (itemIndex !== -1) {
|
gearArray?.forEach(({ ItemId, XP }) => {
|
||||||
inventory[category][itemIndex].XP += XP;
|
const itemIndex = category.findIndex(i => i._id?.equals(ItemId.$oid));
|
||||||
inventory.markModified(`${category}.${itemIndex}.XP`);
|
const item = category[itemIndex];
|
||||||
|
|
||||||
|
if (itemIndex !== -1 && item.XP!=undefined) {
|
||||||
|
item.XP += XP;
|
||||||
|
inventory.markModified(`${categoryName}.${itemIndex}.XP`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const addItemsByCategory = (itemsArray: (RawUpgrade | MiscItem)[], category: 'RawUpgrades'|'MiscItems') => {
|
const addItemsByCategory = (itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, categoryName: 'RawUpgrades'|'MiscItems') => {
|
||||||
itemsArray?.forEach(item => {
|
const category = inventory[categoryName];
|
||||||
const { ItemCount, ItemType } = item;
|
|
||||||
const existingItemIndex = inventory[category].findIndex(i => i.ItemType === ItemType);
|
|
||||||
|
|
||||||
if (existingItemIndex !== -1) {
|
itemsArray?.forEach(({ ItemCount, ItemType }) => {
|
||||||
inventory[category][existingItemIndex].ItemCount += ItemCount;
|
const itemIndex = category.findIndex(i => i.ItemType === ItemType);
|
||||||
inventory.markModified(category + '.' + existingItemIndex + '.ItemCount');
|
|
||||||
|
if (itemIndex !== -1) {
|
||||||
|
category[itemIndex].ItemCount += ItemCount;
|
||||||
|
inventory.markModified(`${categoryName}.${itemIndex}.ItemCount`);
|
||||||
} else {
|
} else {
|
||||||
inventory[category].push({ ItemCount, ItemType });
|
category.push({ ItemCount, ItemType });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -142,6 +148,8 @@ export const missionInventoryUpdate = async (data: any, accountId: string): Prom
|
|||||||
addItemsByCategory(RawUpgrades, 'RawUpgrades'); // TODO - check mods fusion level
|
addItemsByCategory(RawUpgrades, 'RawUpgrades'); // TODO - check mods fusion level
|
||||||
addItemsByCategory(MiscItems, 'MiscItems');
|
addItemsByCategory(MiscItems, 'MiscItems');
|
||||||
|
|
||||||
|
// TODO - save ChallengeProgress (idk where to save)
|
||||||
|
|
||||||
await inventory.save();
|
await inventory.save();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
64
src/types/missionInventoryUpdateType.ts
Normal file
64
src/types/missionInventoryUpdateType.ts
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
interface MongooseId{
|
||||||
|
$oid: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ExpireDate{
|
||||||
|
$date: {
|
||||||
|
$numberLong: string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MissionInventoryUpdateGear{
|
||||||
|
ItemType: string;
|
||||||
|
ItemName: string;
|
||||||
|
ItemId: MongooseId;
|
||||||
|
XP: number;
|
||||||
|
UpgradeVer: number;
|
||||||
|
Features: number;
|
||||||
|
Polarized: number;
|
||||||
|
CustomizationSlotPurchases: number;
|
||||||
|
ModSlotPurchases: number;
|
||||||
|
FocusLens: string;
|
||||||
|
Expiry: ExpireDate;
|
||||||
|
Polarity: any[];
|
||||||
|
Configs: any[];
|
||||||
|
ModularParts: any[];
|
||||||
|
SkillTree: string;
|
||||||
|
UpgradeType: string;
|
||||||
|
UpgradeFingerprint: string;
|
||||||
|
OffensiveUpgrade: string;
|
||||||
|
DefensiveUpgrade: string;
|
||||||
|
UpgradesExpiry: ExpireDate;
|
||||||
|
ArchonCrystalUpgrades: any[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MissionInventoryUpdateItem{
|
||||||
|
ItemCount: number;
|
||||||
|
ItemType: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MissionInventoryUpdateCard extends MissionInventoryUpdateItem{
|
||||||
|
ItemId: MongooseId;
|
||||||
|
UpgradeFingerprint: string;
|
||||||
|
PendingRerollFingerprint: string;
|
||||||
|
LastAdded: MongooseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface MissionInventoryUpdateChallange{
|
||||||
|
Name: string;
|
||||||
|
Progress: number;
|
||||||
|
Completed: any[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MissionInventoryUpdate{
|
||||||
|
rewardsMultiplier?: number;
|
||||||
|
ActiveBoosters?: any[];
|
||||||
|
LongGuns?: MissionInventoryUpdateGear[];
|
||||||
|
Pistols?: MissionInventoryUpdateGear[];
|
||||||
|
Suits?: MissionInventoryUpdateGear[];
|
||||||
|
Melee?: MissionInventoryUpdateGear[];
|
||||||
|
RawUpgrades?: MissionInventoryUpdateCard[];
|
||||||
|
MiscItems?: MissionInventoryUpdateItem[];
|
||||||
|
RegularCredits?: number;
|
||||||
|
ChallengeProgress?: MissionInventoryUpdateChallange[];
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user