feat: collectible series #1025

Merged
Sainan merged 2 commits from kuria into main 2025-02-28 18:09:38 -08:00
4 changed files with 55 additions and 4 deletions
Showing only changes of commit 1fdaf5696a - Show all commits

View File

@ -0,0 +1,27 @@
import { getJSONfromString } from "@/src/helpers/stringHelpers";
import { getInventory } from "@/src/services/inventoryService";
import { getAccountIdForRequest } from "@/src/services/loginService";
import { IIncentiveState } from "@/src/types/inventoryTypes/inventoryTypes";
import { RequestHandler } from "express";
export const startCollectibleEntryController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
const inventory = await getInventory(accountId);
const request = getJSONfromString<IStartCollectibleEntryRequest>(String(req.body));
inventory.CollectibleSeries ??= [];
inventory.CollectibleSeries.push({
CollectibleType: request.target,
Count: 0,
Tracking: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
ReqScans: request.reqScans,
IncentiveStates: request.other
});
await inventory.save();
res.status(200).end();
};
interface IStartCollectibleEntryRequest {
target: string;
reqScans: number;
other: IIncentiveState[];
}

View File

@ -71,7 +71,9 @@ import {
ILibraryDailyTaskInfo,
IDroneDatabase,
IDroneClient,
IAlignment
IAlignment,
ICollectibleEntry,
IIncentiveState
} from "../../types/inventoryTypes/inventoryTypes";
import { IOid } from "../../types/commonTypes";
import {
@ -943,6 +945,26 @@ const calenderProgressSchema = new Schema<ICalendarProgress>(
{ _id: false }
);
const incentiveStateSchema = new Schema<IIncentiveState>(
{
threshold: Number,
complete: Boolean,
sent: Boolean
},
{ _id: false }
);
const collectibleEntrySchema = new Schema<ICollectibleEntry>(
{
CollectibleType: String,
Count: Number,
Tracking: String,
ReqScans: Number,
IncentiveStates: [incentiveStateSchema]
},
{ _id: false }
);
const pendingCouponSchema = new Schema<IPendingCouponDatabase>(
{
Expiry: { type: Date, default: new Date(0) },
@ -1286,7 +1308,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
RecentVendorPurchases: [Schema.Types.Mixed],
Robotics: [Schema.Types.Mixed],
UsedDailyDeals: [Schema.Types.Mixed],
CollectibleSeries: [Schema.Types.Mixed],
CollectibleSeries: { type: [collectibleEntrySchema], default: undefined },
HasResetAccount: { type: Boolean, default: false },
//Discount Coupon

View File

@ -76,6 +76,7 @@ import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShip
import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController";
import { setWeaponSkillTreeController } from "@/src/controllers/api/setWeaponSkillTreeController";
import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController";
import { startCollectibleEntryController } from "@/src/controllers/api/startCollectibleEntryController";
import { startDojoRecipeController } from "@/src/controllers/api/startDojoRecipeController";
import { startLibraryDailyTaskController } from "@/src/controllers/api/startLibraryDailyTaskController";
import { startLibraryPersonalTargetController } from "@/src/controllers/api/startLibraryPersonalTargetController";
@ -181,6 +182,7 @@ apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController);
apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController);
apiRouter.post("/shipDecorations.php", shipDecorationsController);
apiRouter.post("/startCollectibleEntry.php", startCollectibleEntryController);
apiRouter.post("/startDojoRecipe.php", startDojoRecipeController);
apiRouter.post("/startRecipe.php", startRecipeController);
apiRouter.post("/stepSequencers.php", stepSequencersController);

View File

@ -315,7 +315,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
UsedDailyDeals: any[];
LibraryPersonalTarget: string;
LibraryPersonalProgress: ILibraryPersonalProgress[];
CollectibleSeries: ICollectibleSery[];
CollectibleSeries?: ICollectibleEntry[];
LibraryAvailableDailyTaskInfo?: ILibraryDailyTaskInfo;
LibraryActiveDailyTaskInfo?: ILibraryDailyTaskInfo;
HasResetAccount: boolean;
@ -364,7 +364,7 @@ export interface IChallengeProgress {
Completed?: string[];
}
export interface ICollectibleSery {
export interface ICollectibleEntry {
CollectibleType: string;
Count: number;
Tracking: string;