feat: clan vault 3 - donate at treasury
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (20) (push) Successful in 37s
				
			
		
			
				
	
				Build / build (18) (push) Successful in 59s
				
			
		
			
				
	
				Build / build (22) (push) Successful in 54s
				
			
		
			
				
	
				Build / build (18) (pull_request) Successful in 41s
				
			
		
			
				
	
				Build / build (20) (pull_request) Successful in 59s
				
			
		
			
				
	
				Build / build (22) (pull_request) Successful in 55s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (20) (push) Successful in 37s
				
			Build / build (18) (push) Successful in 59s
				
			Build / build (22) (push) Successful in 54s
				
			Build / build (18) (pull_request) Successful in 41s
				
			Build / build (20) (pull_request) Successful in 59s
				
			Build / build (22) (pull_request) Successful in 55s
				
			This commit is contained in:
		
							parent
							
								
									f7ab620c80
								
							
						
					
					
						commit
						512f3a6ae9
					
				
							
								
								
									
										49
									
								
								src/controllers/api/contributeToVaultController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/controllers/api/contributeToVaultController.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					import { getGuildForRequestEx } from "@/src/services/guildService";
 | 
				
			||||||
 | 
					import { addFusionTreasures, addMiscItems, addShipDecorations, getInventory } from "@/src/services/inventoryService";
 | 
				
			||||||
 | 
					import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
				
			||||||
 | 
					import { IFusionTreasure, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
				
			||||||
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const contributeToVaultController: RequestHandler = async (req, res) => {
 | 
				
			||||||
 | 
					    const accountId = await getAccountIdForRequest(req);
 | 
				
			||||||
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					    const guild = await getGuildForRequestEx(req, inventory);
 | 
				
			||||||
 | 
					    const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (request.RegularCredits) {
 | 
				
			||||||
 | 
					        guild.VaultRegularCredits ??= 0;
 | 
				
			||||||
 | 
					        guild.VaultRegularCredits += request.RegularCredits;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (request.MiscItems.length) {
 | 
				
			||||||
 | 
					        guild.VaultMiscItems ??= [];
 | 
				
			||||||
 | 
					        for (const item of request.MiscItems) {
 | 
				
			||||||
 | 
					            guild.VaultMiscItems.push(item);
 | 
				
			||||||
 | 
					            addMiscItems(inventory, [{ ...item, ItemCount: item.ItemCount * -1 }]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (request.ShipDecorations.length) {
 | 
				
			||||||
 | 
					        guild.VaultShipDecorations ??= [];
 | 
				
			||||||
 | 
					        for (const item of request.ShipDecorations) {
 | 
				
			||||||
 | 
					            guild.VaultShipDecorations.push(item);
 | 
				
			||||||
 | 
					            addShipDecorations(inventory, [{ ...item, ItemCount: item.ItemCount * -1 }]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (request.FusionTreasures.length) {
 | 
				
			||||||
 | 
					        guild.VaultFusionTreasures ??= [];
 | 
				
			||||||
 | 
					        for (const item of request.FusionTreasures) {
 | 
				
			||||||
 | 
					            guild.VaultFusionTreasures.push(item);
 | 
				
			||||||
 | 
					            addFusionTreasures(inventory, [{ ...item, ItemCount: item.ItemCount * -1 }]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    await guild.save();
 | 
				
			||||||
 | 
					    await inventory.save();
 | 
				
			||||||
 | 
					    res.end();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface IContributeToVaultRequest {
 | 
				
			||||||
 | 
					    RegularCredits: number;
 | 
				
			||||||
 | 
					    MiscItems: IMiscItem[];
 | 
				
			||||||
 | 
					    ShipDecorations: ITypeCount[];
 | 
				
			||||||
 | 
					    FusionTreasures: IFusionTreasure[];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -6,7 +6,7 @@ import {
 | 
				
			|||||||
    IDojoDecoDatabase
 | 
					    IDojoDecoDatabase
 | 
				
			||||||
} from "@/src/types/guildTypes";
 | 
					} from "@/src/types/guildTypes";
 | 
				
			||||||
import { Document, Model, model, Schema, Types } from "mongoose";
 | 
					import { Document, Model, model, Schema, Types } from "mongoose";
 | 
				
			||||||
import { typeCountSchema } from "./inventoryModels/inventoryModel";
 | 
					import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
 | 
				
			||||||
import { toMongoDate } from "../helpers/inventoryHelpers";
 | 
					import { toMongoDate } from "../helpers/inventoryHelpers";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const dojoDecoSchema = new Schema<IDojoDecoDatabase>({
 | 
					const dojoDecoSchema = new Schema<IDojoDecoDatabase>({
 | 
				
			||||||
@ -68,6 +68,8 @@ const guildSchema = new Schema<IGuildDatabase>(
 | 
				
			|||||||
        VaultRegularCredits: Number,
 | 
					        VaultRegularCredits: Number,
 | 
				
			||||||
        VaultPremiumCredits: Number,
 | 
					        VaultPremiumCredits: Number,
 | 
				
			||||||
        VaultMiscItems: { type: [typeCountSchema], default: undefined },
 | 
					        VaultMiscItems: { type: [typeCountSchema], default: undefined },
 | 
				
			||||||
 | 
					        VaultShipDecorations: { type: [typeCountSchema], default: undefined },
 | 
				
			||||||
 | 
					        VaultFusionTreasures: { type: [fusionTreasuresSchema], default: undefined },
 | 
				
			||||||
        TechProjects: { type: [techProjectSchema], default: undefined }
 | 
					        TechProjects: { type: [techProjectSchema], default: undefined }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    { id: false }
 | 
					    { id: false }
 | 
				
			||||||
 | 
				
			|||||||
@ -552,7 +552,7 @@ questKeysSchema.set("toJSON", {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const fusionTreasuresSchema = new Schema<IFusionTreasure>().add(typeCountSchema).add({ Sockets: Number });
 | 
					export const fusionTreasuresSchema = new Schema<IFusionTreasure>().add(typeCountSchema).add({ Sockets: Number });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const spectreLoadoutsSchema = new Schema<ISpectreLoadout>(
 | 
					const spectreLoadoutsSchema = new Schema<ISpectreLoadout>(
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,7 @@ import { claimLibraryDailyTaskRewardController } from "@/src/controllers/api/cla
 | 
				
			|||||||
import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialogueHistoryController";
 | 
					import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialogueHistoryController";
 | 
				
			||||||
import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
 | 
					import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
 | 
				
			||||||
import { contributeToDojoComponentController } from "@/src/controllers/api/contributeToDojoComponentController";
 | 
					import { contributeToDojoComponentController } from "@/src/controllers/api/contributeToDojoComponentController";
 | 
				
			||||||
 | 
					import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController";
 | 
				
			||||||
import { createGuildController } from "@/src/controllers/api/createGuildController";
 | 
					import { createGuildController } from "@/src/controllers/api/createGuildController";
 | 
				
			||||||
import { creditsController } from "@/src/controllers/api/creditsController";
 | 
					import { creditsController } from "@/src/controllers/api/creditsController";
 | 
				
			||||||
import { deleteSessionController } from "@/src/controllers/api/deleteSessionController";
 | 
					import { deleteSessionController } from "@/src/controllers/api/deleteSessionController";
 | 
				
			||||||
@ -153,6 +154,7 @@ apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
 | 
				
			|||||||
apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
 | 
					apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
 | 
				
			||||||
apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
 | 
					apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
 | 
				
			||||||
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
 | 
					apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
 | 
				
			||||||
 | 
					apiRouter.post("/contributeToVault.php", contributeToVaultController);
 | 
				
			||||||
apiRouter.post("/createGuild.php", createGuildController);
 | 
					apiRouter.post("/createGuild.php", createGuildController);
 | 
				
			||||||
apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
 | 
					apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
 | 
				
			||||||
apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
 | 
					apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,9 @@ export const getGuildVault = (guild: TGuildDatabaseDocument): IGuildVault => {
 | 
				
			|||||||
    return {
 | 
					    return {
 | 
				
			||||||
        DojoRefundRegularCredits: guild.VaultRegularCredits,
 | 
					        DojoRefundRegularCredits: guild.VaultRegularCredits,
 | 
				
			||||||
        DojoRefundMiscItems: guild.VaultMiscItems,
 | 
					        DojoRefundMiscItems: guild.VaultMiscItems,
 | 
				
			||||||
        DojoRefundPremiumCredits: guild.VaultPremiumCredits
 | 
					        DojoRefundPremiumCredits: guild.VaultPremiumCredits,
 | 
				
			||||||
 | 
					        ShipDecorations: guild.VaultShipDecorations,
 | 
				
			||||||
 | 
					        FusionTreasures: guild.VaultFusionTreasures
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,8 @@ export interface IGuildDatabase extends IGuild {
 | 
				
			|||||||
    VaultRegularCredits?: number;
 | 
					    VaultRegularCredits?: number;
 | 
				
			||||||
    VaultPremiumCredits?: number;
 | 
					    VaultPremiumCredits?: number;
 | 
				
			||||||
    VaultMiscItems?: IMiscItem[];
 | 
					    VaultMiscItems?: IMiscItem[];
 | 
				
			||||||
 | 
					    VaultShipDecorations?: ITypeCount[];
 | 
				
			||||||
 | 
					    VaultFusionTreasures?: IFusionTreasure[];
 | 
				
			||||||
    TechProjects?: ITechProjectDatabase[];
 | 
					    TechProjects?: ITechProjectDatabase[];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user