lecoffre-ressources/src/Notary/OfficeFolder.ts
2023-10-13 11:21:24 +02:00

93 lines
2.6 KiB
TypeScript

export * from "../Customer/OfficeFolder";
import { Expose, Type } from "class-transformer";
import OfficeFolderCustomer from "../Customer/OfficeFolder";
import {
IsNotEmpty,
IsOptional,
NotEquals,
ValidateNested,
} from "class-validator";
import User from "./User";
import Deed from "./Deed";
import Customer from "./Customer";
import Document from "./Document";
import Office from "./Office";
import EFolderStatus from "../Customer/EFolderStatus";
import OfficeFolderAnchor from "./OfficeFolderAnchor";
export default class OfficeFolder extends OfficeFolderCustomer {
@Expose()
@IsNotEmpty({ groups: ["createDocument"], message: "UID is required" })
public override uid?: string;
@Expose()
@NotEquals(null || "", {
groups: ["updateFolder"],
message: "Numéro de dossier ne peut pas être vide",
})
@IsNotEmpty({
groups: ["createFolder"],
message: "Numéro de dossier ne peut pas être vide",
})
public override folder_number!: string;
@Expose()
@NotEquals(null || "", {
groups: ["updateFolder"],
message: "Nom de dossier ne peut pas être vide",
})
@IsNotEmpty({
groups: ["createFolder"],
message: "Nom de dossier ne peut pas être vide",
})
public override name!: string;
@Expose()
@IsOptional({ groups: ["updateFolder"] })
public override description: string | null = null;
@Expose()
@IsOptional({ groups: ["updateFolder"] })
public override archived_description: string | null = null;
@Expose()
@IsOptional({ groups: ["updateFolder"] })
public override status: EFolderStatus | string = EFolderStatus.LIVE;
@Expose()
@IsNotEmpty({ groups: ["createFolder"], message: "Office is required" })
@ValidateNested({ groups: ["createFolder"] })
@Type(() => Office)
public override office?: Office;
@Expose()
@IsNotEmpty({ groups: ["createFolder"], message: "Deed type is required" })
@ValidateNested({ groups: ["createFolder"] })
@Type(() => Deed)
public deed?: Deed;
@Expose()
@IsOptional({ groups: ["updateFolder"] })
@ValidateNested({ groups: ["createFolder", "updateFolder"] })
@Type(() => User)
stakeholders?: User[];
@Expose()
@IsOptional({ groups: ["updateFolder"] })
@ValidateNested({ groups: ["updateFolder"] })
@Type(() => Customer)
public override customers?: Customer[];
@Expose()
@IsOptional({ groups: ["updateFolder"] })
@ValidateNested({ groups: ["updateFolder"] })
@Type(() => Document)
documents?: Document[];
@Expose()
@IsOptional({ groups: ["updateFolder"] })
@ValidateNested({ groups: ["updateFolder"] })
@Type(() => OfficeFolderAnchor)
folder_anchor?: OfficeFolderAnchor | null = null;
}