fix getVendorInfoController

This commit is contained in:
Master 2024-07-06 00:48:34 +08:00
parent a4ec3833bf
commit 7ee95ce13f

View File

@ -1,23 +1,60 @@
import { RequestHandler } from "express";
import ArchimedeanVendorManifest from "@/static/fixed_responses/getVendorInfo/ArchimedeanVendorManifest.json";
import MaskSalesmanManifest from "@/static/fixed_responses/getVendorInfo/MaskSalesmanManifest.json";
import ZarimanCommisionsManifestArchimedean from "@/static/fixed_responses/getVendorInfo/ZarimanCommisionsManifestArchimedean.json";
import { ExportVendors } from "warframe-public-export-plus";
import { IMongoDate, IOid } from "@/src/types/commonTypes";
import { Types } from "mongoose";
import { toMongoDate } from "@/src/helpers/inventoryHelpers";
export interface VendorInfo {
_id: IOid;
TypeName: string;
ItemManifest: ItemManifestItem[];
PropertyTextHash: string;
Expiry: IMongoDate;
}
export interface ItemManifestItem {
StoreItem: string;
ItemPrices: ItemManifestItemPrice[];
Bin: string;
QuantityMultiplier: number;
Expiry: IMongoDate;
AllowMultipurchase: boolean;
Id: IOid;
}
export interface ItemManifestItemPrice {
ItemType: string;
ItemCount: number;
ProductCategory: string;
}
export const getVendorInfoController: RequestHandler = (req, res) => {
switch (req.query.vendor as string) {
case "/Lotus/Types/Game/VendorManifests/Zariman/ArchimedeanVendorManifest":
res.json(ArchimedeanVendorManifest);
break;
case "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest":
res.json(MaskSalesmanManifest);
break;
case "/Lotus/Types/Game/VendorManifests/Zariman/ZarimanCommisionsManifestArchimedean":
res.json(ZarimanCommisionsManifestArchimedean);
break;
default:
throw new Error(`Unknown vendor: ${req.query.vendor}`);
const vendor = String(req.query.vendor);
const dateTime = new Date();
dateTime.setDate(dateTime.getDate() + 1);
if (vendor in ExportVendors) {
const v = ExportVendors[vendor];
const result: VendorInfo = {
_id: { $oid: new Types.ObjectId().toString() },
TypeName: vendor,
ItemManifest: [],
PropertyTextHash: "DB7BF03C3FE6D0036A4DC30066A9A17E",
Expiry: toMongoDate(new Date(dateTime))
};
v.items.forEach(item => {
const i = item.itemPrices[0];
result.ItemManifest.push({
StoreItem: item.storeItem,
ItemPrices: [{ ItemType: i.ItemType, ItemCount: i.ItemCount, ProductCategory: "MiscItems" }],
Bin: "BIN_0",
QuantityMultiplier: 1,
Expiry: toMongoDate(new Date(dateTime)),
AllowMultipurchase: true,
Id: { $oid: new Types.ObjectId().toString() }
});
});
res.json({ VendorInfo: result });
} else {
throw new Error(`Unknown vendor: ${vendor}`);
}
};