diff --git a/src/Customer/Address.ts b/src/Customer/Address.ts index cffc048..e1e6569 100644 --- a/src/Customer/Address.ts +++ b/src/Customer/Address.ts @@ -2,30 +2,38 @@ import { IsNotEmpty, IsDate } from "class-validator"; import Contact from "./Contact"; import Office from "./Office"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class Address extends Resource { + @Expose() public uid?: string; + @Expose() @IsNotEmpty({ groups: ["createCustomer" , "createOffice", "updateCustomer"], message: "Address is required" }) public address!: string; + @Expose() @IsNotEmpty({ groups: ["createCustomer" , "createOffice", "updateCustomer"], message: "City is required" }) public city!: string; + @Expose() @IsNotEmpty({ groups: ["createCustomer" , "createOffice", "updateCustomer"], message: "State is required" }) public zip_code!: number; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => Office) public office?: Office | null = null; + @Expose() @Type(() => Contact) public contact?: Contact | null = null; } diff --git a/src/Customer/Contact.ts b/src/Customer/Contact.ts index 192dafe..dcf9cb6 100644 --- a/src/Customer/Contact.ts +++ b/src/Customer/Contact.ts @@ -3,53 +3,66 @@ import Address from "./Address"; import Customer from "."; import User from "../Notary"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class Contact extends Resource { + @Expose() @IsNotEmpty({ groups: ["update"] ,message: "UID is required" }) public uid?: string; + @Expose() @IsOptional({ groups: ["updateCustomer"]}) @IsNotEmpty({ groups: ["createCustomer", "updateCustomer"], message: "First name is required" }) public first_name!: string; + @Expose() @IsOptional({ groups: ["updateCustomer"]}) @IsNotEmpty({ groups: ["createCustomer", "updateCustomer"], message: "Last name is required" }) public last_name!: string; + @Expose() @IsOptional({ groups: ["updateCustomer"]}) @IsNotEmpty({ groups: ["createCustomer", "updateCustomer"] }) @IsEmail({}, { groups: ["createCustomer", "updateCustomer"], message: "Email is not valid" }) public email!: string; + @Expose() @IsOptional({ groups: ["updateCustomer"]}) @IsNotEmpty({ groups: ["createCustomer", "updateCustomer"] }) public cell_phone_number!: string; + @Expose() @IsOptional() public phone_number?: string; + @Expose() @IsOptional({ groups: ["updateCustomer"]}) @IsNotEmpty({ groups: ["createCustomer", "updateCustomer"], message: "Civility is required" }) public civility!: ECivility | string; + @Expose() @IsOptional({ groups: ["createCustomer", "updateCustomer"]}) @ValidateNested({ groups: ["createCustomer", "updateCustomer"] }) @Type(() => Address) public address?: Address; + @Expose() @IsDate() public birthdate?: Date | null = null; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => User) public user?: User | null = null; + @Expose() @Type(() => Customer) public customer?: Customer | null = null; } diff --git a/src/Customer/Customer.ts b/src/Customer/Customer.ts index b240219..cce9213 100644 --- a/src/Customer/Customer.ts +++ b/src/Customer/Customer.ts @@ -6,29 +6,36 @@ import { import { Contact, Document } from "."; import OfficeFolderHasCustomer from "./OfficeFolderHasCustomer"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class Customer extends Resource { + @Expose() @IsNotEmpty({ groups: ["updateFolder"] ,message: "UID is required" }) public uid?: string; + @Expose() @IsNotEmpty({ groups: ["updateCustomer"], message: "Status is required" }) public status!: ECustomerStatus | string; + @Expose() @IsNotEmpty({ groups: ["createCustomer", "updateCustomer"], message: "Contact is required" }) @ValidateNested({ groups: ["createCustomer", "updateCustomer"] }) @Type(() => Contact) public contact!: Contact; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => OfficeFolderHasCustomer) office_folder_has_customers?: OfficeFolderHasCustomer[]; + @Expose() @Type(() => Document) documents?: Document[]; } diff --git a/src/Customer/Deed.ts b/src/Customer/Deed.ts index 110c379..2b6f195 100644 --- a/src/Customer/Deed.ts +++ b/src/Customer/Deed.ts @@ -3,25 +3,31 @@ import DeedType from "./DeedType"; import DeedHasDocumentType from "./DeedHasDocumentType"; import OfficeFolder from "./OfficeFolder"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class Deed extends Resource{ + @Expose() public uid?: string; + @Expose() @IsNotEmpty({ groups: ["createFolder"], message: "Deed type is required" }) @ValidateNested({ groups: ["createFolder"] }) @Type(() => DeedType) public deed_type!: DeedType; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => DeedHasDocumentType) public deed_has_document_types?: DeedHasDocumentType[]; + @Expose() @Type(() => OfficeFolder) public office_folder?: OfficeFolder; } diff --git a/src/Customer/DeedHasDocumentType.ts b/src/Customer/DeedHasDocumentType.ts index 0bd701f..be87598 100644 --- a/src/Customer/DeedHasDocumentType.ts +++ b/src/Customer/DeedHasDocumentType.ts @@ -2,20 +2,25 @@ import { IsDate } from "class-validator"; import Deed from "./Deed"; import DocumentType from "./DocumentType"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class DeedHasDocumentType extends Resource { + @Expose() public uid?: string; + @Expose() @Type(() => DocumentType) public document_type!: DocumentType; + @Expose() @Type(() => Deed) public deed!: Deed; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; } diff --git a/src/Customer/DeedType.ts b/src/Customer/DeedType.ts index 9fb0119..8cf41a8 100644 --- a/src/Customer/DeedType.ts +++ b/src/Customer/DeedType.ts @@ -8,35 +8,44 @@ import Deed from "./Deed"; import DeedTypeHasDocumentType from "./DeedTypeHasDocumentType"; import Office from "./Office"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class DeedType extends Resource { + @Expose() @IsNotEmpty({ groups: ["createFolder"] ,message: "UID is required" }) public uid?: string; + @Expose() @IsNotEmpty({ groups: ["createDeedType"], message: "Name is required" }) public name!: string; + @Expose() @IsNotEmpty({ groups: ["createDeedType"], message: "Description is required" }) public description!: string; + @Expose() @IsDate() public archived_at: Date | null = null; + @Expose() @IsNotEmpty({ groups: ["createDeedType"], message: "Office is required" }) @ValidateNested({ groups: ["createDeedType"] }) @Type(() => Office) public office!: Office; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => Deed) public deed?: Deed[]; + @Expose() @IsOptional({ groups: ["createDeedType"] }) @ValidateNested({ groups: ["createDeedType"] }) @Type(() => DeedTypeHasDocumentType) diff --git a/src/Customer/DeedTypeHasDocumentType.ts b/src/Customer/DeedTypeHasDocumentType.ts index 7209dff..b3db2f4 100644 --- a/src/Customer/DeedTypeHasDocumentType.ts +++ b/src/Customer/DeedTypeHasDocumentType.ts @@ -2,22 +2,27 @@ import { IsNotEmpty, IsDate, ValidateNested } from "class-validator"; import DeedType from "./DeedType"; import DocumentType from "./DocumentType"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class DeedTypeHasDocumentType extends Resource { + @Expose() public uid?: string; + @Expose() @IsNotEmpty({ groups: ["createDeedType"], message: "Document type is required" }) @ValidateNested({ groups: ["createDeedType"] }) @Type(() => DocumentType) public document_type!: DocumentType; + @Expose() @Type(() => DeedType) public deed_type!: DeedType; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; } diff --git a/src/Customer/Document.ts b/src/Customer/Document.ts index be38b15..e552ea1 100644 --- a/src/Customer/Document.ts +++ b/src/Customer/Document.ts @@ -9,38 +9,47 @@ import DocumentType from "./DocumentType"; import File from "./File"; import OfficeFolder from "./OfficeFolder"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class Document extends Resource { + @Expose() @IsNotEmpty({ groups: ["createDocument"] ,message: "UID is required" }) public uid?: string; + @Expose() public document_status!: EDocumentStatus | string; + @Expose() @IsNotEmpty({ groups: ["createDocument", "updateFolder"], message: "Document type is required" }) @ValidateNested({ groups: ["createDocument"] }) @Type(() => DocumentType) public document_type!: DocumentType; + @Expose() @IsNotEmpty({ groups: ["createDocument"], message: "Folder is required" }) @ValidateNested({ groups: ["createDocument"] }) @Type(() => OfficeFolder) public folder!: OfficeFolder; + @Expose() @IsNotEmpty({ groups: ["createDocument", "updateFolder"], message: "Depositor is required" }) @ValidateNested({ groups: ["createDocument"] }) @Type(() => Customer) public depositor!: Customer; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => File) public files?: File[]; + @Expose() @Type(() => DocumentHistory) public document_history?: DocumentHistory[]; } diff --git a/src/Customer/DocumentHistory.ts b/src/Customer/DocumentHistory.ts index 00f57f1..f1ab0fd 100644 --- a/src/Customer/DocumentHistory.ts +++ b/src/Customer/DocumentHistory.ts @@ -1,21 +1,27 @@ import { IsDate } from "class-validator"; import { default as Document, EDocumentStatus } from "./Document"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class DocumentHistory extends Resource { + @Expose() public uid?: string; + @Expose() public document_status!: EDocumentStatus | string; + @Expose() @Type(() => Document) public document!: Document; + @Expose() public refused_reason: string | null = null; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; } diff --git a/src/Customer/DocumentType.ts b/src/Customer/DocumentType.ts index c474a02..11a9ed9 100644 --- a/src/Customer/DocumentType.ts +++ b/src/Customer/DocumentType.ts @@ -4,41 +4,52 @@ import Document from "./Document"; import DeedTypeHasDocumentType from "./DeedTypeHasDocumentType"; import Office from "./Office"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class DocumentType extends Resource { + @Expose() @IsNotEmpty({ groups: ["createDocument" , "createDeedType", "updateFolder"] ,message: "UID is required" }) public uid?: string; + @Expose() @IsNotEmpty({ groups: ["createDocumentType"], message: "Name is required" }) public name!: string; + @Expose() @IsNotEmpty({ groups: ["createDocumentType"], message: "Public description is required" }) public public_description!: string; + @Expose() @IsOptional({ groups: ["createDocumentType"] }) public private_description: string | null = null; + @Expose() @IsDate() public archived_at: Date | null = null; + @Expose() @IsNotEmpty({ groups: ["createDocumentType"], message: "Office is required" }) @ValidateNested({ groups: ["createDocumentType"] }) @Type(() => Office) public office!: Office; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => Document) public documents?: Document[]; + @Expose() @Type(() => DeedHasDocumentType) public deed_has_document_types?: DeedHasDocumentType[]; + @Expose() @Type(() => DeedTypeHasDocumentType) public deed_type_has_document_types?: DeedTypeHasDocumentType[]; } diff --git a/src/Customer/File.ts b/src/Customer/File.ts index 54eecc0..45c8448 100644 --- a/src/Customer/File.ts +++ b/src/Customer/File.ts @@ -1,19 +1,24 @@ import { IsDate } from "class-validator"; import Document from "./Document"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class File extends Resource { + @Expose() public uid?: string; + @Expose() @Type(() => Document) public document!: Document; + @Expose() public file_path!: string;; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; } diff --git a/src/Customer/Notification.ts b/src/Customer/Notification.ts index 07a22d0..83b8367 100644 --- a/src/Customer/Notification.ts +++ b/src/Customer/Notification.ts @@ -4,22 +4,28 @@ import { } from "class-validator"; import UserHasNotification from "./UserHasNotification"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class Notification extends Resource { + @Expose() public uid?: string; + @Expose() public message!: string; + @Expose() @IsUrl() public redirection_url!: string; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => UserHasNotification) user_has_notifications?: UserHasNotification[]; } diff --git a/src/Customer/Office.ts b/src/Customer/Office.ts index 7cb07a5..d2a444f 100644 --- a/src/Customer/Office.ts +++ b/src/Customer/Office.ts @@ -8,40 +8,51 @@ import DeedType from "./DeedType"; import OfficeFolder from "./OfficeFolder"; import User from "../Notary/User"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class Office extends Resource { + @Expose() @IsNotEmpty({ groups: ["createFolder" , "createDeedType" , "createDocumentType"] ,message: "UID is required" }) public uid?: string; + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "ID IdNote is required" }) public idNot!: string; + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "Name is required" }) public name!: string; + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "CRPCEN is required" }) public crpcen!: string; + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "Address is required" }) @ValidateNested({ groups: ["createOffice"] }) @Type(() => Address) public address!: Address; + @Expose() public office_status!: EOfficeStatus | string; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => DeedType) public deed_types?: DeedType[]; + @Expose() @Type(() => User) public users?: User[]; + @Expose() @Type(() => OfficeFolder) public office_folders?: OfficeFolder[]; } diff --git a/src/Customer/OfficeFolder.ts b/src/Customer/OfficeFolder.ts index f7f7999..fa82604 100644 --- a/src/Customer/OfficeFolder.ts +++ b/src/Customer/OfficeFolder.ts @@ -10,56 +10,69 @@ import Office from "./Office"; import OfficeFolderHasCustomer from "./OfficeFolderHasCustomer"; import OfficeFolderHasStakeholder from "./OfficeFolderHasStakeholder"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class OfficeFolder extends Resource { + @Expose() @IsNotEmpty({ groups: ["createDocument"] ,message: "UID is required" }) public uid?: string; + @Expose() @IsOptional({ groups : ["updateFolder"]}) @IsNotEmpty({ groups: ["createFolder"], message: "Folder number is required" }) public folder_number!: string; + @Expose() @IsOptional({ groups : ["updateFolder"]}) @IsNotEmpty({ groups: ["createFolder"], message: "Name is required" }) public name!: string; + @Expose() @IsOptional({ groups : ["updateFolder"]}) @IsNotEmpty({ groups: ["createFolder"], message: "Description is required" }) public description: string | null = null; + @Expose() @IsOptional({ groups : ["updateFolder"]}) public archived_description: string | null = null; + @Expose() @IsOptional({ groups : ["updateFolder"]}) public status: EFolderStatus | string = EFolderStatus.LIVE; + @Expose() @IsNotEmpty({ groups: ["createFolder"], message: "Deed is required" }) @ValidateNested({ groups: ["createFolder"] }) @Type(() => Deed) public deed!: Deed; + @Expose() @IsNotEmpty({ groups: ["createFolder"], message: "Office is required" }) @ValidateNested({ groups: ["createFolder"] }) @Type(() => Office) public office!: Office; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @IsOptional({ groups: ["updateFolder"] }) @ValidateNested({ groups: ["updateFolder"] }) @Type(() => OfficeFolderHasCustomer) office_folder_has_customers?: OfficeFolderHasCustomer[]; + @Expose() @IsOptional({ groups: ["updateFolder"] }) @ValidateNested({ groups: ["createFolder", "updateFolder"] }) @Type(() => OfficeFolderHasStakeholder) office_folder_has_stakeholder?: OfficeFolderHasStakeholder[]; + @Expose() @IsOptional({ groups: ["updateFolder"] }) @ValidateNested({ groups: ["updateFolder"] }) @Type(() => Document) diff --git a/src/Customer/OfficeFolderHasCustomer.ts b/src/Customer/OfficeFolderHasCustomer.ts index 350a5c4..d2e9e1a 100644 --- a/src/Customer/OfficeFolderHasCustomer.ts +++ b/src/Customer/OfficeFolderHasCustomer.ts @@ -2,22 +2,27 @@ import { IsNotEmpty, IsDate, ValidateNested } from "class-validator"; import Customer from "."; import OfficeFolder from "./OfficeFolder"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class OfficeFolderHasCustomer extends Resource { + @Expose() public uid?: string; + @Expose() @IsNotEmpty({ groups: ["updateFolder"], message: "Customer is required" }) @ValidateNested({ groups: ["updateFolder"] }) @Type(() => Customer) public customer!: Customer; + @Expose() @Type(() => OfficeFolder) public office_folder!: OfficeFolder; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; } diff --git a/src/Customer/OfficeFolderHasStakeholder.ts b/src/Customer/OfficeFolderHasStakeholder.ts index 9d91e7a..10bac54 100644 --- a/src/Customer/OfficeFolderHasStakeholder.ts +++ b/src/Customer/OfficeFolderHasStakeholder.ts @@ -2,22 +2,27 @@ import { IsNotEmpty, IsDate, ValidateNested } from "class-validator"; import OfficeFolder from "./OfficeFolder"; import User from "../Notary/User"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class OfficeFolderHasStakeholder extends Resource { + @Expose() public uid?: string; + @Expose() @IsNotEmpty({ groups: ["createFolder", "updateFolder"], message: "User Stakeholder is required" }) @ValidateNested({ groups: ["createFolder", "updateFolder"] }) @Type(() => User) public user_stakeholder!: User; + @Expose() @Type(() => OfficeFolder) public office_folder?: OfficeFolder; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; } diff --git a/src/Customer/UserHasNotification.ts b/src/Customer/UserHasNotification.ts index 09f04f3..41ef29f 100644 --- a/src/Customer/UserHasNotification.ts +++ b/src/Customer/UserHasNotification.ts @@ -2,20 +2,25 @@ import { IsDate } from "class-validator"; import Notification from "./Notification"; import User from "../Notary/User"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class UserHasNotification extends Resource { + @Expose() public uid?: string; + @Expose() @Type(() => User) public user!: User; + @Expose() @Type(() => Notification) public notification!: Notification; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; } diff --git a/src/Notary/User.ts b/src/Notary/User.ts index f845f3c..85b0aeb 100644 --- a/src/Notary/User.ts +++ b/src/Notary/User.ts @@ -7,28 +7,36 @@ import Document from "../Customer/Document"; import Office from "../Customer/Office"; import OfficeFolderHasStakeholder from "../Customer/OfficeFolderHasStakeholder"; import Resource from "../Resource"; -import { Type } from "class-transformer"; +import { Expose, Type } from "class-transformer"; export default class User extends Resource { + @Expose() @IsNotEmpty({ groups: ["createFolder", "updateFolder"] ,message: "UID is required" }) public uid?: string; + @Expose() public idNot!: string; + @Expose() @Type(() => Contact) public contact!: Contact; + @Expose() public office_membership!: Office; + @Expose() @IsDate() public created_at: Date | null = null; + @Expose() @IsDate() public updated_at: Date | null = null; + @Expose() @Type(() => OfficeFolderHasStakeholder) office_folder_has_stakeholders?: OfficeFolderHasStakeholder[]; + @Expose() @Type(() => Document) documents?: Document[]; }