diff --git a/.ssh/id_rsa.pub b/.ssh/id_rsa.pub new file mode 100644 index 00000000..e1327d66 --- /dev/null +++ b/.ssh/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOfOFPvQNw5XguFuX1YNvED8ulP+tIA/5xw7LHcA0gRj3hwILCAEAjuDs+d13zCsnEb0yd+laT3PU9iRIKa28Tynu+sTjGDyfx8MX/HjJtbEzyd6jLn87uTvw/6lzg2y5ZDEa6PEqrPIv0KEhuq6HuU8qAA0nBpsTIAUTK3XR8qm3I6J9Rs1JyBjvIP5UeICApvoLmgHuz6mKdvoQ8qKDWamsL4pSc4Hr7HlQ8ITNhnyS8XMgQInU/I2TzT/I4Dxx5IeFUQ5KOfJJNgK1d+PByLSWUrn+eRXki8m1hjMiwGIehVAriFW1C309SEHxLHjQKUPXHSv4kH7zqjO+p3kY5gwp/lvsBRSnihj8s1lADsJlMqjnSLeIQ+sY2CNkmXXI8ABkzhuJKTGTl+8pzGGhIHzeU7e7lpSn3gLn4p217kIppHNAr6dZH9UaYbgnwVonwr5cLbatRPFyI1NfXKDyZtSYlGQxLQUt9KDrNvVTZzaTt3YwM/YCsRIADAagKosM= gisele-smartchain@MacBook-Pro-6.local diff --git a/Dockerfile.front b/Dockerfile.front new file mode 100644 index 00000000..11d63f6c --- /dev/null +++ b/Dockerfile.front @@ -0,0 +1,44 @@ +# Install dependencies only when needed +FROM node:19-alpine AS deps + +WORKDIR leCoffre-front + +COPY package.json ./ + +RUN apk update && apk add openssh-client git + +COPY id_rsa /root/.ssh/id_rsa +RUN chmod 600 ~/.ssh/id_rsa +RUN eval "$(ssh-agent -s)" && ssh-add /root/.ssh/id_rsa +RUN ssh-keyscan github.com smart-chain-fr/leCoffre-resources.git >> /root/.ssh/known_hosts + +RUN npm install --frozen-lockfile + +# Rebuild the source code only when needed +FROM node:19-alpine AS builder + +WORKDIR leCoffre-front + +COPY --from=deps leCoffre-front/node_modules ./node_modules +COPY --from=deps leCoffre-front/package.json package.json +COPY tsconfig.json tsconfig.json +COPY src src + +RUN npm run build + +# Production image, copy all the files and run next +FROM node:19-alpine AS production + +WORKDIR leCoffre-front + +RUN adduser -D lecoffreuser --uid 10000 && chown -R lecoffreuser . + +COPY public ./public +COPY --from=builder --chown=lecoffreuser leCoffre-front/node_modules ./node_modules +COPY --from=builder --chown=lecoffreuser leCoffre-front/.next ./.next +COPY --from=builder --chown=lecoffreuser leCoffre-front/package.json ./package.json + +USER lecoffreuser + +CMD ["npm", "run", "start"] +EXPOSE 3000 \ No newline at end of file diff --git a/src/front/Api/LeCoffreApi/SuperAdmin/Files/Files.ts b/src/front/Api/LeCoffreApi/SuperAdmin/Files/Files.ts index 69ec06a5..c3fe5580 100644 --- a/src/front/Api/LeCoffreApi/SuperAdmin/Files/Files.ts +++ b/src/front/Api/LeCoffreApi/SuperAdmin/Files/Files.ts @@ -1,7 +1,6 @@ import { File } from "le-coffre-resources/dist/SuperAdmin"; import BaseSuperAdmin from "../BaseSuperAdmin"; - // TODO Type get query params -> Where + inclue + orderby export interface IGetFilesparams { where?: {}; @@ -53,10 +52,9 @@ export default class Files extends BaseSuperAdmin { } public getUploadLink(uid: string): string { - return this.baseURl.concat(`/upload/${uid}`); + return this.baseURl.concat(`/download/${uid}`); } - public async getByUid(uid: string, q?: any): Promise { const url = new URL(this.baseURl.concat(`/${uid}`)); const query = { q }; diff --git a/src/front/Assets/Icons/green-check.svg b/src/front/Assets/Icons/green-check.svg new file mode 100644 index 00000000..343eb84b --- /dev/null +++ b/src/front/Assets/Icons/green-check.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/front/Components/DesignSystem/DepositDocument/classes.module.scss b/src/front/Components/DesignSystem/DepositDocument/classes.module.scss index b270f875..9bba001b 100644 --- a/src/front/Components/DesignSystem/DepositDocument/classes.module.scss +++ b/src/front/Components/DesignSystem/DepositDocument/classes.module.scss @@ -1,91 +1,108 @@ -.root { - padding: 24px; - background-color: var(--white); - border: 1px dashed #e7e7e7; +.container { - height: fit-content; - &[data-drag-over="true"] { - border: 1px dashed var(--grey); - } + .root { + padding: 24px; + background-color: var(--white); + border: 1px dashed #e7e7e7; - &.validated { - border: 1px dashed var(--green-flash); - } + height: fit-content; - .top-container { - display: flex; - align-items: center; - - .left { - margin-right: 28px; + &[data-drag-over="true"] { + border: 1px dashed var(--grey); } - .separator { - background-color: #939393; - width: 1px; - align-self: stretch; + &.validated { + border: 1px dashed var(--green-flash); } - .right { - margin-left: 18px; + .top-container { + display: flex; + align-items: center; - .refused-button { - font-size: 14px; - color: var(--re-hover); - margin-left: 8px; + .left { + margin-right: 28px; } - .title { + .separator { + background-color: #939393; + width: 1px; + align-self: stretch; + } + + .right { + margin-left: 18px; + + .validated { + color: var(--green-flash); + } + + .refused-button { + font-size: 14px; + color: var(--re-hover); + margin-left: 8px; + } + + .title { + display: flex; + align-items: center; + gap: 8px; + } + } + } + + .documents-container { + display: flex; + flex-direction: column; + gap: 16px; + margin-top: 16px; + + .file-container { display: flex; align-items: center; - gap: 8px; + justify-content: space-between; + + .left-part { + display: flex; + align-items: center; + gap: 8px; + .loader { + width: 32px; + height: 32px; + } + } + + .cross { + cursor: pointer; + } } } + + .bottom-container { + margin-top: 16px; + + .add-button { + .add-document { + display: flex; + align-items: center; + gap: 14px; + } + } + } + + .text { + margin-bottom: 12px; + } } - .documents-container { + .modal-content { display: flex; flex-direction: column; gap: 16px; - margin-top: 16px; - - .file-container { - display: flex; - align-items: center; - justify-content: space-between; - - .left-part { - display: flex; - align-items: center; - gap: 8px; - } - - .cross { - cursor: pointer; - } - } } - .bottom-container { - margin-top: 16px; - - .add-button { - .add-document { - display: flex; - align-items: center; - gap: 14px; - } - } + .error-message { + color: var(--red-flash); + margin-top: 8px; } - - .text { - margin-bottom: 12px; - } -} - -.modal-content{ - display: flex; - flex-direction: column; - gap: 16px; } \ No newline at end of file diff --git a/src/front/Components/DesignSystem/DepositDocument/index.tsx b/src/front/Components/DesignSystem/DepositDocument/index.tsx index 80210dde..2a85bbfa 100644 --- a/src/front/Components/DesignSystem/DepositDocument/index.tsx +++ b/src/front/Components/DesignSystem/DepositDocument/index.tsx @@ -15,6 +15,8 @@ import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document"; import classNames from "classnames"; import Confirm from "../Modal/Confirm"; import InputField from "../Form/Elements/InputField"; +import GreenCheckIcon from "@Assets/Icons/green-check.svg"; +import Loader from "../Loader"; type IProps = { defaultFiles?: FileCustomer[]; @@ -27,6 +29,7 @@ type IFile = { file: File; uid: string; archived: Date | null; + fileName: string; }; type IState = { @@ -35,6 +38,7 @@ type IState = { currentFiles?: FileCustomer[]; refusedReason?: string; isShowRefusedReasonModalVisible: boolean; + loading: boolean; }; export default class DepositDocument extends React.Component { @@ -50,6 +54,7 @@ export default class DepositDocument extends React.Component { currentFiles: this.props.defaultFiles, refusedReason: "", isShowRefusedReasonModalVisible: false, + loading: false, }; this.addDocument = this.addDocument.bind(this); @@ -65,87 +70,116 @@ export default class DepositDocument extends React.Component { public override render(): JSX.Element { return ( -
- -
-
- Deposit document -
-
-
- - {this.props.document.document_type?.name}{" "} - {this.props.document.document_type?.public_description !== "" && ( - - )} - - {this.props.document.document_status !== EDocumentStatus.VALIDATED && ( - - Sélectionnez des documents .jpg, .pdf ou .png +
+
+ +
+
+ Deposit document +
+
+
+ +
+ {this.props.document.document_type?.name} +
+ {this.props.document.document_type?.public_description !== "" && + this.props.document.document_status !== EDocumentStatus.VALIDATED && ( + + )} + {this.props.document.document_status === EDocumentStatus.VALIDATED && ( + Document check + )}
- )} - {this.props.document.document_history?.map((history) => ( -
{this.renderDocumentHistory(history)}
- ))} + {this.props.document.document_status !== EDocumentStatus.VALIDATED && ( + + Sélectionnez des documents .jpg, .pdf ou .png + + )} + {this.props.document.document_history?.map((history) => ( +
{this.renderDocumentHistory(history)}
+ ))} +
-
- {this.props.document.document_status !== EDocumentStatus.VALIDATED && this.state.files.length > 0 && ( -
- {this.state.files.map((file) => { - const fileObj = file.file; - if (file.archived) return; - return ( -
+ {this.props.document.document_status !== EDocumentStatus.VALIDATED && this.state.files.length > 0 && ( +
+ {this.state.files.map((file) => { + const fileObj = file.file; + if (file.archived) return; + return ( +
+
+ Document check + + {this.shortName(file.fileName || fileObj.name)} + +
+ Cross icon +
+ ); + })} + {this.state.loading && ( +
- Document check +
+ +
- {this.shortName(fileObj.name)} + Chargement...
- Cross icon +
- ); - })} -
- )} - {this.props.document.document_status !== EDocumentStatus.VALIDATED && ( -
-
+ )} + {this.props.document.document_status !== EDocumentStatus.VALIDATED && ( +
+ +
+ )} + +
+ + Votre document a été refusé pour la raison suivante : - -
+ +
+ +
+ {this.props.document.document_status === EDocumentStatus.REFUSED && ( + + Ce document n’est pas conforme. Veuillez le déposer à nouveau. + )} - -
- - Votre document a été refusé pour la raison suivante : - - -
-
); } @@ -157,6 +191,7 @@ export default class DepositDocument extends React.Component { index: this.index++, file: new File([""], file.file_path ?? "", {}), uid: file.uid!, + fileName: file.file_name, archived: file.archived_at ? new Date(file.archived_at) : null, })), }); @@ -259,12 +294,15 @@ export default class DepositDocument extends React.Component { formData.append("file", file, file.name); const query = JSON.stringify({ document: { uid: this.props.document.uid } }); formData.append("q", query); - + this.setState({ + loading: true, + }); const newFile = await Files.getInstance().post(formData); const files = this.state.currentFiles ? [...this.state.currentFiles, newFile] : [newFile]; this.setState({ currentFiles: files, + loading: false, files: [ ...this.state.files, { @@ -272,6 +310,7 @@ export default class DepositDocument extends React.Component { file: file, uid: newFile.uid!, archived: null, + fileName: newFile?.file_name ?? "", }, ], }); diff --git a/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx b/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx index 986d573e..5e4bfbf3 100644 --- a/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx +++ b/src/front/Components/DesignSystem/Document/DocumentNotary/index.tsx @@ -58,9 +58,13 @@ class DocumentNotaryClass extends React.Component { return fileName; } } else { - const archivedFilesLenght = documentFiles.filter((file) => file.archived_at).length; - const documentFileLenght = documentFiles.length - archivedFilesLenght; - return `${documentFileLenght} documents déposés`; + const archivedFilesLength = documentFiles.filter((file) => file.archived_at).length; + const documentFileLength = documentFiles.length - archivedFilesLength; + if(this.props.document.document_status === EDocumentStatus.ASKED || this.props.document.document_status === EDocumentStatus.REFUSED){ + return 'Aucun document déposé'; + } + + return `${documentFileLength} documents déposés`; } } else { return "Aucun document déposé"; diff --git a/src/front/Components/DesignSystem/FilePreview/index.tsx b/src/front/Components/DesignSystem/FilePreview/index.tsx index 37ad48e0..abc4f51b 100644 --- a/src/front/Components/DesignSystem/FilePreview/index.tsx +++ b/src/front/Components/DesignSystem/FilePreview/index.tsx @@ -5,12 +5,14 @@ import classes from "./classes.module.scss"; type IProps = { href: string; + fileName?: string; }; type IState = {}; export default class FilePreview extends React.Component { override render() { - const type = this.props.href.split(".").pop(); + let type = this.props.href.split(".").pop(); + if(this.props.fileName) type = this.props.fileName.split(".").pop(); return (
{!type && ( @@ -18,14 +20,12 @@ export default class FilePreview extends React.Component { Erreur lors du chargement du fichier )} - {type && ( -
- {type === "pdf" && ( +
+ {type?.toLowerCase() === "pdf" && ( )} - {type !== "pdf" && File preview} + {type?.toLowerCase() !== "pdf" && File preview}
- )}
); } diff --git a/src/front/Components/DesignSystem/FolderList/classes.module.scss b/src/front/Components/DesignSystem/FolderList/classes.module.scss index b6ca5e4f..d8013f29 100644 --- a/src/front/Components/DesignSystem/FolderList/classes.module.scss +++ b/src/front/Components/DesignSystem/FolderList/classes.module.scss @@ -2,7 +2,11 @@ .root { height: calc(100vh - 290px); - overflow: scroll; + overflow-y: scroll; + + &.archived{ + height: calc(100vh - 220px); + } .active { background-color: var(--grey-medium); diff --git a/src/front/Components/DesignSystem/FolderList/index.tsx b/src/front/Components/DesignSystem/FolderList/index.tsx index 871eb511..a472a435 100644 --- a/src/front/Components/DesignSystem/FolderList/index.tsx +++ b/src/front/Components/DesignSystem/FolderList/index.tsx @@ -7,6 +7,7 @@ import React from "react"; import FolderContainer from "../FolderContainer"; import classes from "./classes.module.scss"; +import classNames from "classnames"; type IProps = { folders: IDashBoardFolder[]; @@ -26,7 +27,7 @@ class FolderListClass extends React.Component { ? Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.pages.FolderInformation.props.path : Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path; public override render(): JSX.Element { - return
{this.renderFolders()}
; + return
{this.renderFolders()}
; } private renderFolders(): JSX.Element[] { diff --git a/src/front/Components/DesignSystem/FolderListContainer/index.tsx b/src/front/Components/DesignSystem/FolderListContainer/index.tsx index 521122ba..2063cba5 100644 --- a/src/front/Components/DesignSystem/FolderListContainer/index.tsx +++ b/src/front/Components/DesignSystem/FolderListContainer/index.tsx @@ -1,4 +1,5 @@ import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; +import Module from "@Front/Config/Module"; import Link from "next/link"; import React from "react"; @@ -6,7 +7,6 @@ import Button from "../Button"; import FolderList from "../FolderList"; import SearchBar from "../SearchBar"; import classes from "./classes.module.scss"; -import Module from "@Front/Config/Module"; type IProps = { folders: IDashBoardFolder[]; @@ -44,13 +44,13 @@ export default class FolderListContainer extends React.Component />
-
- {!this.props.isArchived && ( + {!this.props.isArchived && ( +
- )} -
+
+ )}
); } diff --git a/src/front/Components/DesignSystem/Header/index.tsx b/src/front/Components/DesignSystem/Header/index.tsx index e90524bc..d992c01e 100644 --- a/src/front/Components/DesignSystem/Header/index.tsx +++ b/src/front/Components/DesignSystem/Header/index.tsx @@ -10,6 +10,9 @@ import BurgerMenu from "./BurgerMenu"; import WindowStore from "@Front/Stores/WindowStore"; import Module from "@Front/Config/Module"; import Head from "next/head"; +import { useRouter } from "next/router"; +import LogoCielNatureIcon from "./logo-ciel-notaires.jpeg"; + enum EHeaderOpeningState { OPEN = "open", CLOSED = "closed", @@ -19,6 +22,11 @@ enum EHeaderOpeningState { type IProps = { isUserConnected: boolean; }; + +type IPropsClass = IProps & { + isOnCustomerLoginPage: boolean; +}; + type IState = { open: EHeaderOpeningState; isBurgerMenuOpen: boolean; @@ -26,11 +34,11 @@ type IState = { isProfileMenuOpen: boolean; }; -export default class Header extends React.Component { +class HeaderClass extends React.Component { private onWindowResize = () => {}; private headerBreakpoint = 1300; - constructor(props: IProps) { + constructor(props: IPropsClass) { super(props); this.state = { @@ -85,6 +93,7 @@ export default class Header extends React.Component {
)} + {this.props.isOnCustomerLoginPage && ciel-nature}
); } @@ -126,3 +135,10 @@ export default class Header extends React.Component { this.setState({ isProfileMenuOpen: false }); } } + +export default function Header(props: IProps) { + const router = useRouter(); + const { pathname } = router; + let isActive = Module.getInstance().get().modules.pages.CustomersLogin.props.path === pathname; + return ; +} diff --git a/src/front/Components/DesignSystem/Header/logo-ciel-notaires.jpeg b/src/front/Components/DesignSystem/Header/logo-ciel-notaires.jpeg new file mode 100644 index 00000000..1dfd9047 Binary files /dev/null and b/src/front/Components/DesignSystem/Header/logo-ciel-notaires.jpeg differ diff --git a/src/front/Components/DesignSystem/Loader/classes.module.scss b/src/front/Components/DesignSystem/Loader/classes.module.scss index 37403d86..e2169b11 100644 --- a/src/front/Components/DesignSystem/Loader/classes.module.scss +++ b/src/front/Components/DesignSystem/Loader/classes.module.scss @@ -1,16 +1,15 @@ -@import "@Themes/constants.scss"; - -.loader { - animation: spin 2s linear infinite; - width: 100%; - height: 100%; - - @keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } +@keyframes s2 { + to { + transform: rotate(1turn); } } + +.root { + width: 100%; + height: 100%; + border-radius: 50%; + border: 8px solid; + border-color: var(--grey-soft); + border-right-color: var(--blue-soft); + animation: s2 1s infinite linear; +} diff --git a/src/front/Components/DesignSystem/Loader/index.tsx b/src/front/Components/DesignSystem/Loader/index.tsx index 09b63940..e2e13e26 100644 --- a/src/front/Components/DesignSystem/Loader/index.tsx +++ b/src/front/Components/DesignSystem/Loader/index.tsx @@ -1,14 +1,11 @@ import React from "react"; -import LoaderIcon from "@Assets/Icons/loader.svg"; import classes from "./classes.module.scss"; -import Image from "next/image"; interface IProps { className?: string; } export default class Loader extends React.Component { public override render(): JSX.Element { - return {"Loader"}; - // ; + return
; } } diff --git a/src/front/Components/DesignSystem/UserFolder/index.tsx b/src/front/Components/DesignSystem/UserFolder/index.tsx index b3ce9b9d..2a95a9b8 100644 --- a/src/front/Components/DesignSystem/UserFolder/index.tsx +++ b/src/front/Components/DesignSystem/UserFolder/index.tsx @@ -49,7 +49,10 @@ export default class UserFolder extends React.Component { this.deleteAskedDocument = this.deleteAskedDocument.bind(this); } public override render(): JSX.Element { - const documentsAsked: Document[] | null = this.getDocumentsByStatus("ASKED"); + const documentsAsked: Document[] | null = [ + ...(this.getDocumentsByStatus("ASKED") ?? []), + ...(this.getDocumentsByStatus("REFUSED") ?? []), + ]; const otherDocuments: Document[] | null = this.getValidatedAndPendindDocuments(); const redirectPath = Module.getInstance() .get() @@ -111,9 +114,7 @@ export default class UserFolder extends React.Component { Demander un autre document{" "} - +
)}
diff --git a/src/front/Components/Layouts/DesignSystem/dummyData.ts b/src/front/Components/Layouts/DesignSystem/dummyData.ts index 6007218c..449e321f 100644 --- a/src/front/Components/Layouts/DesignSystem/dummyData.ts +++ b/src/front/Components/Layouts/DesignSystem/dummyData.ts @@ -82,8 +82,8 @@ export const docType: DocumentType = { uid: "fezezfazegezrgrezg", created_at: new Date(), updated_at: new Date(), - public_description: "Acte de naissance public description", - private_description: "Acte de naissance private description", + public_description: "", + private_description: "", archived_at: new Date(), office: office, }; diff --git a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx index c8835c17..6131e875 100644 --- a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx +++ b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx @@ -1,4 +1,7 @@ import PlusIcon from "@Assets/Icons/plus.svg"; +import Deeds from "@Front/Api/LeCoffreApi/SuperAdmin/Deeds/Deeds"; +import Documents from "@Front/Api/LeCoffreApi/SuperAdmin/Documents/Documents"; +import DocumentTypes from "@Front/Api/LeCoffreApi/SuperAdmin/DocumentTypes/DocumentTypes"; import Folders from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders"; import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; import CheckBox from "@Front/Components/DesignSystem/CheckBox"; @@ -9,16 +12,13 @@ import { IOption } from "@Front/Components/DesignSystem/Select"; import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; import BackArrow from "@Front/Components/Elements/BackArrow"; import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; +import Module from "@Front/Config/Module"; +import { OfficeFolder } from "le-coffre-resources/dist/Customer"; import { NextRouter, useRouter } from "next/router"; import React from "react"; import BasePage from "../../Base"; import classes from "./classes.module.scss"; -import Documents from "@Front/Api/LeCoffreApi/SuperAdmin/Documents/Documents"; -import Module from "@Front/Config/Module"; -import { OfficeFolder } from "le-coffre-resources/dist/Customer"; -import Deeds from "@Front/Api/LeCoffreApi/SuperAdmin/Deeds/Deeds"; -import DocumentTypes from "@Front/Api/LeCoffreApi/SuperAdmin/DocumentTypes/DocumentTypes"; type IProps = {}; type IPropsClass = IProps & { @@ -57,10 +57,13 @@ class AskDocumentsClass extends BasePage { } public override render(): JSX.Element { + const backUrl = Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.folderUid); return ( {}}>
- + Demander des documents @@ -87,9 +90,11 @@ class AskDocumentsClass extends BasePage {
- + + +
@@ -142,6 +147,12 @@ class AskDocumentsClass extends BasePage { }, }, office: true, + documents: { + include: { + depositor: true, + document_type: true, + }, + }, }, }); if (!folder) return; @@ -155,25 +166,29 @@ class AskDocumentsClass extends BasePage { } private async getAvailableDocuments(folder: OfficeFolder): Promise { - const documentTypes = await Deeds.getInstance().getByUid(folder.deed!.uid!, { - q: { - deed_has_document_types: { - include: { - document_type: true, - }, - }, - }, + const userDocumentTypesUids = folder + .documents!.filter((document) => document.depositor!.uid! === this.props.customerUid!) + .map((document) => { + return document.document_type!.uid!; + }); + const documentTypes = folder.deed!.deed_has_document_types!.filter((documentType) => { + if (userDocumentTypesUids.includes(documentType.document_type!.uid!)) return false; + return true; }); if (!documentTypes) return []; - const documentTypesOptions: IOption[] = documentTypes.deed_has_document_types!.map((documentType) => { - return { - label: documentType.document_type!.name!, - value: documentType.document_type!.uid!, - description: documentType.document_type!.private_description!, - }; - }); + const documentTypesOptions: IOption[] = documentTypes + .filter((documentType) => { + return true; + }) + .map((documentType) => { + return { + label: documentType.document_type!.name!, + value: documentType.document_type!.uid!, + description: documentType.document_type!.private_description!, + }; + }); return documentTypesOptions; } diff --git a/src/front/Components/Layouts/Folder/CreateFolder/background-image.jpeg b/src/front/Components/Layouts/Folder/CreateFolder/background-image.jpeg new file mode 100644 index 00000000..5e9b36e1 Binary files /dev/null and b/src/front/Components/Layouts/Folder/CreateFolder/background-image.jpeg differ diff --git a/src/front/Components/Layouts/Folder/CreateFolder/index.tsx b/src/front/Components/Layouts/Folder/CreateFolder/index.tsx index 205c61af..353784fc 100644 --- a/src/front/Components/Layouts/Folder/CreateFolder/index.tsx +++ b/src/front/Components/Layouts/Folder/CreateFolder/index.tsx @@ -1,4 +1,3 @@ -import RightImage from "@Front/Assets/images/create-folder/right-image.png"; import Button from "@Front/Components/DesignSystem/Button"; import Form from "@Front/Components/DesignSystem/Form"; import InputField from "@Front/Components/DesignSystem/Form/Elements/InputField"; @@ -19,6 +18,7 @@ import Users from "@Front/Api/LeCoffreApi/SuperAdmin/Users/Users"; import User from "le-coffre-resources/dist/Notary"; import Folders, { IPostFoldersParams } from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders"; import { NextRouter, useRouter } from "next/router"; +import BackgroundImage from "./background-image.jpeg"; type IFormValues = { folder_number: string; @@ -73,7 +73,7 @@ class CreateFolderClass extends BasePage { public override render(): JSX.Element { return ( - +
@@ -137,11 +137,13 @@ class CreateFolderClass extends BasePage { const deedTypes = await DeedTypes.getInstance().get({ q: {} }); // TODO SETUP userStore and get the user's office membership -> Replace IwJ70M471c by the user's office membership uid - const usersMock = await Users.getInstance().get( { include: { office_membership: true } }); + const usersMock = await Users.getInstance().get({ include: { office_membership: true } }); const userMock = usersMock[0]; // ------------------- - const collaborators = await Users.getInstance().get( { where: { office_membership: { uid: userMock?.office_membership?.uid } }, include: { contact: true } }, - ); + const collaborators = await Users.getInstance().get({ + where: { office_membership: { uid: userMock?.office_membership?.uid } }, + include: { contact: true }, + }); this.setState({ deedTypes, deedTypesOptions: this.mapDeedOptions(deedTypes), @@ -222,7 +224,7 @@ class CreateFolderClass extends BasePage { /** * MOCK DATA */ - const usersMock = await Users.getInstance().get( { include: { office_membership: true }}); + const usersMock = await Users.getInstance().get({ include: { office_membership: true } }); const userMock = usersMock[0]; // ----- if (!selectedDeedTypeUid) return; diff --git a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx index 402b8a52..589eadbd 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx @@ -123,7 +123,7 @@ class FolderInformationClass extends BasePage { Informations du dossier
- Vous n'avez aucun dossier archivés + Sélectionnez un dossier
diff --git a/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx b/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx index 68b41f2e..1ac9c26d 100644 --- a/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx +++ b/src/front/Components/Layouts/Folder/ViewDocuments/index.tsx @@ -74,7 +74,7 @@ class ViewDocumentsClass extends BasePage { {this.state.document && this.state.document.files && this.state.selectedFile && (
- {this.state.document.document_type?.name} + {this.state.document.folder?.name} {this.state.document.document_type?.name} @@ -91,6 +91,7 @@ class ViewDocumentsClass extends BasePage {
@@ -104,7 +105,7 @@ class ViewDocumentsClass extends BasePage { )}
- {this.state.document?.document_type?.name === "Carte d'identité" && ( + {this.state.document?.document_type?.name === "Document d'identité" && (
@@ -148,7 +149,7 @@ class ViewDocumentsClass extends BasePage { Anchoring animation
- +
)} @@ -188,6 +189,7 @@ class ViewDocumentsClass extends BasePage { const document = await Documents.getInstance().getByUid(this.props.documentUid, { files: true, document_type: true, + folder: true, }); this.setState({ document, diff --git a/src/front/Components/Layouts/Folder/index.tsx b/src/front/Components/Layouts/Folder/index.tsx index ce73a13d..89aed8ef 100644 --- a/src/front/Components/Layouts/Folder/index.tsx +++ b/src/front/Components/Layouts/Folder/index.tsx @@ -28,7 +28,7 @@ export default class Folder extends BasePage { Informations du dossier
- Vous n'avez aucun dossier archivés + Sélectionnez un dossier
diff --git a/src/front/Components/Layouts/FolderArchived/FolderInformation/index.tsx b/src/front/Components/Layouts/FolderArchived/FolderInformation/index.tsx index d17634ae..36d8aafc 100644 --- a/src/front/Components/Layouts/FolderArchived/FolderInformation/index.tsx +++ b/src/front/Components/Layouts/FolderArchived/FolderInformation/index.tsx @@ -93,7 +93,7 @@ class FolderInformationClass extends BasePage { Informations du dossier
- Vous n'avez aucun dossier archivés + Vous n'avez aucun dossier archivé
diff --git a/src/front/Components/Layouts/FolderArchived/index.tsx b/src/front/Components/Layouts/FolderArchived/index.tsx index f411b087..68c3b4a1 100644 --- a/src/front/Components/Layouts/FolderArchived/index.tsx +++ b/src/front/Components/Layouts/FolderArchived/index.tsx @@ -31,7 +31,7 @@ export default class Folder extends BasePage { Informations du dossier
- Vous n'avez aucun dossier archivés + Vous n'avez aucun dossier archivé
diff --git a/src/front/Components/Layouts/Login/index.tsx b/src/front/Components/Layouts/Login/index.tsx index 59a9cc2f..d404a76e 100644 --- a/src/front/Components/Layouts/Login/index.tsx +++ b/src/front/Components/Layouts/Login/index.tsx @@ -3,7 +3,7 @@ import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; import BasePage from "../Base"; import classes from "./classes.module.scss"; import CoffreIcon from "@Assets/Icons/coffre.svg"; -import LandingImage from "./landing-connect.png"; +import LandingImage from "./landing-connect.jpeg"; import Image from "next/image"; import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage"; import { FrontendVariables } from "@Front/Config/VariablesFront"; diff --git a/src/front/Components/Layouts/Login/landing-connect.jpeg b/src/front/Components/Layouts/Login/landing-connect.jpeg new file mode 100644 index 00000000..789e0ef3 Binary files /dev/null and b/src/front/Components/Layouts/Login/landing-connect.jpeg differ diff --git a/src/front/Components/Layouts/Login/landing-connect.png b/src/front/Components/Layouts/Login/landing-connect.png deleted file mode 100644 index 5fd6f853..00000000 Binary files a/src/front/Components/Layouts/Login/landing-connect.png and /dev/null differ diff --git a/src/front/Components/Layouts/LoginCustomer/index.tsx b/src/front/Components/Layouts/LoginCustomer/index.tsx index fe5938c8..7acb9c36 100644 --- a/src/front/Components/Layouts/LoginCustomer/index.tsx +++ b/src/front/Components/Layouts/LoginCustomer/index.tsx @@ -1,7 +1,7 @@ import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; import BasePage from "../Base"; import classes from "./classes.module.scss"; -import LandingImage from "./landing-connect.png"; +import LandingImage from "../Login/landing-connect.jpeg"; import Image from "next/image"; import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage"; import FranceConnectIcon from "./france-connect.svg"; @@ -42,7 +42,9 @@ export default class LoginCustomer extends BasePage { // variables.BACK_API_PROTOCOL + variables.FRONT_APP_HOST + (variables.FRONT_APP_PORT ? ":" + variables.FRONT_APP_PORT : ""); const authorizeEndPoint = variables.FC_AUTHORIZE_ENDPOINT; const clientId = variables.FC_CLIENT_ID; - const url = `${authorizeEndPoint}?client_id=${clientId}&redirect_uri=http://localhost:8080/login-callback&scope=openid&response_type=code&state=${cryptoRandomString({length: 64})}&nonce=${cryptoRandomString({length: 64})}&acr_values=eidas1`; + const url = `${authorizeEndPoint}?client_id=${clientId}&redirect_uri=http://localhost:8080/login-callback&scope=openid&response_type=code&state=${cryptoRandomString( + { length: 64 }, + )}&nonce=${cryptoRandomString({ length: 64 })}&acr_values=eidas1`; window.location.assign(url); } } diff --git a/src/front/Components/Layouts/LoginCustomer/landing-connect.png b/src/front/Components/Layouts/LoginCustomer/landing-connect.png deleted file mode 100644 index 5fd6f853..00000000 Binary files a/src/front/Components/Layouts/LoginCustomer/landing-connect.png and /dev/null differ diff --git a/src/front/Components/Layouts/PageNotFound/index.tsx b/src/front/Components/Layouts/PageNotFound/index.tsx index 75b16d02..bdbd778f 100644 --- a/src/front/Components/Layouts/PageNotFound/index.tsx +++ b/src/front/Components/Layouts/PageNotFound/index.tsx @@ -2,15 +2,15 @@ import Button from "@Front/Components/DesignSystem/Button"; import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; import Module from "@Front/Config/Module"; import Link from "next/link"; -import RightImage from "@Assets/images/create-folder/right-image.png"; import BasePage from "../Base"; import classes from "./classes.module.scss"; import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage"; +import backgroundImage from "../Folder/CreateFolder/background-image.jpeg"; export default class PageNotFound extends BasePage { public override render(): JSX.Element { return ( - +
Erreur 404 diff --git a/src/front/Config/Module/development.json b/src/front/Config/Module/development.json index 882bd5dd..740f6ee9 100644 --- a/src/front/Config/Module/development.json +++ b/src/front/Config/Module/development.json @@ -24,6 +24,13 @@ "labelKey": "design_system" } }, + "CustomersLogin": { + "enabled": true, + "props": { + "path": "/customers/login", + "labelKey": "customer_login" + } + }, "Folder": { "enabled": true, "props": { diff --git a/src/front/Config/Module/preprod.json b/src/front/Config/Module/preprod.json index 882bd5dd..740f6ee9 100644 --- a/src/front/Config/Module/preprod.json +++ b/src/front/Config/Module/preprod.json @@ -24,6 +24,13 @@ "labelKey": "design_system" } }, + "CustomersLogin": { + "enabled": true, + "props": { + "path": "/customers/login", + "labelKey": "customer_login" + } + }, "Folder": { "enabled": true, "props": { diff --git a/src/front/Config/Module/production.json b/src/front/Config/Module/production.json index 882bd5dd..740f6ee9 100644 --- a/src/front/Config/Module/production.json +++ b/src/front/Config/Module/production.json @@ -24,6 +24,13 @@ "labelKey": "design_system" } }, + "CustomersLogin": { + "enabled": true, + "props": { + "path": "/customers/login", + "labelKey": "customer_login" + } + }, "Folder": { "enabled": true, "props": { diff --git a/src/front/Config/Module/staging.json b/src/front/Config/Module/staging.json index 882bd5dd..740f6ee9 100644 --- a/src/front/Config/Module/staging.json +++ b/src/front/Config/Module/staging.json @@ -24,6 +24,13 @@ "labelKey": "design_system" } }, + "CustomersLogin": { + "enabled": true, + "props": { + "path": "/customers/login", + "labelKey": "customer_login" + } + }, "Folder": { "enabled": true, "props": {