diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 5cb4acd6..466652c1 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getAccountForRequest } from "@/src/services/loginService"; import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { config } from "@/src/services/configService"; @@ -12,15 +12,15 @@ import { ExportCustoms, ExportFlavour, ExportKeys, ExportResources } from "warfr // eslint-disable-next-line @typescript-eslint/no-misused-promises const inventoryController: RequestHandler = async (request, response) => { - let accountId; + let account; try { - accountId = await getAccountIdForRequest(request); + account = await getAccountForRequest(request); } catch (e) { response.status(400).send("Log-in expired"); return; } - const inventory = await Inventory.findOne({ accountOwnerId: accountId }) + const inventory = await Inventory.findOne({ accountOwnerId: account._id.toString() }) .populate<{ LoadOutPresets: ILoadoutDatabase }>("LoadOutPresets") .populate<{ Ships: IShipInventory }>("Ships", "-ShipInteriorColors"); @@ -29,6 +29,29 @@ const inventoryController: RequestHandler = async (request, response) => { return; } + // Handle daily reset + const today: number = Math.trunc(new Date().getTime() / 86400000); + if (account.LastLoginDay != today) { + account.LastLoginDay = today; + await account.save(); + + inventory.DailyAffiliation = 16000; + inventory.DailyAffiliationPvp = 16000; + inventory.DailyAffiliationLibrary = 16000; + inventory.DailyAffiliationCetus = 16000; + inventory.DailyAffiliationQuills = 16000; + inventory.DailyAffiliationSolaris = 16000; + inventory.DailyAffiliationVentkids = 16000; + inventory.DailyAffiliationVox = 16000; + inventory.DailyAffiliationEntrati = 16000; + inventory.DailyAffiliationNecraloid = 16000; + inventory.DailyAffiliationZariman = 16000; + inventory.DailyAffiliationKahl = 16000; + inventory.DailyAffiliationCavia = 16000; + inventory.DailyAffiliationHex = 16000; + await inventory.save(); + } + //TODO: make a function that converts from database representation to client const inventoryJSON = inventory.toJSON(); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index c49e8eb6..41df80c4 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -635,6 +635,7 @@ const inventorySchema = new Schema( DailyAffiliationZariman: Number, DailyAffiliationKahl: Number, DailyAffiliationCavia: Number, + DailyAffiliationHex: Number, //Daily Focus limit DailyFocus: Number, diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index 03e52265..3048335c 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -33,7 +33,8 @@ const databaseAccountSchema = new Schema( AmazonRefreshToken: { type: String }, ConsentNeeded: { type: Boolean, required: true }, TrackedSettings: { type: [String], default: [] }, - Nonce: { type: Number, default: 0 } + Nonce: { type: Number, default: 0 }, + LastLoginDay: { type: Number } }, opts ); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index dd6acc18..7c9250f6 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -275,6 +275,7 @@ export interface IInventoryResponse { NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; DailyAffiliationCavia: number; + DailyAffiliationHex?: number; LastInventorySync: IOid; NextRefill: IMongoDate; // Next time argon crystals will have a decay tick FoundToday?: IMiscItem[]; // for Argon Crystals diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index f5dcfaf6..cfec7ad9 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -32,6 +32,7 @@ export interface IDatabaseAccount { ConsentNeeded: boolean; TrackedSettings: string[]; Nonce: number; + LastLoginDay?: number; } export interface ILoginRequest {