SpaceNinjaServer/src/controllers/api/trainingResultController.ts

45 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-09-03 14:59:45 +02:00
import { parseString } from "@/src/helpers/general";
import { getJSONfromString } from "@/src/helpers/stringHelpers";
import { Inventory } from "@/src/models/inventoryModel";
import { getInventory } from "@/src/services/inventoryService";
2023-09-09 18:44:18 +02:00
import { IMongoDate } from "@/src/types/commonTypes";
2023-09-03 14:59:45 +02:00
import { RequestHandler } from "express";
2023-09-09 18:44:18 +02:00
import { unixTimesInMs } from "@/src/constants/timeConstants";
2023-09-03 14:59:45 +02:00
interface ITrainingResultsRequest {
numLevelsGained: number;
}
2023-09-09 18:44:18 +02:00
interface ITrainingResultsResponse {
NewTrainingDate: IMongoDate;
NewLevel: number;
InventoryChanges: any[];
}
2023-09-03 14:59:45 +02:00
// eslint-disable-next-line @typescript-eslint/no-misused-promises
const trainingResultController: RequestHandler = async (req, res): Promise<void> => {
const accountId = parseString(req.query.accountId);
const trainingResults = getJSONfromString(req.body.toString()) as ITrainingResultsRequest;
const inventory = await getInventory(accountId);
2023-09-09 18:44:18 +02:00
inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day);
2023-09-03 14:59:45 +02:00
if (trainingResults.numLevelsGained == 1) {
2023-09-09 18:44:18 +02:00
inventory.PlayerLevel += 1;
2023-09-03 14:59:45 +02:00
}
2023-09-09 18:44:18 +02:00
const changedinventory = await inventory.save();
res.json({
NewTrainingDate: {
$date: { $numberLong: changedinventory.TrainingDate.getTime().toString() }
},
NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel,
InventoryChanges: []
} satisfies ITrainingResultsResponse);
2023-09-03 14:59:45 +02:00
};
export { trainingResultController };