handle dojo decos in setPlacedDecoInfo

This commit is contained in:
Sainan 2025-04-03 16:33:04 +02:00
parent baf06bbda2
commit 2a09f6a1d1
6 changed files with 25 additions and 4 deletions

View File

@ -17,6 +17,7 @@ import {
} from "@/src/types/guildTypes";
import { Document, Model, model, Schema, Types } from "mongoose";
import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
import { pictureFrameInfoSchema } from "./personalRoomsModel";
const dojoDecoSchema = new Schema<IDojoDecoDatabase>({
Type: String,
@ -26,7 +27,8 @@ const dojoDecoSchema = new Schema<IDojoDecoDatabase>({
RegularCredits: Number,
MiscItems: { type: [typeCountSchema], default: undefined },
CompletionTime: Date,
RushPlatinum: Number
RushPlatinum: Number,
PictureFrameInfo: pictureFrameInfoSchema
});
const dojoLeaderboardEntrySchema = new Schema<IDojoLeaderboardEntry>(

View File

@ -12,7 +12,7 @@ import {
} from "@/src/types/shipTypes";
import { Schema, model } from "mongoose";
const pictureFrameInfoSchema = new Schema<IPictureFrameInfo>(
export const pictureFrameInfoSchema = new Schema<IPictureFrameInfo>(
{
Image: String,
Filter: String,

View File

@ -202,7 +202,8 @@ export const getDojoClient = async (
Type: deco.Type,
Pos: deco.Pos,
Rot: deco.Rot,
Name: deco.Name
Name: deco.Name,
PictureFrameInfo: deco.PictureFrameInfo
};
if (deco.CompletionTime) {
clientDeco.CompletionTime = toMongoDate(deco.CompletionTime);

View File

@ -10,6 +10,9 @@ import { logger } from "@/src/utils/logger";
import { Types } from "mongoose";
import { addShipDecorations, getInventory } from "./inventoryService";
import { config } from "./configService";
import { Guild } from "../models/guildModel";
import { hasGuildPermission } from "./guildService";
import { GuildPermission } from "../types/guildTypes";
export const setShipCustomizations = async (
accountId: string,
@ -154,6 +157,17 @@ export const handleSetShipDecorations = async (
};
export const handleSetPlacedDecoInfo = async (accountId: string, req: ISetPlacedDecoInfoRequest): Promise<void> => {
if (req.GuildId && req.ComponentId) {
const guild = (await Guild.findById(req.GuildId))!;
if (await hasGuildPermission(guild, accountId, GuildPermission.Decorator)) {
const component = guild.DojoComponents.id(req.ComponentId)!;
const deco = component.Decos!.find(x => x._id.equals(req.DecoId))!;
deco.PictureFrameInfo = req.PictureFrameInfo;
await guild.save();
}
return;
}
const personalRooms = await getPersonalRooms(accountId);
const room = personalRooms.Ship.Rooms.find(room => room.Name === req.Room);

View File

@ -1,6 +1,7 @@
import { Types } from "mongoose";
import { IOid, IMongoDate } from "@/src/types/commonTypes";
import { IFusionTreasure, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes";
import { IPictureFrameInfo } from "./shipTypes";
export interface IGuildClient {
_id: IOid;
@ -194,6 +195,7 @@ export interface IDojoDecoClient {
MiscItems?: IMiscItem[];
CompletionTime?: IMongoDate;
RushPlatinum?: number;
PictureFrameInfo?: IPictureFrameInfo;
}
export interface IDojoDecoDatabase extends Omit<IDojoDecoClient, "id" | "CompletionTime"> {

View File

@ -127,7 +127,9 @@ export interface ISetPlacedDecoInfoRequest {
DecoId: string;
Room: string;
PictureFrameInfo: IPictureFrameInfo;
BootLocation: string;
BootLocation?: string;
ComponentId?: string;
GuildId?: string;
}
export interface IPictureFrameInfo {