From af6a4669480c04280c146672c7fb4a38cda5c9aa Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Sat, 1 Feb 2025 15:33:54 +0100 Subject: [PATCH] add giveQuestKey --- src/controllers/api/giveQuestKey.ts | 45 +++++++++++++++++++++++++++++ src/routes/api.ts | 2 ++ 2 files changed, 47 insertions(+) create mode 100644 src/controllers/api/giveQuestKey.ts diff --git a/src/controllers/api/giveQuestKey.ts b/src/controllers/api/giveQuestKey.ts new file mode 100644 index 00000000..070dea75 --- /dev/null +++ b/src/controllers/api/giveQuestKey.ts @@ -0,0 +1,45 @@ +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { addItem, getInventory } from "@/src/services/inventoryService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { IOid } from "@/src/types/commonTypes"; +import { RequestHandler } from "express"; + +export const giveQuestKeyRewardController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const rewardRequest = getJSONfromString((req.body as Buffer).toString()); + + if (Array.isArray(rewardRequest.reward)) { + throw new Error("Multiple rewards not expected"); + } + + const reward = rewardRequest.reward; + const inventory = await getInventory(accountId); + const inventoryChanges = await addItem(inventory, reward.ItemType, reward.Amount); + await inventory.save(); + res.json(inventoryChanges.InventoryChanges); + //TODO: consider whishlist changes +}; + +export interface IQuestKeyRewardRequest { + reward: IQuestKeyReward; +} + +export interface IQuestKeyReward { + RewardType: string; + CouponType: string; + Icon: string; + ItemType: string; + StoreItemType: string; + ProductCategory: string; + Amount: number; + ScalingMultiplier: number; + Durability: string; + DisplayName: string; + Duration: number; + CouponSku: number; + Syndicate: string; + Milestones: any[]; + ChooseSetIndex: number; + NewSystemReward: boolean; + _id: IOid; +} diff --git a/src/routes/api.ts b/src/routes/api.ts index 3c5d12f0..19f7d0e5 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -83,6 +83,7 @@ import { updateSessionGetController, updateSessionPostController } from "@/src/c import { updateThemeController } from "../controllers/api/updateThemeController"; import { upgradesController } from "@/src/controllers/api/upgradesController"; import { giveKeyChainTriggeredMessageController } from "@/src/controllers/api/giveKeyChainTriggeredMessageController"; +import { giveQuestKeyRewardController } from "@/src/controllers/api/giveQuestKey"; const apiRouter = express.Router(); @@ -140,6 +141,7 @@ apiRouter.post("/getVoidProjectionRewards.php", getVoidProjectionRewardsControll apiRouter.post("/gildWeapon.php", gildWeaponController); apiRouter.post("/giveKeyChainTriggeredItems.php", giveKeyChainTriggeredItemsController); apiRouter.post("/giveKeyChainTriggeredMessage.php", giveKeyChainTriggeredMessageController); +apiRouter.post("/giveQuestKeyReward.php", giveQuestKeyRewardController); apiRouter.post("/guildTech.php", guildTechController); apiRouter.post("/hostSession.php", hostSessionController); apiRouter.post("/infestedFoundry.php", infestedFoundryController);