import { IsNotEmpty, IsDate, IsOptional, ValidateNested, } from "class-validator"; import Deed from "./Deed"; import Document from "./Document"; import Office from "./Office"; import OfficeFolderHasCustomer from "./OfficeFolderHasCustomer"; import OfficeFolderHasStakeholder from "./OfficeFolderHasStakeholder"; import Resource from "../Resource"; import { Type } from "class-transformer"; export default class OfficeFolder extends Resource { @IsNotEmpty({ groups: ["update" , "createDocument"] ,message: "UID is required" }) public uid?: string; @IsNotEmpty({ groups: ["create" , "createFolder"], message: "Folder number is required" }) public folder_number!: string; @IsNotEmpty({ groups: ["create" , "createFolder"], message: "Name is required" }) public name!: string; @IsNotEmpty({ groups: ["createFolder"], message: "Description is required" }) public description: string | null = null; public archived_description: string | null = null; public status: EFolderStatus | string = EFolderStatus.LIVE; @IsNotEmpty({ groups: ["create", "createFolder"], message: "Deed is required" }) @ValidateNested({ groups: ["create" , "createFolder"] }) @Type(() => Deed) public deed!: Deed; @IsNotEmpty({ groups: ["create" , "createFolder"], message: "Office is required" }) @ValidateNested({ groups: ["create" , "createFolder"] }) @Type(() => Office) public office!: Office; @IsDate() public created_at: Date | null = null; @IsDate() public updated_at: Date | null = null; @IsOptional({ groups: ["create", "update"] }) @ValidateNested({ groups: ["create", "update"] }) @Type(() => OfficeFolderHasCustomer) office_folder_has_customers?: OfficeFolderHasCustomer[]; @IsOptional({ groups: ["create", "update"] }) @ValidateNested({ groups: ["create", "update" , "createFolder"] }) @Type(() => OfficeFolderHasStakeholder) office_folder_has_stakeholder?: OfficeFolderHasStakeholder[]; @IsOptional({ groups: ["create", "update"] }) @ValidateNested({ groups: ["create", "update"] }) @Type(() => Document) documents?: Document[]; } export enum EFolderStatus { LIVE = "LIVE", ARCHIVED = "ARCHIVED", }