diff --git a/src/controllers/api/setActiveQuestController.ts b/src/controllers/api/setActiveQuestController.ts index a8f06a25..abc19790 100644 --- a/src/controllers/api/setActiveQuestController.ts +++ b/src/controllers/api/setActiveQuestController.ts @@ -1,7 +1,30 @@ +import { getInventory } from "@/src/services/inventoryService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { RequestHandler } from "express"; -const setActiveQuestController: RequestHandler = (_req, res) => { - res.sendStatus(200); +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const setActiveQuestController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const quest = req.query.quest as string; + + const inventory = await getInventory(accountId); + const questKey = inventory.QuestKeys.find(q => q.ItemType == quest); + if (questKey == null) + inventory.QuestKeys.push({ ItemType: quest }); + inventory.ActiveQuest = quest; + await inventory.save(); + + res.json({ + inventoryChanges: { + QuestKey: [{ + ItemType: quest + }], + Herses: [], + PremiumCreditsFree: 0, + PremiumCredits: 0, + RegularCredits: 0 + } + }); }; export { setActiveQuestController }; diff --git a/src/controllers/api/updateQuestController.ts b/src/controllers/api/updateQuestController.ts new file mode 100644 index 00000000..68bc708f --- /dev/null +++ b/src/controllers/api/updateQuestController.ts @@ -0,0 +1,38 @@ +import { RequestHandler } from "express"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { IQuestKeyDatabase } from "@/src/types/inventoryTypes/inventoryTypes"; +import { logger } from "@/src/utils/logger"; +import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; + +export interface IUpdateQuestRequest { + QuestKeys: IQuestKeyDatabase[]; + PS: string; + questCompletion: boolean; + PlayerShipEvents: []; + crossPlaySetting: string; +} + +export interface IUpdateQuestResponse { + CustomData?: string; + MissionRewards: []; +} + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const updateQuestController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const payload = getJSONfromString(req.body as string) as IUpdateQuestRequest; + logger.debug("quest: " + payload.QuestKeys[0].ItemType); + + const inventory = await Inventory.findOne({ accountOwnerId: accountId }); + if (inventory) { + /* empty */ + } + + const result: IUpdateQuestResponse = { + MissionRewards: [] + }; + res.json(result); +}; + +export { updateQuestController }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 8bdddd78..e52a5b4d 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -58,6 +58,7 @@ import { surveysController } from "@/src/controllers/api/surveysController"; import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController"; import { trainingResultController } from "@/src/controllers/api/trainingResultController"; import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController"; +import { updateQuestController } from "../controllers/api/updateQuestController"; import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; import { updateThemeController } from "../controllers/api/updateThemeController"; import { upgradesController } from "@/src/controllers/api/upgradesController"; @@ -128,6 +129,7 @@ apiRouter.post("/stepSequencers.php", stepSequencersController); apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); apiRouter.post("/trainingResult.php", trainingResultController); apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController); +apiRouter.post("/updateQuest.php", updateQuestController); apiRouter.post("/updateSession.php", updateSessionPostController); apiRouter.post("/updateTheme.php", updateThemeController); apiRouter.post("/upgrades.php", upgradesController);