import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; import Button, { EButtonStyleType, EButtonVariant } from "@Front/Components/DesignSystem/Button"; import Form from "@Front/Components/DesignSystem/Form"; import Select, { IOption } from "@Front/Components/DesignSystem/Form/SelectField"; import TextField from "@Front/Components/DesignSystem/Form/TextField"; import Typography, { ETypo } from "@Front/Components/DesignSystem/Typography"; import BackArrow from "@Front/Components/Elements/BackArrow"; import Module from "@Front/Config/Module"; import { Deed, OfficeFolder } from "le-coffre-resources/dist/Notary"; import Link from "next/link"; import { useRouter } from "next/router"; import backgroundImage from "@Assets/images/background_refonte.svg"; import classes from "./classes.module.scss"; import DateField from "@Front/Components/DesignSystem/Form/DateField"; import { ValidationError } from "class-validator/types/validation/ValidationError"; import { useEffect, useState } from "react"; import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage"; import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField"; import { isArray } from "class-validator"; export default function UpdateFolderMetadata() { const router = useRouter(); const [selectedFolder, setSelectedFolder] = useState(null); const [validationError, setValidationError] = useState([]); let { folderUid } = router.query; const onFormSubmit = async ( e: React.FormEvent | null, values: { [key: string]: string; }, ) => { if (!folderUid || isArray(folderUid)) return; const newValues = OfficeFolder.hydrate({ ...values, deed: Deed.hydrate({ uid: values["deed"], }), }); try { await newValues.validateOrReject?.({ groups: ["updateFolder"], forbidUnknownValues: false }); } catch (validationErrors) { setValidationError(validationErrors as ValidationError[]); return; } try { await Folders.getInstance().put(folderUid, newValues); const url = Module.getInstance() .get() .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", folderUid); router.push(url); } catch (backError) { if (!Array.isArray(backError)) return; setValidationError(backError); return; } }; useEffect(() => { if (!folderUid || isArray(folderUid)) return; const query = { q: { deed: { include: { deed_type: true } }, office: true, customers: { include: { contact: true } }, }, }; Folders.getInstance() .getByUid(folderUid, query) .then((folder) => setSelectedFolder(folder)); }, [folderUid]); const backwardPath = Module.getInstance() .get() .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", selectedFolder?.uid!); const deedOption = { label: selectedFolder?.deed?.deed_type?.name, value: selectedFolder?.deed?.deed_type?.uid, } as IOption; const openingDate = new Date(selectedFolder?.created_at ?? ""); if (!selectedFolder?.created_at) return <>; const defaultValue = openingDate.toISOString().split("T")[0]; return (
Modifier les informations du dossier
error.property === "name")} /> error.property === "folder_number")} />