add 'addVaultMiscItems' utility

This commit is contained in:
Sainan 2025-03-30 00:30:54 +01:00
parent d12cfa4494
commit 5d9f47c867
2 changed files with 24 additions and 13 deletions

View File

@ -1,5 +1,5 @@
import { GuildMember } from "@/src/models/guildModel";
import { getGuildForRequestEx } from "@/src/services/guildService";
import { addVaultMiscItems, 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";
@ -23,11 +23,17 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
guildMember.RegularCreditsContributed += request.RegularCredits;
}
if (request.MiscItems.length) {
guild.VaultMiscItems ??= [];
addVaultMiscItems(guild, request.MiscItems);
guildMember.MiscItemsContributed ??= [];
for (const item of request.MiscItems) {
guild.VaultMiscItems.push(item);
guildMember.MiscItemsContributed.push(item);
const miscItemContribution = guildMember.MiscItemsContributed.find(x => x.ItemType == item.ItemType);
if (miscItemContribution) {
miscItemContribution.ItemCount += item.ItemCount;
} else {
guildMember.MiscItemsContributed.push(item);
}
addMiscItems(inventory, [{ ...item, ItemCount: item.ItemCount * -1 }]);
}
}

View File

@ -22,6 +22,7 @@ import { logger } from "../utils/logger";
import { config } from "./configService";
import { Account } from "../models/loginModel";
import { getRandomInt } from "./rngService";
import { ITypeCount } from "../types/inventoryTypes/inventoryTypes";
export const getGuildForRequest = async (req: Request): Promise<TGuildDatabaseDocument> => {
const accountId = await getAccountIdForRequest(req);
@ -284,15 +285,7 @@ const moveResourcesToVault = (guild: TGuildDatabaseDocument, component: IDojoCon
guild.VaultRegularCredits += component.RegularCredits;
}
if (component.MiscItems) {
guild.VaultMiscItems ??= [];
for (const componentMiscItem of component.MiscItems) {
const vaultMiscItem = guild.VaultMiscItems.find(x => x.ItemType == componentMiscItem.ItemType);
if (vaultMiscItem) {
vaultMiscItem.ItemCount += componentMiscItem.ItemCount;
} else {
guild.VaultMiscItems.push(componentMiscItem);
}
}
addVaultMiscItems(guild, component.MiscItems);
}
if (component.RushPlatinum) {
guild.VaultPremiumCredits ??= 0;
@ -300,6 +293,18 @@ const moveResourcesToVault = (guild: TGuildDatabaseDocument, component: IDojoCon
}
};
export const addVaultMiscItems = (guild: TGuildDatabaseDocument, miscItems: ITypeCount[]): void => {
guild.VaultMiscItems ??= [];
for (const miscItem of miscItems) {
const vaultMiscItem = guild.VaultMiscItems.find(x => x.ItemType == miscItem.ItemType);
if (vaultMiscItem) {
vaultMiscItem.ItemCount += miscItem.ItemCount;
} else {
guild.VaultMiscItems.push(miscItem);
}
}
};
export const processDojoBuildMaterialsGathered = (guild: TGuildDatabaseDocument, build: IDojoBuild): void => {
if (build.guildXpValue) {
guild.ClaimedXP ??= [];