feat: personal decos in dojo & move dojo decos #1451
@ -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>(
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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"> {
 | 
			
		||||
 | 
			
		||||
@ -127,7 +127,9 @@ export interface ISetPlacedDecoInfoRequest {
 | 
			
		||||
    DecoId: string;
 | 
			
		||||
    Room: string;
 | 
			
		||||
    PictureFrameInfo: IPictureFrameInfo;
 | 
			
		||||
    BootLocation: string;
 | 
			
		||||
    BootLocation?: string;
 | 
			
		||||
    ComponentId?: string;
 | 
			
		||||
    GuildId?: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface IPictureFrameInfo {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user