import { IsNotEmpty, IsDate, IsOptional, ValidateNested, } from "class-validator"; import Customer from "."; import DocumentHistory from "./DocumentHistory"; import DocumentType from "./DocumentType"; import File from "./File"; import OfficeFolder from "./OfficeFolder"; import Resource from "../Resource"; import { Type } from "class-transformer"; export default class Document extends Resource { @IsNotEmpty({ groups: ["update"] ,message: "UID is required" }) public uid?: string; @IsNotEmpty({ groups: ["create"], message: "Document status is required" }) public document_status!: EDocumentStatus | string; @IsNotEmpty({ groups: ["create"], message: "Document type is required" }) @ValidateNested({ groups: ["create", "update"] }) @Type(() => DocumentType) public document_type!: DocumentType; @IsNotEmpty({ groups: ["create"], message: "Folder is required" }) @ValidateNested({ groups: ["create", "update"] }) @Type(() => OfficeFolder) public folder!: OfficeFolder; @IsNotEmpty({ groups: ["create"], message: "Depositor is required" }) @ValidateNested({ groups: ["create", "update"] }) @Type(() => Customer) public depositor!: Customer; @IsDate() public created_at: Date | null = null; @IsDate() public updated_at: Date | null = null; @IsOptional({ groups: ["create", "update"] }) @ValidateNested({ groups: ["create", "update"] }) @Type(() => File) public files?: File[]; @IsOptional({ groups: ["create", "update"] }) @ValidateNested({ groups: ["create", "update"] }) @Type(() => DocumentHistory) public document_history?: DocumentHistory[]; } export enum EDocumentStatus { ASKED = "ASKED", DEPOSITED = "DEPOSITED", VALIDATED = "VALIDATED", ANCHORED = "ANCHORED", REFUSED = "REFUSED", }