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 { 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 BaseSuperAdmin from "../BaseSuperAdmin";
import { EFolderStatus } from "le-coffre-resources/dist/Customer/OfficeFolder"; import { EFolderStatus } from "le-coffre-resources/dist/Customer/OfficeFolder";
@ -11,19 +11,24 @@ export interface IGetFoldersParams {
}; };
} }
// TODO Type getbyuid query searchParams export interface IPostFoldersParams {
export type IPostFoldersParams = {
folder_number: OfficeFolder["folder_number"]; folder_number: OfficeFolder["folder_number"];
name: OfficeFolder["name"]; name: OfficeFolder["name"];
description: OfficeFolder["description"]; description: OfficeFolder["description"];
archived_description: OfficeFolder["archived_description"]; deed: {
status: OfficeFolder["status"]; deed_type: {
deed: OfficeFolder["deed"]; uid: DeedType["uid"];
office: OfficeFolder["office"];
office_folder_has_customers?: OfficeFolder["office_folder_has_customers"];
office_folder_has_stakeholder?: OfficeFolder["office_folder_has_stakeholder"];
documents?: OfficeFolder["documents"];
}; };
};
office: {
uid: Office["uid"];
};
office_folder_has_stakeholder: {
user_stakeholder: {
uid: User["uid"];
};
}[];
}
export type IPutFoldersParams = { export type IPutFoldersParams = {
uid?: OfficeFolder["uid"]; uid?: OfficeFolder["uid"];
@ -84,6 +89,7 @@ export default class Folders extends BaseSuperAdmin {
*/ */
public async post(body: any): Promise<OfficeFolder> { public async post(body: any): Promise<OfficeFolder> {
const url = new URL(this.baseURl); const url = new URL(this.baseURl);
console.log(body);
try { try {
return await this.postRequest<OfficeFolder>(url, body); return await this.postRequest<OfficeFolder>(url, body);
} catch (err) { } catch (err) {

View File

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

View File

@ -85,7 +85,7 @@ class DocumentNotaryClass extends React.Component<IPropsClass, IState> {
private onOpenDeletionModal(): void { private onOpenDeletionModal(): void {
if (!this.props.openDeletionModal) return; 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 { ECustomerStatus } from "le-coffre-resources/dist/Customer/Customer";
import { EFolderStatus } from "le-coffre-resources/dist/Customer/OfficeFolder"; 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 = { export const address: Address = {
uid: "a&2azedzaa3", uid: "a&2azedzaa3",
@ -72,7 +84,7 @@ export const docType: DocumentType = {
public_description: "Acte de naissance public description", public_description: "Acte de naissance public description",
private_description: "Acte de naissance private description", private_description: "Acte de naissance private description",
archived_at: new Date(), archived_at: new Date(),
office: office, // office: office,
}; };
export const identityDocType: DocumentType = { export const identityDocType: DocumentType = {
@ -83,7 +95,7 @@ export const identityDocType: DocumentType = {
public_description: "Carte d'identité public description", public_description: "Carte d'identité public description",
private_description: "Carte d'identité private description", private_description: "Carte d'identité private description",
archived_at: new Date(), archived_at: new Date(),
office: office, // office: office,
}; };
export const customer: Customer = { export const customer: Customer = {
@ -115,8 +127,6 @@ export const folder: OfficeFolder = {
archived_description: "Archived description", archived_description: "Archived description",
}; };
export const document: Document = { export const document: Document = {
uid: "fzeafergreztyzgrf", uid: "fzeafergreztyzgrf",
depositor: customer2_mock, depositor: customer2_mock,
@ -150,7 +160,7 @@ export const identityFile: File = {
created_at: new Date(), created_at: new Date(),
updated_at: new Date(), updated_at: new Date(),
document: document, 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 = { export const documentIdentity: Document = {

View File

@ -13,12 +13,12 @@ import { ActionMeta, MultiValue } from "react-select";
import BasePage from "../../Base"; import BasePage from "../../Base";
import classes from "./classes.module.scss"; 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 DeedTypes from "@Front/Api/LeCoffreApi/SuperAdmin/DeedTypes/DeedTypes";
import Users from "@Front/Api/LeCoffreApi/SuperAdmin/Users/Users"; import Users from "@Front/Api/LeCoffreApi/SuperAdmin/Users/Users";
import User from "le-coffre-resources/dist/Notary"; import User from "le-coffre-resources/dist/Notary";
import Folders from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders"; import Folders, { IPostFoldersParams } from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders";
import { EFolderStatus } from "le-coffre-resources/dist/Customer/OfficeFolder"; import { NextRouter, useRouter } from "next/router";
type IFormValues = { type IFormValues = {
folder_number: number; folder_number: number;
@ -29,6 +29,11 @@ type IFormValues = {
}; };
type IProps = {}; type IProps = {};
type IPropsClass = IProps & {
router: NextRouter;
};
type IState = { type IState = {
folder_access: string; folder_access: string;
formValues: IFormValues; formValues: IFormValues;
@ -37,8 +42,8 @@ type IState = {
collaborators: User[]; collaborators: User[];
collaboratorsOptions: IOption[]; collaboratorsOptions: IOption[];
}; };
export default class CreateFolder extends BasePage<IProps, IState> { class CreateFolderClass extends BasePage<IPropsClass, IState> {
public constructor(props: IProps) { public constructor(props: IPropsClass) {
super(props); super(props);
this.state = { this.state = {
@ -211,68 +216,46 @@ export default class CreateFolder extends BasePage<IProps, IState> {
[key: string]: any; [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, (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, * MOCK DATA
// ); */
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;
});
});
}
const usersMock = await Users.getInstance().get({ q: { include: { office_membership: true } } }); const usersMock = await Users.getInstance().get({ q: { include: { office_membership: true } } });
const userMock = usersMock[0]; const userMock = usersMock[0];
// -----
if (!selectedDeedTypeUid) return;
if (!userMock?.office_membership.uid) return;
values["deed"] = deed; let stakeholders = this.getStakeholders();
values["archived_description"] = ""; let test = stakeholders.map((stakeholder) => ({
values["status"] = EFolderStatus.LIVE; user_stakeholder: {
values["office"] = userMock?.office_membership; uid: stakeholder.user_stakeholder.uid,
values["office_folder_has_stakeholder"] = values["office_folder_has_stakeholders"] = office_folder_has_stakeholders; },
}));
const newobject = { const output: IPostFoldersParams = {
folder_number: "12312", folder_number: values["folder_number"],
name: "Mon folder", name: values["name"],
description: "dazdazf", description: values["description"],
deed: { deed: {
deed_type: { deed_type: {
uid: "neNTaiiNVp", uid: selectedDeedTypeUid.uid,
}, },
}, },
office: { office: {
uid: "R34T9DZ5ov", uid: userMock?.office_membership.uid,
}, },
office_folder_has_stakeholder: [ office_folder_has_stakeholder: test,
{
user_stakeholder: {
uid: "WYBnSyguqP",
},
},
],
}; };
console.log(newobject); console.log(output);
const created = await Folders.getInstance().post(newobject as any); const created = await Folders.getInstance().post(output);
console.log(">>> ", created); if (created) {
this.props.router.push(`/folders/${created.uid}`);
}
} }
private isFormSubmittable(): boolean { private isFormSubmittable(): boolean {
@ -297,4 +280,29 @@ export default class CreateFolder extends BasePage<IProps, IState> {
folder_access: e.target.value, 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} />;
} }