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
|
||||
} from "@/src/types/guildTypes";
|
||||
import { Document, Model, model, Schema, Types } from "mongoose";
|
||||
import { typeCountSchema } from "./inventoryModels/inventoryModel";
|
||||
import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
|
||||
import { toMongoDate } from "../helpers/inventoryHelpers";
|
||||
|
||||
const dojoDecoSchema = new Schema<IDojoDecoDatabase>({
|
||||
@ -68,6 +68,8 @@ const guildSchema = new Schema<IGuildDatabase>(
|
||||
VaultRegularCredits: Number,
|
||||
VaultPremiumCredits: Number,
|
||||
VaultMiscItems: { type: [typeCountSchema], default: undefined },
|
||||
VaultShipDecorations: { type: [typeCountSchema], default: undefined },
|
||||
VaultFusionTreasures: { type: [fusionTreasuresSchema], default: undefined },
|
||||
TechProjects: { type: [techProjectSchema], default: undefined }
|
||||
},
|
||||
{ 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>(
|
||||
{
|
||||
|
@ -14,6 +14,7 @@ import { claimLibraryDailyTaskRewardController } from "@/src/controllers/api/cla
|
||||
import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialogueHistoryController";
|
||||
import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
|
||||
import { contributeToDojoComponentController } from "@/src/controllers/api/contributeToDojoComponentController";
|
||||
import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController";
|
||||
import { createGuildController } from "@/src/controllers/api/createGuildController";
|
||||
import { creditsController } from "@/src/controllers/api/creditsController";
|
||||
import { deleteSessionController } from "@/src/controllers/api/deleteSessionController";
|
||||
@ -153,6 +154,7 @@ apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
|
||||
apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
|
||||
apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
|
||||
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
|
||||
apiRouter.post("/contributeToVault.php", contributeToVaultController);
|
||||
apiRouter.post("/createGuild.php", createGuildController);
|
||||
apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
|
||||
apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
|
||||
|
@ -40,7 +40,9 @@ export const getGuildVault = (guild: TGuildDatabaseDocument): IGuildVault => {
|
||||
return {
|
||||
DojoRefundRegularCredits: guild.VaultRegularCredits,
|
||||
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;
|
||||
VaultPremiumCredits?: number;
|
||||
VaultMiscItems?: IMiscItem[];
|
||||
VaultShipDecorations?: ITypeCount[];
|
||||
VaultFusionTreasures?: IFusionTreasure[];
|
||||
TechProjects?: ITechProjectDatabase[];
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user