forked from OpenWF/SpaceNinjaServer
feat: selling of warframes & weapons (#157)
This commit is contained in:
parent
9bded04dfd
commit
1dd9f4ca4f
49
src/controllers/api/sellController.ts
Normal file
49
src/controllers/api/sellController.ts
Normal 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({});
|
||||
};
|
@ -44,6 +44,7 @@ import { updateThemeController } from "../controllers/api/updateThemeController"
|
||||
import { getGuildController } from "@/src/controllers/api/getGuildController";
|
||||
import { addFriendImageController } from "@/src/controllers/api/addFriendImageController";
|
||||
import { createGuildController } from "@/src/controllers/api/createGuildController";
|
||||
import { sellController } from "@/src/controllers/api/sellController";
|
||||
|
||||
const apiRouter = express.Router();
|
||||
|
||||
@ -98,5 +99,6 @@ apiRouter.post("/trainingResult.php", trainingResultController);
|
||||
apiRouter.post("/updateTheme.php", updateThemeController);
|
||||
apiRouter.post("/addFriendImage.php", addFriendImageController);
|
||||
apiRouter.post("/createGuild.php", createGuildController);
|
||||
apiRouter.post("/sell.php", sellController);
|
||||
|
||||
export { apiRouter };
|
||||
|
23
src/types/sellTypes.ts
Normal file
23
src/types/sellTypes.ts
Normal 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;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user