diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 7f30049f..aeea034d 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,6 +1,7 @@ -import { RequestHandler } from "express"; +import { Request, Response } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; -import fs from 'fs'; +import fs from "fs"; +import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; /* - [ ] crossPlaySetting - [ ] rewardsMultiplier @@ -39,25 +40,22 @@ import fs from 'fs'; - [ ] FpsMax - [ ] FpsSamples */ -const missionInventoryUpdateController: RequestHandler = async (req, res) => { - fs.writeFile("./tmp/missionInventoryUpdate", req.body,(err)=>{ - if(err) - return console.log(err); - }); // temp log, !!! tmp folder need on main dir +const missionInventoryUpdateController = async (req: Request, res: Response) => { + fs.writeFile("./tmp/missionInventoryUpdate", req.body as string, err => { + if (err) return console.log(err); + }); // temp log, !!! tmp folder need on main dir - const [data, _secondIGuessIsSalt] = String(req.body).split("\n"); + const [data] = String(req.body).split("\n"); const id = req.query.accountId as string; // TODO - salt check try { - const parsedData = JSON.parse(data); - if (typeof parsedData !== 'object' || parsedData === null) - throw new Error('Invalid data format'); - + const parsedData = JSON.parse(data) as MissionInventoryUpdate; + if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format"); await missionInventoryUpdate(parsedData, id); } catch (err) { - console.error('Error parsing JSON data:', err); + console.error("Error parsing JSON data:", err); } // TODO - get original response diff --git a/src/controllers/stats/viewController.ts b/src/controllers/stats/viewController.ts new file mode 100644 index 00000000..4e988ccc --- /dev/null +++ b/src/controllers/stats/viewController.ts @@ -0,0 +1,7 @@ +import { RequestHandler } from "express"; + +const viewController: RequestHandler = (_req, res) => { + res.json({}); +}; + +export { viewController }; diff --git a/src/routes/stats.ts b/src/routes/stats.ts index 96b68e13..17904ac2 100644 --- a/src/routes/stats.ts +++ b/src/routes/stats.ts @@ -1,7 +1,14 @@ +import { viewController } from "../controllers/api/viewController"; import { uploadController } from "@/src/controllers/stats/uploadController"; + import express from "express"; const statsRouter = express.Router(); +// get +statsRouter.get("/view.php", viewController); + +// post statsRouter.post("/upload.php", uploadController); + export { statsRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index dbdd4997..05c60f2f 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -6,7 +6,12 @@ import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; -import { MissionInventoryUpdate, MissionInventoryUpdateCard, MissionInventoryUpdateGear, MissionInventoryUpdateItem } from "../types/missionInventoryUpdateType"; +import { + MissionInventoryUpdate, + MissionInventoryUpdateCard, + MissionInventoryUpdateGear, + MissionInventoryUpdateItem +} from "../types/missionInventoryUpdateType"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -113,21 +118,27 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou // TODO - multipliers logic - const addGearExpByCategory = (gearArray: MissionInventoryUpdateGear[] | undefined, categoryName: 'Pistols'|'LongGuns'|'Melee'|'Suits') => { + const addGearExpByCategory = ( + gearArray: MissionInventoryUpdateGear[] | undefined, + categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" + ) => { const category = inventory[categoryName]; gearArray?.forEach(({ ItemId, XP }) => { const itemIndex = category.findIndex(i => i._id?.equals(ItemId.$oid)); const item = category[itemIndex]; - if (itemIndex !== -1 && item.XP!=undefined) { + if (itemIndex !== -1 && item.XP != undefined) { item.XP += XP; inventory.markModified(`${categoryName}.${itemIndex}.XP`); } }); }; - const addItemsByCategory = (itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, categoryName: 'RawUpgrades'|'MiscItems') => { + const addItemsByCategory = ( + itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, + categoryName: "RawUpgrades" | "MiscItems" + ) => { const category = inventory[categoryName]; itemsArray?.forEach(({ ItemCount, ItemType }) => { @@ -142,13 +153,13 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou }); }; - inventory.RegularCredits += RegularCredits||0; - addGearExpByCategory(Pistols, 'Pistols'); - addGearExpByCategory(LongGuns, 'LongGuns'); - addGearExpByCategory(Melee, 'Melee'); - addGearExpByCategory(Suits, 'Suits'); - addItemsByCategory(RawUpgrades, 'RawUpgrades'); // TODO - check mods fusion level - addItemsByCategory(MiscItems, 'MiscItems'); + inventory.RegularCredits += RegularCredits || 0; + addGearExpByCategory(Pistols, "Pistols"); + addGearExpByCategory(LongGuns, "LongGuns"); + addGearExpByCategory(Melee, "Melee"); + addGearExpByCategory(Suits, "Suits"); + addItemsByCategory(RawUpgrades, "RawUpgrades"); // TODO - check mods fusion level + addItemsByCategory(MiscItems, "MiscItems"); // TODO - save ChallengeProgress (idk where to save)