From b05d69e80fd8024dfe55d97cf45b90aa9207e7ce Mon Sep 17 00:00:00 2001 From: Hugo Lextrait Date: Wed, 3 May 2023 17:05:39 +0200 Subject: [PATCH] :sparkles: post folders --- .../LeCoffreApi/SuperAdmin/Folders/Folders.ts | 28 +++-- .../DesignSystem/DepositDocument/index.tsx | 16 +-- .../Document/DocumentNotary/index.tsx | 16 +-- .../Layouts/DesignSystem/dummyData.ts | 24 ++-- .../Layouts/Folder/CreateFolder/index.tsx | 112 ++++++++++-------- 5 files changed, 110 insertions(+), 86 deletions(-) diff --git a/src/front/Api/LeCoffreApi/SuperAdmin/Folders/Folders.ts b/src/front/Api/LeCoffreApi/SuperAdmin/Folders/Folders.ts index f0d59621..00f987f1 100644 --- a/src/front/Api/LeCoffreApi/SuperAdmin/Folders/Folders.ts +++ b/src/front/Api/LeCoffreApi/SuperAdmin/Folders/Folders.ts @@ -1,5 +1,5 @@ import { Service } from "typedi"; -import { OfficeFolder } from "le-coffre-resources/dist/Notary"; +import User, { DeedType, Office, OfficeFolder } from "le-coffre-resources/dist/Notary"; import BaseSuperAdmin from "../BaseSuperAdmin"; import { EFolderStatus } from "le-coffre-resources/dist/Customer/OfficeFolder"; @@ -11,19 +11,24 @@ export interface IGetFoldersParams { }; } -// TODO Type getbyuid query searchParams -export type IPostFoldersParams = { +export interface IPostFoldersParams { folder_number: OfficeFolder["folder_number"]; name: OfficeFolder["name"]; description: OfficeFolder["description"]; - archived_description: OfficeFolder["archived_description"]; - status: OfficeFolder["status"]; - deed: OfficeFolder["deed"]; - office: OfficeFolder["office"]; - office_folder_has_customers?: OfficeFolder["office_folder_has_customers"]; - office_folder_has_stakeholder?: OfficeFolder["office_folder_has_stakeholder"]; - documents?: OfficeFolder["documents"]; -}; + deed: { + deed_type: { + uid: DeedType["uid"]; + }; + }; + office: { + uid: Office["uid"]; + }; + office_folder_has_stakeholder: { + user_stakeholder: { + uid: User["uid"]; + }; + }[]; +} export type IPutFoldersParams = { uid?: OfficeFolder["uid"]; @@ -84,6 +89,7 @@ export default class Folders extends BaseSuperAdmin { */ public async post(body: any): Promise { const url = new URL(this.baseURl); + console.log(body); try { return await this.postRequest(url, body); } catch (err) { diff --git a/src/front/Components/DesignSystem/DepositDocument/index.tsx b/src/front/Components/DesignSystem/DepositDocument/index.tsx index d599d0e6..306a79b3 100644 --- a/src/front/Components/DesignSystem/DepositDocument/index.tsx +++ b/src/front/Components/DesignSystem/DepositDocument/index.tsx @@ -112,19 +112,19 @@ export default class DepositDocument extends React.Component { this.setState({ files: this.props.defaultFiles.map((file) => ({ index: this.index++, - file: new File([""], file.file_path, {}), + file: new File([""], file.file_path ?? "", {}), })), }); } } - private shortName(name: string): string { - const maxLength = 20; - if (name.length > maxLength) { - return name.substring(0, maxLength / 2) + "..." + name.substring(name.length - maxLength / 2, name.length); - } - return name; - } + private shortName(name: string): string { + const maxLength = 20; + if (name.length > maxLength) { + return name.substring(0, maxLength / 2) + "..." + name.substring(name.length - maxLength / 2, name.length); + } + return name; + } private onDragOver(event: React.DragEvent) { if (!this.state.isDragOver) { diff --git a/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx b/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx index 6587e1a6..5fd9e61f 100644 --- a/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx +++ b/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx @@ -45,20 +45,20 @@ class DocumentNotaryClass extends React.Component { ); } - private getDocumentsTitle(){ + private getDocumentsTitle() { const documentFiles = this.props.document.files; - if(documentFiles){ - if(documentFiles.length === 1){ + if (documentFiles) { + if (documentFiles.length === 1) { const fileName = documentFiles[0]?.file_path?.split("/").pop(); - if(fileName && fileName.length > 20){ + if (fileName && fileName.length > 20) { return `${fileName.substr(0, 7)}...${fileName.substr(fileName.length - 7, fileName.length)}`; - }else{ + } else { return fileName; } - }else{ + } else { return `${documentFiles.length} documents déposés`; } - }else{ + } else { return "Aucun document déposé"; } } @@ -85,7 +85,7 @@ class DocumentNotaryClass extends React.Component { private onOpenDeletionModal(): void { if (!this.props.openDeletionModal) return; - this.props.openDeletionModal(this.props.document.uid); + this.props.openDeletionModal(this.props.document.uid ?? ""); } } diff --git a/src/front/Components/Layouts/DesignSystem/dummyData.ts b/src/front/Components/Layouts/DesignSystem/dummyData.ts index 5abbda61..a5254e11 100644 --- a/src/front/Components/Layouts/DesignSystem/dummyData.ts +++ b/src/front/Components/Layouts/DesignSystem/dummyData.ts @@ -1,6 +1,18 @@ import { ECustomerStatus } from "le-coffre-resources/dist/Customer/Customer"; import { EFolderStatus } from "le-coffre-resources/dist/Customer/OfficeFolder"; -import { Address, Contact, Customer, Deed, DeedType, Document, DocumentType, File, Office, OfficeFolder, OfficeFolderHasCustomer } from "le-coffre-resources/dist/Notary"; +import { + Address, + Contact, + Customer, + Deed, + DeedType, + Document, + DocumentType, + File, + Office, + OfficeFolder, + OfficeFolderHasCustomer, +} from "le-coffre-resources/dist/Notary"; export const address: Address = { uid: "a&2azedzaa3", @@ -72,7 +84,7 @@ export const docType: DocumentType = { public_description: "Acte de naissance public description", private_description: "Acte de naissance private description", archived_at: new Date(), - office: office, + // office: office, }; export const identityDocType: DocumentType = { @@ -83,7 +95,7 @@ export const identityDocType: DocumentType = { public_description: "Carte d'identité public description", private_description: "Carte d'identité private description", archived_at: new Date(), - office: office, + // office: office, }; export const customer: Customer = { @@ -115,8 +127,6 @@ export const folder: OfficeFolder = { archived_description: "Archived description", }; - - export const document: Document = { uid: "fzeafergreztyzgrf", depositor: customer2_mock, @@ -150,7 +160,7 @@ export const identityFile: File = { created_at: new Date(), updated_at: new Date(), document: document, - file_path: "https://minteed-stg-euwest3-s3.s3.eu-west-3.amazonaws.com/cni_fake_c7259d4923.png" + file_path: "https://minteed-stg-euwest3-s3.s3.eu-west-3.amazonaws.com/cni_fake_c7259d4923.png", }; export const documentIdentity: Document = { @@ -172,7 +182,7 @@ export const documentPending: Document = { document_type: docType, updated_at: new Date(), created_at: new Date(), - files: [fileMock,fileMock2], + files: [fileMock, fileMock2], }; export const documentDeposited: Document = { diff --git a/src/front/Components/Layouts/Folder/CreateFolder/index.tsx b/src/front/Components/Layouts/Folder/CreateFolder/index.tsx index 394fd7bc..4c189ba1 100644 --- a/src/front/Components/Layouts/Folder/CreateFolder/index.tsx +++ b/src/front/Components/Layouts/Folder/CreateFolder/index.tsx @@ -13,12 +13,12 @@ import { ActionMeta, MultiValue } from "react-select"; import BasePage from "../../Base"; import classes from "./classes.module.scss"; -import { Deed, DeedType, OfficeFolder, OfficeFolderHasStakeholder } from "le-coffre-resources/dist/Notary"; +import { DeedType, OfficeFolder, OfficeFolderHasStakeholder } from "le-coffre-resources/dist/Notary"; import DeedTypes from "@Front/Api/LeCoffreApi/SuperAdmin/DeedTypes/DeedTypes"; import Users from "@Front/Api/LeCoffreApi/SuperAdmin/Users/Users"; import User from "le-coffre-resources/dist/Notary"; -import Folders from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders"; -import { EFolderStatus } from "le-coffre-resources/dist/Customer/OfficeFolder"; +import Folders, { IPostFoldersParams } from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders"; +import { NextRouter, useRouter } from "next/router"; type IFormValues = { folder_number: number; @@ -29,6 +29,11 @@ type IFormValues = { }; type IProps = {}; + +type IPropsClass = IProps & { + router: NextRouter; +}; + type IState = { folder_access: string; formValues: IFormValues; @@ -37,8 +42,8 @@ type IState = { collaborators: User[]; collaboratorsOptions: IOption[]; }; -export default class CreateFolder extends BasePage { - public constructor(props: IProps) { +class CreateFolderClass extends BasePage { + public constructor(props: IPropsClass) { super(props); this.state = { @@ -211,68 +216,46 @@ export default class CreateFolder extends BasePage { [key: string]: any; }, ) { - const selectedDeedType: DeedType | undefined = this.state.deedTypes.find( + const selectedDeedTypeUid: DeedType | undefined = this.state.deedTypes.find( (deedType) => deedType.uid === this.state.formValues.act_typ?.value, ); - // const selectedCollaborator: User | undefined = this.state.collaborators?.find( - // (deedType) => deedType.uid === this.state.formValues.act_typ?.value, - // ); - - let collaborators: User[] = this.state.collaborators; - - if (!selectedDeedType) return; - const deed = Deed.hydrate({ - deed_type: selectedDeedType, - }); - let office_folder_has_stakeholders = collaborators.map((collaborator) => { - return OfficeFolderHasStakeholder.hydrate({ - office_folder: new OfficeFolder(), - user_stakeholder: collaborator, - }); - }); - - if (this.state.folder_access === "select_collaborators") { - office_folder_has_stakeholders = office_folder_has_stakeholders.filter((collaborator) => { - return this.state.formValues.collaborators?.some((selectedCollaborator) => { - return selectedCollaborator.value === collaborator.user_stakeholder.uid; - }); - }); - } - + /** + * MOCK DATA + */ const usersMock = await Users.getInstance().get({ q: { include: { office_membership: true } } }); const userMock = usersMock[0]; + // ----- + if (!selectedDeedTypeUid) return; + if (!userMock?.office_membership.uid) return; - values["deed"] = deed; - values["archived_description"] = ""; - values["status"] = EFolderStatus.LIVE; - values["office"] = userMock?.office_membership; - values["office_folder_has_stakeholder"] = values["office_folder_has_stakeholders"] = office_folder_has_stakeholders; + let stakeholders = this.getStakeholders(); + let test = stakeholders.map((stakeholder) => ({ + user_stakeholder: { + uid: stakeholder.user_stakeholder.uid, + }, + })); - const newobject = { - folder_number: "12312", - name: "Mon folder", - description: "dazdazf", + const output: IPostFoldersParams = { + folder_number: values["folder_number"], + name: values["name"], + description: values["description"], deed: { deed_type: { - uid: "neNTaiiNVp", + uid: selectedDeedTypeUid.uid, }, }, office: { - uid: "R34T9DZ5ov", + uid: userMock?.office_membership.uid, }, - office_folder_has_stakeholder: [ - { - user_stakeholder: { - uid: "WYBnSyguqP", - }, - }, - ], + office_folder_has_stakeholder: test, }; - console.log(newobject); - const created = await Folders.getInstance().post(newobject as any); - console.log(">>> ", created); + console.log(output); + const created = await Folders.getInstance().post(output); + if (created) { + this.props.router.push(`/folders/${created.uid}`); + } } private isFormSubmittable(): boolean { @@ -297,4 +280,29 @@ export default class CreateFolder extends BasePage { folder_access: e.target.value, }); } + + private getStakeholders() { + let collaborators: User[] = this.state.collaborators; + + let office_folder_has_stakeholders = collaborators.map((collaborator) => { + return OfficeFolderHasStakeholder.hydrate({ + office_folder: new OfficeFolder(), + user_stakeholder: collaborator, + }); + }); + + if (this.state.folder_access === "select_collaborators") { + office_folder_has_stakeholders = office_folder_has_stakeholders.filter((collaborator) => { + return this.state.formValues.collaborators?.some((selectedCollaborator) => { + return selectedCollaborator.value === collaborator.user_stakeholder.uid; + }); + }); + } + return office_folder_has_stakeholders; + } +} + +export default function CreateFolder(props: IProps): JSX.Element { + const router = useRouter(); + return ; }