diff --git a/src/controllers/api/contributeToVaultController.ts b/src/controllers/api/contributeToVaultController.ts index 7960c951..fc03e2ca 100644 --- a/src/controllers/api/contributeToVaultController.ts +++ b/src/controllers/api/contributeToVaultController.ts @@ -1,4 +1,4 @@ -import { GuildMember } from "@/src/models/guildModel"; +import { Alliance, GuildMember } from "@/src/models/guildModel"; import { addGuildMemberMiscItemContribution, addVaultMiscItems, @@ -19,12 +19,27 @@ export const contributeToVaultController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId, "GuildId RegularCredits MiscItems ShipDecorations FusionTreasures"); const guild = await getGuildForRequestEx(req, inventory); + const request = JSON.parse(String(req.body)) as IContributeToVaultRequest; + + if (request.Alliance) { + const alliance = (await Alliance.findById(guild.AllianceId!))!; + alliance.VaultRegularCredits ??= 0; + alliance.VaultRegularCredits += request.RegularCredits; + if (request.FromVault) { + guild.VaultRegularCredits! -= request.RegularCredits; + await Promise.all([guild.save(), alliance.save()]); + } else { + updateCurrency(inventory, request.RegularCredits, false); + await Promise.all([inventory.save(), alliance.save()]); + } + res.end(); + return; + } + const guildMember = (await GuildMember.findOne( { accountId, guildId: guild._id }, "RegularCreditsContributed MiscItemsContributed ShipDecorationsContributed" ))!; - const request = JSON.parse(String(req.body)) as IContributeToVaultRequest; - if (request.RegularCredits) { updateCurrency(inventory, request.RegularCredits, false); @@ -69,4 +84,6 @@ interface IContributeToVaultRequest { MiscItems: IMiscItem[]; ShipDecorations: ITypeCount[]; FusionTreasures: IFusionTreasure[]; + Alliance?: boolean; + FromVault?: boolean; } diff --git a/src/models/guildModel.ts b/src/models/guildModel.ts index c2286f91..70f94256 100644 --- a/src/models/guildModel.ts +++ b/src/models/guildModel.ts @@ -254,7 +254,8 @@ const allianceSchema = new Schema({ Name: String, MOTD: longMOTDSchema, LongMOTD: longMOTDSchema, - Emblem: Boolean + Emblem: Boolean, + VaultRegularCredits: Number }); allianceSchema.index({ Name: 1 }, { unique: true }); diff --git a/src/services/guildService.ts b/src/services/guildService.ts index 22b42c18..b622987e 100644 --- a/src/services/guildService.ts +++ b/src/services/guildService.ts @@ -581,6 +581,9 @@ export const getAllianceClient = async ( return { _id: toOid(alliance._id), Name: alliance.Name, - Clans: clans + Clans: clans, + AllianceVault: { + DojoRefundRegularCredits: alliance.VaultRegularCredits + } }; }; diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index a4b706fa..10d0b2ce 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -282,6 +282,7 @@ export interface IAllianceClient { CrossPlatformEnabled?: boolean; Clans: IAllianceMemberClient[]; OriginalPlatform?: number; + AllianceVault?: IGuildVault; } export interface IAllianceDatabase { @@ -290,6 +291,7 @@ export interface IAllianceDatabase { MOTD?: ILongMOTD; LongMOTD?: ILongMOTD; Emblem?: boolean; + VaultRegularCredits?: number; } export interface IAllianceMemberClient {