diff --git a/src/controllers/api/trainingResultController.ts b/src/controllers/api/trainingResultController.ts index 8c1d55bd..dafa689a 100644 --- a/src/controllers/api/trainingResultController.ts +++ b/src/controllers/api/trainingResultController.ts @@ -17,14 +17,13 @@ interface ITrainingResultsResponse { InventoryChanges: IInventoryChanges; } -const trainingResultController: RequestHandler = async (req, res): Promise => { - const accountId = await getAccountIdForRequest(req); - - const trainingResults = getJSONfromString(String(req.body)); - +const handleTrainingProgress = async ( + accountId: string, + numLevelsGained: number +): Promise => { const inventory = await getInventory(accountId, "TrainingDate PlayerLevel TradesRemaining noMasteryRankUpCooldown"); - if (trainingResults.numLevelsGained == 1) { + if (numLevelsGained === 1) { let time = Date.now(); if (!inventory.noMasteryRankUpCooldown) { time += unixTimesInMs.hour * 23; @@ -67,13 +66,27 @@ const trainingResultController: RequestHandler = async (req, res): Promise const changedinventory = await inventory.save(); - res.json({ + return { NewTrainingDate: { $date: { $numberLong: changedinventory.TrainingDate.getTime().toString() } }, - NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel, + NewLevel: numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel, InventoryChanges: {} - } satisfies ITrainingResultsResponse); + }; }; -export { trainingResultController }; +export const trainingResultPostController: RequestHandler = async (req, res): Promise => { + const accountId = await getAccountIdForRequest(req); + const { numLevelsGained } = getJSONfromString(String(req.body)); + + const response = await handleTrainingProgress(accountId, numLevelsGained); + res.json(response satisfies ITrainingResultsResponse); +}; + +export const trainingResultGetController: RequestHandler = async (req, res): Promise => { + const accountId = await getAccountIdForRequest(req); + const numLevelsGained = Number(req.query.numLevelsGained ?? 0); + + const response = await handleTrainingProgress(accountId, numLevelsGained); + res.json(response satisfies ITrainingResultsResponse); +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index 684a7285..5e84ee24 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -158,7 +158,7 @@ import { syndicateSacrificeController } from "../controllers/api/syndicateSacrif import { syndicateStandingBonusController } from "../controllers/api/syndicateStandingBonusController.ts"; import { tauntHistoryController } from "../controllers/api/tauntHistoryController.ts"; import { tradingController } from "../controllers/api/tradingController.ts"; -import { trainingResultController } from "../controllers/api/trainingResultController.ts"; +import { trainingResultGetController, trainingResultPostController } from "../controllers/api/trainingResultController.ts"; import { umbraController } from "../controllers/api/umbraController.ts"; import { unlockShipFeatureController } from "../controllers/api/unlockShipFeatureController.ts"; import { updateAlignmentController } from "../controllers/api/updateAlignmentController.ts"; @@ -236,6 +236,7 @@ apiRouter.get("/startLibraryDailyTask.php", startLibraryDailyTaskController); apiRouter.get("/startLibraryPersonalTarget.php", startLibraryPersonalTargetController); apiRouter.get("/surveys.php", surveysController); apiRouter.get("/trading.php", tradingController); +apiRouter.get("/trainingResult.php", trainingResultGetController); apiRouter.get("/updateSession.php", updateSessionGetController); apiRouter.get("/upgradeOperator.php", upgradeOperatorController); apiRouter.get("/worldState.php", worldStateController); // U8 @@ -357,7 +358,7 @@ apiRouter.post("/stepSequencers.php", stepSequencersController); apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController); apiRouter.post("/syndicateStandingBonus.php", syndicateStandingBonusController); apiRouter.post("/tauntHistory.php", tauntHistoryController); -apiRouter.post("/trainingResult.php", trainingResultController); +apiRouter.post("/trainingResult.php", trainingResultPostController); apiRouter.post("/umbra.php", umbraController); apiRouter.post("/unlockShipFeature.php", unlockShipFeatureController); apiRouter.post("/updateAlignment.php", updateAlignmentController);