feat: selling of warframes & weapons (#157)

This commit is contained in:
Sainan 2024-05-06 15:06:30 +02:00 committed by GitHub
parent 9bded04dfd
commit 1dd9f4ca4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,49 @@
import { RequestHandler } from "express";
import { ISellRequest } from "@/src/types/sellTypes";
import { getInventory } from "@/src/services/inventoryService";
export const sellController: RequestHandler = async (req, res) => {
const payload: ISellRequest = JSON.parse(req.body.toString());
const inventory = await getInventory(req.query.accountId as string);
// Give currency
if (payload.SellCurrency == "SC_RegularCredits") {
inventory.RegularCredits += payload.SellPrice;
} else if (payload.SellCurrency == "SC_FusionPoints") {
inventory.FusionPoints += payload.SellPrice;
} else {
throw new Error("Unknown SellCurrency: " + payload.SellCurrency);
}
// Remove item(s)
if (payload.Items.Suits) {
payload.Items.Suits.forEach(sellItem => {
inventory.Suits.pull({ _id: sellItem.String });
});
}
if (payload.Items.LongGuns) {
payload.Items.LongGuns.forEach(sellItem => {
inventory.LongGuns.pull({ _id: sellItem.String });
});
}
if (payload.Items.Pistols) {
payload.Items.Pistols.forEach(sellItem => {
inventory.Pistols.pull({ _id: sellItem.String });
});
}
if (payload.Items.Melee) {
payload.Items.Melee.forEach(sellItem => {
inventory.Melee.pull({ _id: sellItem.String });
});
}
if (payload.Items.Recipes) {
// TODO
// Note: sellItem.String is a uniqueName in this case
}
if (payload.Items.Upgrades) {
// TODO
}
await inventory.save();
res.json({});
};

View File

@ -44,6 +44,7 @@ import { updateThemeController } from "../controllers/api/updateThemeController"
import { getGuildController } from "@/src/controllers/api/getGuildController"; import { getGuildController } from "@/src/controllers/api/getGuildController";
import { addFriendImageController } from "@/src/controllers/api/addFriendImageController"; import { addFriendImageController } from "@/src/controllers/api/addFriendImageController";
import { createGuildController } from "@/src/controllers/api/createGuildController"; import { createGuildController } from "@/src/controllers/api/createGuildController";
import { sellController } from "@/src/controllers/api/sellController";
const apiRouter = express.Router(); const apiRouter = express.Router();
@ -98,5 +99,6 @@ apiRouter.post("/trainingResult.php", trainingResultController);
apiRouter.post("/updateTheme.php", updateThemeController); apiRouter.post("/updateTheme.php", updateThemeController);
apiRouter.post("/addFriendImage.php", addFriendImageController); apiRouter.post("/addFriendImage.php", addFriendImageController);
apiRouter.post("/createGuild.php", createGuildController); apiRouter.post("/createGuild.php", createGuildController);
apiRouter.post("/sell.php", sellController);
export { apiRouter }; export { apiRouter };

23
src/types/sellTypes.ts Normal file
View File

@ -0,0 +1,23 @@
export interface ISellRequest {
Items: {
Suits?: ISellItem[];
LongGuns?: ISellItem[];
Pistols?: ISellItem[];
Melee?: ISellItem[];
Recipes?: ISellItem[];
Upgrades?: ISellItem[];
};
SellPrice: number;
SellCurrency:
| "SC_RegularCredits"
| "SC_PrimeBucks"
| "SC_FusionPoints"
| "SC_CrewShipFusionPoints"
| "SC_Resources";
buildLabel: string;
}
export interface ISellItem {
String: string; // oid or uniqueName
Count: number;
}