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