feat: selling of warframes & weapons
This commit is contained in:
		
							parent
							
								
									9bded04dfd
								
							
						
					
					
						commit
						f7e725d0ad
					
				
							
								
								
									
										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