post folders

This commit is contained in:
Hugo Lextrait 2023-05-03 17:05:39 +02:00
parent a58a08a603
commit b05d69e80f
5 changed files with 110 additions and 86 deletions

View File

@ -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<OfficeFolder> {
const url = new URL(this.baseURl);
console.log(body);
try {
return await this.postRequest<OfficeFolder>(url, body);
} catch (err) {

View File

@ -112,7 +112,7 @@ export default class DepositDocument extends React.Component<IProps, IState> {
this.setState({
files: this.props.defaultFiles.map((file) => ({
index: this.index++,
file: new File([""], file.file_path, {}),
file: new File([""], file.file_path ?? "", {}),
})),
});
}

View File

@ -45,20 +45,20 @@ class DocumentNotaryClass extends React.Component<IPropsClass, IState> {
);
}
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<IPropsClass, IState> {
private onOpenDeletionModal(): void {
if (!this.props.openDeletionModal) return;
this.props.openDeletionModal(this.props.document.uid);
this.props.openDeletionModal(this.props.document.uid ?? "");
}
}

View File

@ -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 = {

View File

@ -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<IProps, IState> {
public constructor(props: IProps) {
class CreateFolderClass extends BasePage<IPropsClass, IState> {
public constructor(props: IPropsClass) {
super(props);
this.state = {
@ -211,68 +216,46 @@ export default class CreateFolder extends BasePage<IProps, IState> {
[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>({
deed_type: selectedDeedType,
});
let office_folder_has_stakeholders = collaborators.map((collaborator) => {
return OfficeFolderHasStakeholder.hydrate<OfficeFolderHasStakeholder>({
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<IProps, IState> {
folder_access: e.target.value,
});
}
private getStakeholders() {
let collaborators: User[] = this.state.collaborators;
let office_folder_has_stakeholders = collaborators.map((collaborator) => {
return OfficeFolderHasStakeholder.hydrate<OfficeFolderHasStakeholder>({
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 <CreateFolderClass {...props} router={router} />;
}