feat: get endpoint trainingResult (#3000)
Some checks failed
Build Docker image / docker (push) Has been cancelled
Build / build (push) Has been cancelled

Closes #2994

Reviewed-on: #3000
Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com>
Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit was merged in pull request #3000.
This commit is contained in:
2025-11-06 00:17:30 -08:00
committed by Sainan
parent 8ceab34f22
commit 9f432d3919
2 changed files with 26 additions and 12 deletions

View File

@@ -17,14 +17,13 @@ interface ITrainingResultsResponse {
InventoryChanges: IInventoryChanges;
}
const trainingResultController: RequestHandler = async (req, res): Promise<void> => {
const accountId = await getAccountIdForRequest(req);
const trainingResults = getJSONfromString<ITrainingResultsRequest>(String(req.body));
const handleTrainingProgress = async (
accountId: string,
numLevelsGained: number
): Promise<ITrainingResultsResponse> => {
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<void>
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<void> => {
const accountId = await getAccountIdForRequest(req);
const { numLevelsGained } = getJSONfromString<ITrainingResultsRequest>(String(req.body));
const response = await handleTrainingProgress(accountId, numLevelsGained);
res.json(response satisfies ITrainingResultsResponse);
};
export const trainingResultGetController: RequestHandler = async (req, res): Promise<void> => {
const accountId = await getAccountIdForRequest(req);
const numLevelsGained = Number(req.query.numLevelsGained ?? 0);
const response = await handleTrainingProgress(accountId, numLevelsGained);
res.json(response satisfies ITrainingResultsResponse);
};

View File

@@ -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);