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 { 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
									
								
							
							
						
						
									
										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