Merge branch 'dev' into staging
This commit is contained in:
commit
0d58e6b5ae
@ -2,6 +2,21 @@ import { DeedType } from "le-coffre-resources/dist/Admin";
|
|||||||
|
|
||||||
import BaseAdmin from "../BaseAdmin";
|
import BaseAdmin from "../BaseAdmin";
|
||||||
|
|
||||||
|
export type IPutDeedTypesParams = {
|
||||||
|
uid?: DeedType["uid"];
|
||||||
|
name?: DeedType["name"];
|
||||||
|
description?: DeedType["description"];
|
||||||
|
deed?: DeedType["deed"];
|
||||||
|
office?: DeedType["office"];
|
||||||
|
archived_at?: DeedType["archived_at"];
|
||||||
|
document_types?: DeedType["document_types"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type IPostDeedTypesParams = {
|
||||||
|
name?: DeedType["name"];
|
||||||
|
description?: DeedType["description"];
|
||||||
|
};
|
||||||
|
|
||||||
export type IGetDeedTypesParams = {
|
export type IGetDeedTypesParams = {
|
||||||
where?: {};
|
where?: {};
|
||||||
include?: {};
|
include?: {};
|
||||||
@ -46,4 +61,34 @@ export default class DeedTypes extends BaseAdmin {
|
|||||||
return Promise.reject(err);
|
return Promise.reject(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async put(uid: string, body: IPutDeedTypesParams) {
|
||||||
|
const url = new URL(this.baseURl.concat(`/${uid}`));
|
||||||
|
try {
|
||||||
|
return await this.putRequest<DeedType>(url, body);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async post(body: IPostDeedTypesParams) {
|
||||||
|
const url = new URL(this.baseURl);
|
||||||
|
try {
|
||||||
|
return await this.postRequest<DeedType>(url, body);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async delete(uid: string) {
|
||||||
|
const url = new URL(this.baseURl);
|
||||||
|
try {
|
||||||
|
return await this.deleteRequest<DeedType>(url);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ export type IGetRolesParams = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type IPutRoleParams = {
|
export type IPutRoleParams = {
|
||||||
|
uid: OfficeRole["uid"];
|
||||||
rules: OfficeRole["rules"];
|
rules: OfficeRole["rules"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
83
src/front/Api/LeCoffreApi/Admin/Roles/Roles.ts
Normal file
83
src/front/Api/LeCoffreApi/Admin/Roles/Roles.ts
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
import { Role } from "le-coffre-resources/dist/Admin";
|
||||||
|
|
||||||
|
import BaseAdmin from "../BaseAdmin";
|
||||||
|
|
||||||
|
export type IGetRolesParams = {
|
||||||
|
where?: {};
|
||||||
|
include?: {};
|
||||||
|
select?: {};
|
||||||
|
};
|
||||||
|
|
||||||
|
export type IPutRoleParams = {
|
||||||
|
uid: Role["uid"];
|
||||||
|
rules: Role["rules"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export default class Roles extends BaseAdmin {
|
||||||
|
private static instance: Roles;
|
||||||
|
private readonly baseURl = this.namespaceUrl.concat("/roles");
|
||||||
|
|
||||||
|
private constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static getInstance() {
|
||||||
|
if (!this.instance) {
|
||||||
|
return new Roles();
|
||||||
|
} else {
|
||||||
|
return this.instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async get(q?: IGetRolesParams): Promise<Role[]> {
|
||||||
|
const url = new URL(this.baseURl);
|
||||||
|
if (q) {
|
||||||
|
const query = { q };
|
||||||
|
Object.entries(query).forEach(([key, value]) => url.searchParams.set(key, JSON.stringify(value)));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return await this.getRequest<Role[]>(url);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async getOne(q?: IGetRolesParams): Promise<Role | null> {
|
||||||
|
const url = new URL(this.baseURl);
|
||||||
|
if (q) {
|
||||||
|
const query = { q };
|
||||||
|
Object.entries(query).forEach(([key, value]) => url.searchParams.set(key, JSON.stringify(value)));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await this.getRequest<Role[]>(url);
|
||||||
|
if (!res) return null;
|
||||||
|
if (res.length > 1) throw new Error("More than one role found");
|
||||||
|
return res[0] ? res[0] : null;
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async getByUid(uid: string, q?: any): Promise<Role> {
|
||||||
|
const url = new URL(this.baseURl.concat(`/${uid}`));
|
||||||
|
if (q) Object.entries(q).forEach(([key, value]) => url.searchParams.set(key, JSON.stringify(value)));
|
||||||
|
try {
|
||||||
|
return await this.getRequest<Role>(url);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async put(uid: string, body: IPutRoleParams): Promise<Role> {
|
||||||
|
const url = new URL(this.baseURl.concat(`/${uid}`));
|
||||||
|
try {
|
||||||
|
return await this.putRequest<Role>(url, body);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
import PenICon from "@Assets/Icons/pen.svg";
|
import PenICon from "@Assets/Icons/pen.svg";
|
||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
@ -10,7 +10,7 @@ import Typography, { ITypo } from "../Typography";
|
|||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
folder: IDashBoardFolder;
|
folder: OfficeFolder;
|
||||||
type: EFolderBoxInformationType;
|
type: EFolderBoxInformationType;
|
||||||
isArchived?: boolean;
|
isArchived?: boolean;
|
||||||
};
|
};
|
||||||
@ -42,7 +42,7 @@ export default function FolderBoxInformation(props: IProps) {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
function renderContentByType(folder: IDashBoardFolder, type: EFolderBoxInformationType) {
|
function renderContentByType(folder: OfficeFolder, type: EFolderBoxInformationType) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case EFolderBoxInformationType.DESCRIPTION:
|
case EFolderBoxInformationType.DESCRIPTION:
|
||||||
return (
|
return (
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
import ChevronIcon from "@Assets/Icons/chevron.svg";
|
import ChevronIcon from "@Assets/Icons/chevron.svg";
|
||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
|
import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import Typography, { ITypo } from "../Typography";
|
import Typography, { ITypo } from "../Typography";
|
||||||
import WarningBadge from "../WarningBadge";
|
import WarningBadge from "../WarningBadge";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document";
|
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
folder: IDashBoardFolder;
|
folder: OfficeFolder;
|
||||||
onSelectedFolder?: (folder: IDashBoardFolder) => void;
|
onSelectedFolder?: (folder: OfficeFolder) => void;
|
||||||
};
|
};
|
||||||
type IState = {};
|
type IState = {};
|
||||||
|
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document";
|
import classNames from "classnames";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
|
import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import FolderContainer from "../FolderContainer";
|
import FolderContainer from "../FolderContainer";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import classNames from "classnames";
|
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
folders: IDashBoardFolder[];
|
folders: OfficeFolder[];
|
||||||
isArchived: boolean;
|
isArchived: boolean;
|
||||||
onSelectedFolder?: (folder: IDashBoardFolder) => void;
|
onSelectedFolder?: (folder: OfficeFolder) => void;
|
||||||
onCloseLeftSide?: () => void;
|
onCloseLeftSide?: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
|
import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { NextRouter, useRouter } from "next/router";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
|
import BlockList, { IBlock } from "../BlockList";
|
||||||
import Button from "../Button";
|
import Button from "../Button";
|
||||||
import SearchBar from "../SearchBar";
|
import SearchBar from "../SearchBar";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import BlockList, { IBlock } from "../BlockList";
|
|
||||||
import { NextRouter, useRouter } from "next/router";
|
|
||||||
import { EDocumentStatus } from "le-coffre-resources/dist/SuperAdmin/Document";
|
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
folders: IDashBoardFolder[];
|
folders: OfficeFolder[];
|
||||||
isArchived: boolean;
|
isArchived: boolean;
|
||||||
onSelectedFolder?: (folder: IDashBoardFolder) => void;
|
onSelectedFolder?: (folder: OfficeFolder) => void;
|
||||||
onCloseLeftSide?: () => void;
|
onCloseLeftSide?: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ type IPropsClass = IProps & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
type IState = {
|
type IState = {
|
||||||
filteredFolders: IDashBoardFolder[];
|
filteredFolders: OfficeFolder[];
|
||||||
};
|
};
|
||||||
|
|
||||||
class FolderListContainerClass extends React.Component<IPropsClass, IState> {
|
class FolderListContainerClass extends React.Component<IPropsClass, IState> {
|
||||||
@ -97,7 +97,7 @@ class FolderListContainerClass extends React.Component<IPropsClass, IState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private filterFolders(value: string): void {
|
private filterFolders(value: string): void {
|
||||||
const filteredFolders: IDashBoardFolder[] = this.props.folders.filter((folder) => {
|
const filteredFolders: OfficeFolder[] = this.props.folders.filter((folder) => {
|
||||||
const name = folder.name.toLowerCase();
|
const name = folder.name.toLowerCase();
|
||||||
const number = folder.folder_number.toLowerCase();
|
const number = folder.folder_number.toLowerCase();
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import PenIcon from "@Assets/Icons/pen.svg";
|
import PenIcon from "@Assets/Icons/pen.svg";
|
||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import { Customer } from "le-coffre-resources/dist/Notary";
|
import { Customer } from "le-coffre-resources/dist/Notary";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
@ -13,7 +13,7 @@ import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document";
|
|||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
customer: Customer;
|
customer: Customer;
|
||||||
folder: IDashBoardFolder;
|
folder: OfficeFolder;
|
||||||
isArchived?: boolean;
|
isArchived?: boolean;
|
||||||
};
|
};
|
||||||
type IState = {};
|
type IState = {};
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import ChevronIcon from "@Assets/Icons/chevron.svg";
|
import ChevronIcon from "@Assets/Icons/chevron.svg";
|
||||||
import PlusIcon from "@Assets/Icons/plus.svg";
|
import PlusIcon from "@Assets/Icons/plus.svg";
|
||||||
import Documents from "@Front/Api/LeCoffreApi/SuperAdmin/Documents/Documents";
|
import Documents from "@Front/Api/LeCoffreApi/SuperAdmin/Documents/Documents";
|
||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import Customer, { Document } from "le-coffre-resources/dist/Customer";
|
|
||||||
import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document";
|
import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document";
|
||||||
|
import { Customer, Document } from "le-coffre-resources/dist/Notary";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
@ -20,7 +20,7 @@ import UserFolderHeader from "./UserFolderHeader";
|
|||||||
type IProps = {
|
type IProps = {
|
||||||
customer: Customer;
|
customer: Customer;
|
||||||
animationDelay?: number;
|
animationDelay?: number;
|
||||||
folder: IDashBoardFolder;
|
folder: OfficeFolder;
|
||||||
isArchived?: boolean;
|
isArchived?: boolean;
|
||||||
isOpened: boolean;
|
isOpened: boolean;
|
||||||
onChange: (id: string) => void;
|
onChange: (id: string) => void;
|
||||||
|
@ -87,7 +87,11 @@ export default class DefaultDeedTypesDashboard extends React.Component<IProps, I
|
|||||||
|
|
||||||
public override async componentDidMount() {
|
public override async componentDidMount() {
|
||||||
this.onWindowResize = WindowStore.getInstance().onResize((window) => this.onResize(window));
|
this.onWindowResize = WindowStore.getInstance().onResize((window) => this.onResize(window));
|
||||||
const query: IGetDeedTypesParams = {};
|
const query: IGetDeedTypesParams = {
|
||||||
|
where: {
|
||||||
|
archived_at: null,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const deedTypes = await DeedTypes.getInstance().get(query);
|
const deedTypes = await DeedTypes.getInstance().get(query);
|
||||||
this.setState({ deedTypes });
|
this.setState({ deedTypes });
|
||||||
|
@ -7,8 +7,8 @@ import Version from "@Front/Components/DesignSystem/Version";
|
|||||||
import BackArrow from "@Front/Components/Elements/BackArrow";
|
import BackArrow from "@Front/Components/Elements/BackArrow";
|
||||||
import WindowStore from "@Front/Stores/WindowStore";
|
import WindowStore from "@Front/Stores/WindowStore";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import { OfficeFolder } from "le-coffre-resources/dist/Customer";
|
|
||||||
import EFolderStatus from "le-coffre-resources/dist/Customer/EFolderStatus";
|
import EFolderStatus from "le-coffre-resources/dist/Customer/EFolderStatus";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import React, { ReactNode } from "react";
|
import React, { ReactNode } from "react";
|
||||||
|
|
||||||
@ -18,30 +18,17 @@ type IProps = {
|
|||||||
title: string;
|
title: string;
|
||||||
children?: ReactNode;
|
children?: ReactNode;
|
||||||
isArchived?: boolean;
|
isArchived?: boolean;
|
||||||
onSelectedFolder: (folder: IDashBoardFolder) => void;
|
onSelectedFolder: (folder: OfficeFolder) => void;
|
||||||
hasBackArrow: boolean;
|
hasBackArrow: boolean;
|
||||||
backArrowUrl?: string;
|
backArrowUrl?: string;
|
||||||
mobileBackText?: string;
|
mobileBackText?: string;
|
||||||
};
|
};
|
||||||
type IState = {
|
type IState = {
|
||||||
folders: IDashBoardFolder[] | null;
|
folders: OfficeFolder[] | null;
|
||||||
isLeftSideOpen: boolean;
|
isLeftSideOpen: boolean;
|
||||||
leftSideCanBeClosed: boolean;
|
leftSideCanBeClosed: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type IDashBoardFolder = {
|
|
||||||
uid?: OfficeFolder["uid"];
|
|
||||||
name: OfficeFolder["name"];
|
|
||||||
folder_number: OfficeFolder["folder_number"];
|
|
||||||
documents?: OfficeFolder["documents"];
|
|
||||||
description: OfficeFolder["description"];
|
|
||||||
deed?: OfficeFolder["deed"];
|
|
||||||
created_at: OfficeFolder["created_at"];
|
|
||||||
customers?: OfficeFolder["customers"];
|
|
||||||
archived_description: OfficeFolder["archived_description"];
|
|
||||||
status: OfficeFolder["status"];
|
|
||||||
};
|
|
||||||
|
|
||||||
export default class DefaultNotaryDashboard extends React.Component<IProps, IState> {
|
export default class DefaultNotaryDashboard extends React.Component<IProps, IState> {
|
||||||
private onWindowResize = () => {};
|
private onWindowResize = () => {};
|
||||||
public static defaultProps: Partial<IProps> = {
|
public static defaultProps: Partial<IProps> = {
|
||||||
|
@ -90,7 +90,6 @@ export default class DefaultRoleDashboard extends React.Component<IProps, IState
|
|||||||
};
|
};
|
||||||
|
|
||||||
const roles = await OfficeRoles.getInstance().get(query);
|
const roles = await OfficeRoles.getInstance().get(query);
|
||||||
console.log(roles);
|
|
||||||
|
|
||||||
this.setState({ roles });
|
this.setState({ roles });
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
import ChevronIcon from "@Assets/Icons/chevron.svg";
|
import ChevronIcon from "@Assets/Icons/chevron.svg";
|
||||||
import OfficeRoles from "@Front/Api/LeCoffreApi/Admin/OfficeRoles/OfficeRoles";
|
import OfficeRoles from "@Front/Api/LeCoffreApi/Admin/OfficeRoles/OfficeRoles";
|
||||||
import Users from "@Front/Api/LeCoffreApi/SuperAdmin/Users/Users";
|
import Roles from "@Front/Api/LeCoffreApi/Admin/Roles/Roles";
|
||||||
|
import Users from "@Front/Api/LeCoffreApi/Admin/Users/Users";
|
||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
||||||
import SelectField, { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
import SelectField, { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
||||||
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultCollaboratorDashboard from "@Front/Components/LayoutTemplates/DefaultCollaboratorDashboard";
|
import DefaultCollaboratorDashboard from "@Front/Components/LayoutTemplates/DefaultCollaboratorDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import User from "le-coffre-resources/dist/Notary";
|
import User, { OfficeRole } from "le-coffre-resources/dist/Admin";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
|
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
@ -22,6 +24,64 @@ export default function CollaboratorInformations(props: IProps) {
|
|||||||
const [userSelected, setUserSelected] = useState<User | null>(null);
|
const [userSelected, setUserSelected] = useState<User | null>(null);
|
||||||
const [availableRoles, setAvailableRoles] = useState<IOption[]>([]);
|
const [availableRoles, setAvailableRoles] = useState<IOption[]>([]);
|
||||||
|
|
||||||
|
const [roleModalOpened, setRoleModalOpened] = useState<boolean>(false);
|
||||||
|
const [adminModalOpened, setAdminModalOpened] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const [selectedOption, setSelectedOption] = useState<IOption | null>(null);
|
||||||
|
|
||||||
|
const handleRoleChange = useCallback((option: IOption) => {
|
||||||
|
setSelectedOption(option);
|
||||||
|
setRoleModalOpened(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const closeRoleModal = useCallback(() => {
|
||||||
|
setRoleModalOpened(false);
|
||||||
|
setSelectedOption({
|
||||||
|
value: userSelected?.office_role ? userSelected?.office_role?.uid : userSelected?.role?.uid,
|
||||||
|
label: userSelected?.office_role ? userSelected?.office_role?.name : userSelected?.role?.name!,
|
||||||
|
});
|
||||||
|
}, [userSelected?.office_role, userSelected?.role?.name, userSelected?.role?.uid]);
|
||||||
|
|
||||||
|
const changeRole = useCallback(async () => {
|
||||||
|
await Users.getInstance().put(
|
||||||
|
userSelected?.uid as string,
|
||||||
|
User.hydrate<User>({
|
||||||
|
uid: userSelected?.uid as string,
|
||||||
|
office_role: OfficeRole.hydrate<OfficeRole>({
|
||||||
|
uid: selectedOption?.value as string,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
setRoleModalOpened(false);
|
||||||
|
}, [selectedOption, userSelected]);
|
||||||
|
|
||||||
|
const changeAdmin = useCallback(async () => {
|
||||||
|
const adminRole = await Roles.getInstance().getOne({
|
||||||
|
where: {
|
||||||
|
name: "admin",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!adminRole) return;
|
||||||
|
await Users.getInstance().put(
|
||||||
|
userSelected?.uid as string,
|
||||||
|
User.hydrate<User>({
|
||||||
|
uid: userSelected?.uid as string,
|
||||||
|
office_role: undefined,
|
||||||
|
role: adminRole,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
setRoleModalOpened(false);
|
||||||
|
}, [userSelected]);
|
||||||
|
|
||||||
|
const openAdminModal = useCallback(() => {
|
||||||
|
setAdminModalOpened(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const closeAdminModal = useCallback(() => {
|
||||||
|
setAdminModalOpened(false);
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function getUser() {
|
async function getUser() {
|
||||||
if (!collaboratorUid) return;
|
if (!collaboratorUid) return;
|
||||||
@ -38,6 +98,10 @@ export default function CollaboratorInformations(props: IProps) {
|
|||||||
if (!roles) return;
|
if (!roles) return;
|
||||||
setAvailableRoles(roles.map((role) => ({ value: role.uid, label: role.name })));
|
setAvailableRoles(roles.map((role) => ({ value: role.uid, label: role.name })));
|
||||||
setUserSelected(user);
|
setUserSelected(user);
|
||||||
|
setSelectedOption({
|
||||||
|
value: user?.office_role ? user?.office_role?.uid : user?.role?.uid,
|
||||||
|
label: user?.office_role ? user?.office_role?.name : user?.role?.name!,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getUser();
|
getUser();
|
||||||
@ -96,22 +160,54 @@ export default function CollaboratorInformations(props: IProps) {
|
|||||||
placeholder="Rôle"
|
placeholder="Rôle"
|
||||||
name="role"
|
name="role"
|
||||||
options={availableRoles}
|
options={availableRoles}
|
||||||
selectedOption={{
|
selectedOption={selectedOption!}
|
||||||
value: userSelected?.office_role ? userSelected?.office_role?.uid : userSelected?.role?.uid,
|
onChange={handleRoleChange}
|
||||||
label: userSelected?.office_role ? userSelected?.office_role?.name : userSelected?.role?.name!,
|
disabled={userSelected?.role?.name === "super-admin"}
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
{userSelected?.role?.name !== "super-admin" && (
|
||||||
<div className={classes["third-line"]}>
|
<div className={classes["third-line"]}>
|
||||||
<CheckBox
|
<CheckBox
|
||||||
|
onChange={openAdminModal}
|
||||||
option={{
|
option={{
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "Nommer administrateur de l'office",
|
label: "Nommer administrateur de l'office",
|
||||||
}}
|
}}
|
||||||
toolTip="blabla"
|
toolTip="blabla"
|
||||||
|
checked={userSelected?.role?.name === "admin" && !userSelected.office_role}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
<Confirm
|
||||||
|
isOpen={roleModalOpened}
|
||||||
|
onClose={closeRoleModal}
|
||||||
|
onAccept={changeRole}
|
||||||
|
closeBtn
|
||||||
|
header={"Changement de rôle"}
|
||||||
|
confirmText={"Valider"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Attributer le rôle de <span className={classes["role-name"]}>{selectedOption?.label}</span> à{" "}
|
||||||
|
{userSelected?.contact?.first_name} {userSelected?.contact?.last_name} ?
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
|
<Confirm
|
||||||
|
isOpen={adminModalOpened}
|
||||||
|
onClose={closeAdminModal}
|
||||||
|
onAccept={changeAdmin}
|
||||||
|
closeBtn
|
||||||
|
header={"Changement de rôle"}
|
||||||
|
confirmText={"Valider"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Attributer le rôle d'administrateur à {userSelected?.contact?.first_name} {userSelected?.contact?.last_name} ?
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
</div>
|
</div>
|
||||||
</DefaultCollaboratorDashboard>
|
</DefaultCollaboratorDashboard>
|
||||||
);
|
);
|
||||||
|
@ -1,16 +1,46 @@
|
|||||||
|
import DeedTypes from "@Front/Api/LeCoffreApi/Admin/DeedTypes/DeedTypes";
|
||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
|
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
||||||
|
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
||||||
|
import Module from "@Front/Config/Module";
|
||||||
|
import JwtService from "@Front/Services/JwtService/JwtService";
|
||||||
|
import { DeedType, Office } from "le-coffre-resources/dist/Admin";
|
||||||
|
import { useRouter } from "next/router";
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
|
||||||
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
export default function DeedTypesCreate(props: IProps) {
|
export default function DeedTypesCreate(props: IProps) {
|
||||||
const onSubmitHandler = useCallback(async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {}, []);
|
const router = useRouter();
|
||||||
|
const onSubmitHandler = useCallback(
|
||||||
|
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
||||||
|
try {
|
||||||
|
const jwt = JwtService.getInstance().decodeJwt();
|
||||||
|
const deedType = await DeedTypes.getInstance().post(
|
||||||
|
DeedType.hydrate<DeedType>({
|
||||||
|
name: values["name"],
|
||||||
|
description: values["description"],
|
||||||
|
office: Office.hydrate<Office>({
|
||||||
|
uid: jwt?.office_Id
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
router.push(
|
||||||
|
Module.getInstance()
|
||||||
|
.get()
|
||||||
|
.modules.pages.DeedTypes.pages.DeedTypesInformations.props.path.replace("[uid]", deedType.uid!),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[router],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Créer un type d'acte">
|
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Créer un type d'acte">
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
import DeedTypes from "@Front/Api/LeCoffreApi/Admin/DeedTypes/DeedTypes";
|
import DeedTypes from "@Front/Api/LeCoffreApi/Admin/DeedTypes/DeedTypes";
|
||||||
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
|
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
||||||
|
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
||||||
|
import Module from "@Front/Config/Module";
|
||||||
import { DeedType } from "le-coffre-resources/dist/Admin";
|
import { DeedType } from "le-coffre-resources/dist/Admin";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { useCallback, useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
|
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
|
||||||
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
|
||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
|
||||||
|
|
||||||
export default function DeedTypesEdit() {
|
export default function DeedTypesEdit() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@ -31,7 +32,28 @@ export default function DeedTypesEdit() {
|
|||||||
getDeedType();
|
getDeedType();
|
||||||
}, [deedTypeUid]);
|
}, [deedTypeUid]);
|
||||||
|
|
||||||
const onSubmitHandler = useCallback(async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {}, []);
|
const onSubmitHandler = useCallback(
|
||||||
|
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
||||||
|
try {
|
||||||
|
await DeedTypes.getInstance().put(
|
||||||
|
deedTypeUid as string,
|
||||||
|
DeedType.hydrate<DeedType>({
|
||||||
|
uid: deedTypeUid as string,
|
||||||
|
name: values["name"],
|
||||||
|
description: values["description"],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
router.push(
|
||||||
|
Module.getInstance()
|
||||||
|
.get()
|
||||||
|
.modules.pages.DeedTypes.pages.DeedTypesInformations.props.path.replace("[uid]", deedTypeUid as string),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[deedTypeUid, router],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Modifier les informations d'un acte">
|
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Modifier les informations d'un acte">
|
||||||
|
@ -5,6 +5,7 @@ import DocumentTypes from "@Front/Api/LeCoffreApi/Admin/DocumentTypes/DocumentTy
|
|||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
import { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
import { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
||||||
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import MultiSelect from "@Front/Components/DesignSystem/MultiSelect";
|
import MultiSelect from "@Front/Components/DesignSystem/MultiSelect";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
||||||
@ -28,6 +29,27 @@ export default function DeedTypesInformations(props: IProps) {
|
|||||||
const [availableDocuments, setAvailableDocuments] = useState<DocumentType[]>([]);
|
const [availableDocuments, setAvailableDocuments] = useState<DocumentType[]>([]);
|
||||||
const [selectedDocuments, setSelectedDocuments] = useState<IOption[]>([]);
|
const [selectedDocuments, setSelectedDocuments] = useState<IOption[]>([]);
|
||||||
|
|
||||||
|
const [isDeleteModalOpened, setIsDeleteModalOpened] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const openDeleteModal = useCallback(() => {
|
||||||
|
setIsDeleteModalOpened(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const closeDeleteModal = useCallback(() => {
|
||||||
|
setIsDeleteModalOpened(false);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const deleteDeedType = useCallback(async () => {
|
||||||
|
await DeedTypes.getInstance().put(
|
||||||
|
deedTypeUid as string,
|
||||||
|
DeedType.hydrate<DeedType>({
|
||||||
|
uid: deedTypeUid as string,
|
||||||
|
archived_at: new Date(),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
router.push(Module.getInstance().get().modules.pages.DeedTypes.props.path);
|
||||||
|
}, [deedTypeUid, router]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function getDeedType() {
|
async function getDeedType() {
|
||||||
if (!deedTypeUid) return;
|
if (!deedTypeUid) return;
|
||||||
@ -37,6 +59,15 @@ export default function DeedTypesInformations(props: IProps) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
setDeedTypeSelected(deedType);
|
setDeedTypeSelected(deedType);
|
||||||
|
|
||||||
|
if (!deedType.document_types) return;
|
||||||
|
const documentsOptions: IOption[] = deedType.document_types?.map((documentType) => {
|
||||||
|
return {
|
||||||
|
label: documentType.name,
|
||||||
|
value: documentType.uid,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
setSelectedDocuments(documentsOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getDocuments() {
|
async function getDocuments() {
|
||||||
@ -44,12 +75,19 @@ export default function DeedTypesInformations(props: IProps) {
|
|||||||
setAvailableDocuments(documents);
|
setAvailableDocuments(documents);
|
||||||
}
|
}
|
||||||
|
|
||||||
setSelectedDocuments([]);
|
|
||||||
getDocuments();
|
getDocuments();
|
||||||
getDeedType();
|
getDeedType();
|
||||||
}, [deedTypeUid]);
|
}, [deedTypeUid]);
|
||||||
|
|
||||||
const onSubmitHandler = useCallback(async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {}, []);
|
const onSubmitHandler = useCallback(
|
||||||
|
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
||||||
|
await DeedTypes.getInstance().put(deedTypeUid as string, {
|
||||||
|
uid: deedTypeUid as string,
|
||||||
|
document_types: selectedDocuments.map((document) => DocumentType.hydrate<DocumentType>({ uid: document.value as string })),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
[deedTypeUid, selectedDocuments],
|
||||||
|
);
|
||||||
|
|
||||||
const onDocumentChangeHandler = useCallback((values: MultiValue<IOption>) => {
|
const onDocumentChangeHandler = useCallback((values: MultiValue<IOption>) => {
|
||||||
setSelectedDocuments(values as IOption[]);
|
setSelectedDocuments(values as IOption[]);
|
||||||
@ -121,8 +159,24 @@ export default function DeedTypesInformations(props: IProps) {
|
|||||||
</Form>
|
</Form>
|
||||||
</div>
|
</div>
|
||||||
<div className={classes["delete-container"]}>
|
<div className={classes["delete-container"]}>
|
||||||
<Button variant={EButtonVariant.GHOST}>Supprimer</Button>
|
<Button variant={EButtonVariant.GHOST} onClick={openDeleteModal}>
|
||||||
|
Supprimer
|
||||||
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
<Confirm
|
||||||
|
isOpen={isDeleteModalOpened}
|
||||||
|
onClose={closeDeleteModal}
|
||||||
|
onAccept={deleteDeedType}
|
||||||
|
closeBtn
|
||||||
|
header={"Supprimer le type d'acte ?"}
|
||||||
|
confirmText={"Valider"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Êtes-vous sûr de vouloir supprimer ce type d'acte ?
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
</div>
|
</div>
|
||||||
</DefaultDeedTypesDashboard>
|
</DefaultDeedTypesDashboard>
|
||||||
);
|
);
|
||||||
|
@ -6,20 +6,20 @@ import Folders from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders";
|
|||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
|
import { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
||||||
|
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
||||||
|
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
||||||
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import BackArrow from "@Front/Components/Elements/BackArrow";
|
import BackArrow from "@Front/Components/Elements/BackArrow";
|
||||||
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import { OfficeFolder } from "le-coffre-resources/dist/Customer";
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import { NextRouter, useRouter } from "next/router";
|
import { NextRouter, useRouter } from "next/router";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import BasePage from "../../Base";
|
import BasePage from "../../Base";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
|
||||||
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
|
||||||
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
type IPropsClass = IProps & {
|
type IPropsClass = IProps & {
|
||||||
@ -110,11 +110,7 @@ class AskDocumentsClass extends BasePage<IPropsClass, IState> {
|
|||||||
cancelText={"Annuler"}
|
cancelText={"Annuler"}
|
||||||
confirmText={"Ajouter"}>
|
confirmText={"Ajouter"}>
|
||||||
<div className={classes["add-document-form-container"]}>
|
<div className={classes["add-document-form-container"]}>
|
||||||
<TextField
|
<TextField name="document_name" placeholder="Nom du document à ajouter" onChange={this.onDocumentNameChange} />
|
||||||
name="document_name"
|
|
||||||
placeholder="Nom du document à ajouter"
|
|
||||||
onChange={this.onDocumentNameChange}
|
|
||||||
/>
|
|
||||||
<TextAreaField
|
<TextAreaField
|
||||||
name="description"
|
name="description"
|
||||||
placeholder="Description visible par le client"
|
placeholder="Description visible par le client"
|
||||||
@ -211,10 +207,7 @@ class AskDocumentsClass extends BasePage<IPropsClass, IState> {
|
|||||||
|
|
||||||
const oldDocumentsType = this.state.folder?.deed?.document_types!;
|
const oldDocumentsType = this.state.folder?.deed?.document_types!;
|
||||||
await Deeds.getInstance().put(this.state.folder?.deed?.uid!, {
|
await Deeds.getInstance().put(this.state.folder?.deed?.uid!, {
|
||||||
document_types: [
|
document_types: [...oldDocumentsType, documentType],
|
||||||
...oldDocumentsType,
|
|
||||||
documentType,
|
|
||||||
],
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.loadData();
|
await this.loadData();
|
||||||
|
@ -2,7 +2,7 @@ import PlusIcon from "@Assets/Icons/plus.svg";
|
|||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import UserFolder from "@Front/Components/DesignSystem/UserFolder";
|
import UserFolder from "@Front/Components/DesignSystem/UserFolder";
|
||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
@ -10,7 +10,7 @@ import React from "react";
|
|||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
folder: IDashBoardFolder;
|
folder: OfficeFolder;
|
||||||
};
|
};
|
||||||
type IState = {
|
type IState = {
|
||||||
openedCustomer: string;
|
openedCustomer: string;
|
||||||
@ -75,7 +75,6 @@ export default class ClientSection extends React.Component<IProps, IState> {
|
|||||||
return output ?? null;
|
return output ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private changeUserFolder(uid: string) {
|
private changeUserFolder(uid: string) {
|
||||||
this.setState({
|
this.setState({
|
||||||
openedCustomer: uid === this.state.openedCustomer ? "" : uid,
|
openedCustomer: uid === this.state.openedCustomer ? "" : uid,
|
||||||
|
@ -6,9 +6,9 @@ import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
|||||||
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import QuantityProgressBar from "@Front/Components/DesignSystem/QuantityProgressBar";
|
import QuantityProgressBar from "@Front/Components/DesignSystem/QuantityProgressBar";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import { OfficeFolder } from "le-coffre-resources/dist/Customer";
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document";
|
import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { NextRouter, useRouter } from "next/router";
|
import { NextRouter, useRouter } from "next/router";
|
||||||
@ -26,7 +26,7 @@ type IPropsClass = IProps & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
isArchivedModalOpen: boolean;
|
isArchivedModalOpen: boolean;
|
||||||
inputArchivedDescripton: string;
|
inputArchivedDescripton: string;
|
||||||
};
|
};
|
||||||
@ -133,7 +133,7 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
|
|||||||
}
|
}
|
||||||
public override async componentDidMount() {
|
public override async componentDidMount() {
|
||||||
this.setState({
|
this.setState({
|
||||||
selectedFolder: (await this.getFolder()) as IDashBoardFolder,
|
selectedFolder: (await this.getFolder()) as OfficeFolder,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
|
|||||||
return this.state.selectedFolder?.customers!.length > 0;
|
return this.state.selectedFolder?.customers!.length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import BasePage from "../../Base";
|
|
||||||
import classes from "./classes.module.scss";
|
|
||||||
import Customers from "@Front/Api/LeCoffreApi/SuperAdmin/Customers/Customers";
|
import Customers from "@Front/Api/LeCoffreApi/SuperAdmin/Customers/Customers";
|
||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
@ -7,13 +5,16 @@ import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
|||||||
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import BackArrow from "@Front/Components/Elements/BackArrow";
|
import BackArrow from "@Front/Components/Elements/BackArrow";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import Customer, { Contact } from "le-coffre-resources/dist/Customer";
|
import { Contact, Customer, OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { NextRouter, useRouter } from "next/router";
|
import { NextRouter, useRouter } from "next/router";
|
||||||
import { ChangeEvent } from "react";
|
import { ChangeEvent } from "react";
|
||||||
|
|
||||||
|
import BasePage from "../../Base";
|
||||||
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
|
|
||||||
type IPropsClass = IProps & {
|
type IPropsClass = IProps & {
|
||||||
@ -22,7 +23,7 @@ type IPropsClass = IProps & {
|
|||||||
customerUid: string;
|
customerUid: string;
|
||||||
};
|
};
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
inputNameValue: string;
|
inputNameValue: string;
|
||||||
inputFirstNameValue: string;
|
inputFirstNameValue: string;
|
||||||
inputEmailValue: string;
|
inputEmailValue: string;
|
||||||
@ -31,7 +32,7 @@ type IState = {
|
|||||||
doesInputHaveValues: boolean;
|
doesInputHaveValues: boolean;
|
||||||
inputBirthdate: Date | null;
|
inputBirthdate: Date | null;
|
||||||
inputAddress: string;
|
inputAddress: string;
|
||||||
folder: IDashBoardFolder | null;
|
folder: OfficeFolder | null;
|
||||||
customer: Customer | null;
|
customer: Customer | null;
|
||||||
};
|
};
|
||||||
class UpdateClientClass extends BasePage<IPropsClass, IState> {
|
class UpdateClientClass extends BasePage<IPropsClass, IState> {
|
||||||
@ -222,7 +223,7 @@ class UpdateClientClass extends BasePage<IPropsClass, IState> {
|
|||||||
this.setState({ inputPhoneNumberValue: event.target.value });
|
this.setState({ inputPhoneNumberValue: event.target.value });
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,9 +7,9 @@ import MultiSelect from "@Front/Components/DesignSystem/MultiSelect";
|
|||||||
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
|
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import BackArrow from "@Front/Components/Elements/BackArrow";
|
import BackArrow from "@Front/Components/Elements/BackArrow";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import User from "le-coffre-resources/dist/Notary";
|
import User, { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { NextRouter, useRouter } from "next/router";
|
import { NextRouter, useRouter } from "next/router";
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ type IPropsClass = {
|
|||||||
router: NextRouter;
|
router: NextRouter;
|
||||||
};
|
};
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
selectedOption?: ERadioBoxValue;
|
selectedOption?: ERadioBoxValue;
|
||||||
availableCollaborators: User[];
|
availableCollaborators: User[];
|
||||||
selectedCollaborators: readonly IOption[];
|
selectedCollaborators: readonly IOption[];
|
||||||
@ -163,7 +163,7 @@ class UpdateFolderCollaboratorsClass extends BasePage<IPropsClass, IState> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
|
import Folders from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders";
|
||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
|
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import BackArrow from "@Front/Components/Elements/BackArrow";
|
import BackArrow from "@Front/Components/Elements/BackArrow";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { NextRouter, useRouter } from "next/router";
|
import { NextRouter, useRouter } from "next/router";
|
||||||
|
|
||||||
import BasePage from "../../Base";
|
import BasePage from "../../Base";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import Folders from "@Front/Api/LeCoffreApi/SuperAdmin/Folders/Folders";
|
|
||||||
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
|
|
||||||
@ -20,7 +21,7 @@ type IPropsClass = IProps & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
type IState = {
|
type IState = {
|
||||||
folder: IDashBoardFolder | null;
|
folder: OfficeFolder | null;
|
||||||
};
|
};
|
||||||
class UpdateFolderDescriptionClass extends BasePage<IPropsClass, IState> {
|
class UpdateFolderDescriptionClass extends BasePage<IPropsClass, IState> {
|
||||||
private backwardPath = Module.getInstance()
|
private backwardPath = Module.getInstance()
|
||||||
|
@ -5,14 +5,14 @@ import Select, { IOption } from "@Front/Components/DesignSystem/Form/SelectField
|
|||||||
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import BackArrow from "@Front/Components/Elements/BackArrow";
|
import BackArrow from "@Front/Components/Elements/BackArrow";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
|
import { Deed, OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { NextRouter, useRouter } from "next/router";
|
import { NextRouter, useRouter } from "next/router";
|
||||||
|
|
||||||
import BasePage from "../../Base";
|
import BasePage from "../../Base";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import { Deed, OfficeFolder } from "le-coffre-resources/dist/Notary";
|
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ type IPropsClass = IProps & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
};
|
};
|
||||||
class UpdateFolderMetadataClass extends BasePage<IPropsClass, IState> {
|
class UpdateFolderMetadataClass extends BasePage<IPropsClass, IState> {
|
||||||
constructor(props: IPropsClass) {
|
constructor(props: IPropsClass) {
|
||||||
@ -93,7 +93,7 @@ class UpdateFolderMetadataClass extends BasePage<IPropsClass, IState> {
|
|||||||
...values,
|
...values,
|
||||||
deed: Deed.hydrate<Deed>({
|
deed: Deed.hydrate<Deed>({
|
||||||
uid: values["deed"],
|
uid: values["deed"],
|
||||||
})
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
await Folders.getInstance().put(this.props.folderUid, newValues);
|
await Folders.getInstance().put(this.props.folderUid, newValues);
|
||||||
@ -106,7 +106,7 @@ class UpdateFolderMetadataClass extends BasePage<IPropsClass, IState> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async getFolder(): Promise<IDashBoardFolder> {
|
private async getFolder(): Promise<OfficeFolder> {
|
||||||
const query = {
|
const query = {
|
||||||
q: {
|
q: {
|
||||||
deed: { include: { deed_type: true } },
|
deed: { include: { deed_type: true } },
|
||||||
@ -118,7 +118,7 @@ class UpdateFolderMetadataClass extends BasePage<IPropsClass, IState> {
|
|||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
|
|
||||||
import BasePage from "../Base";
|
import BasePage from "../Base";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
isArchivedModalOpen: boolean;
|
isArchivedModalOpen: boolean;
|
||||||
};
|
};
|
||||||
export default class Folder extends BasePage<IProps, IState> {
|
export default class Folder extends BasePage<IProps, IState> {
|
||||||
@ -37,7 +38,7 @@ export default class Folder extends BasePage<IProps, IState> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import UserFolder from "@Front/Components/DesignSystem/UserFolder";
|
import UserFolder from "@Front/Components/DesignSystem/UserFolder";
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
folder: IDashBoardFolder;
|
folder: OfficeFolder;
|
||||||
};
|
};
|
||||||
type IState = {
|
type IState = {
|
||||||
openedCustomer: string;
|
openedCustomer: string;
|
||||||
|
@ -4,9 +4,9 @@ import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
|||||||
import FolderBoxInformation, { EFolderBoxInformationType } from "@Front/Components/DesignSystem/FolderBoxInformation";
|
import FolderBoxInformation, { EFolderBoxInformationType } from "@Front/Components/DesignSystem/FolderBoxInformation";
|
||||||
import QuantityProgressBar from "@Front/Components/DesignSystem/QuantityProgressBar";
|
import QuantityProgressBar from "@Front/Components/DesignSystem/QuantityProgressBar";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import { OfficeFolder } from "le-coffre-resources/dist/Customer";
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
import { NextRouter, useRouter } from "next/router";
|
import { NextRouter, useRouter } from "next/router";
|
||||||
|
|
||||||
import BasePage from "../../Base";
|
import BasePage from "../../Base";
|
||||||
@ -21,7 +21,7 @@ type IPropsClass = IProps & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
isArchivedModalOpen: boolean;
|
isArchivedModalOpen: boolean;
|
||||||
};
|
};
|
||||||
class FolderInformationClass extends BasePage<IPropsClass, IState> {
|
class FolderInformationClass extends BasePage<IPropsClass, IState> {
|
||||||
@ -111,7 +111,7 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
|
|||||||
return this.state.selectedFolder?.customers !== undefined;
|
return this.state.selectedFolder?.customers !== undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,23 @@
|
|||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
|
||||||
import Select, { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
import Select, { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
||||||
|
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import BackArrow from "@Front/Components/Elements/BackArrow";
|
import BackArrow from "@Front/Components/Elements/BackArrow";
|
||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
|
import Module from "@Front/Config/Module";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
|
import Link from "next/link";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
|
|
||||||
import BasePage from "../../Base";
|
import BasePage from "../../Base";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import Link from "next/link";
|
|
||||||
import Module from "@Front/Config/Module";
|
|
||||||
|
|
||||||
type IProps = {
|
type IProps = {
|
||||||
selectedFolderUid: string;
|
selectedFolderUid: string;
|
||||||
};
|
};
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
selectedOption?: IOption;
|
selectedOption?: IOption;
|
||||||
};
|
};
|
||||||
class UpdateFolderMetadataClass extends BasePage<IProps, IState> {
|
class UpdateFolderMetadataClass extends BasePage<IProps, IState> {
|
||||||
@ -77,7 +78,7 @@ class UpdateFolderMetadataClass extends BasePage<IProps, IState> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
|
||||||
import BasePage from "../Base";
|
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
|
import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard";
|
||||||
|
import { OfficeFolder } from "le-coffre-resources/dist/Notary";
|
||||||
|
|
||||||
|
import BasePage from "../Base";
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
type IState = {
|
type IState = {
|
||||||
selectedFolder: IDashBoardFolder | null;
|
selectedFolder: OfficeFolder | null;
|
||||||
isArchivedModalOpen: boolean;
|
isArchivedModalOpen: boolean;
|
||||||
};
|
};
|
||||||
export default class FolderArchived extends BasePage<IProps, IState> {
|
export default class FolderArchived extends BasePage<IProps, IState> {
|
||||||
@ -40,7 +42,7 @@ export default class FolderArchived extends BasePage<IProps, IState> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectedFolder(folder: IDashBoardFolder): void {
|
private onSelectedFolder(folder: OfficeFolder): void {
|
||||||
this.setState({ selectedFolder: folder });
|
this.setState({ selectedFolder: folder });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,33 @@
|
|||||||
import CoffreIcon from "@Assets/Icons/coffre.svg";
|
import CoffreIcon from "@Assets/Icons/coffre.svg";
|
||||||
// import { FrontendVariables } from "@Front/Config/VariablesFront";
|
|
||||||
import idNoteLogo from "@Assets/Icons/id-note-logo.svg";
|
import idNoteLogo from "@Assets/Icons/id-note-logo.svg";
|
||||||
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
|
import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
|
||||||
|
import Module from "@Front/Config/Module";
|
||||||
|
import JwtService from "@Front/Services/JwtService/JwtService";
|
||||||
import UserStore from "@Front/Stores/UserStore";
|
import UserStore from "@Front/Stores/UserStore";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import { useRouter } from "next/router";
|
||||||
|
import { useCallback } from "react";
|
||||||
|
|
||||||
import BasePage from "../Base";
|
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
import LandingImage from "./landing-connect.jpeg";
|
import LandingImage from "./landing-connect.jpeg";
|
||||||
|
|
||||||
export default class LoginClass extends BasePage {
|
export default function Login() {
|
||||||
public override render(): JSX.Element {
|
const router = useRouter();
|
||||||
|
const redirectUserOnConnection = useCallback(() => {
|
||||||
|
async function getUser() {
|
||||||
|
try {
|
||||||
|
await UserStore.instance.connect(process.env["NEXT_PUBLIC_ADMIN_ID"] as string);
|
||||||
|
await JwtService.getInstance().checkJwt();
|
||||||
|
router.push(Module.getInstance().get().modules.pages.Folder.props.path);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getUser();
|
||||||
|
}, [router]);
|
||||||
return (
|
return (
|
||||||
<DefaultDoubleSidePage title={"Login"} image={LandingImage}>
|
<DefaultDoubleSidePage title={"Login"} image={LandingImage}>
|
||||||
<div className={classes["root"]}>
|
<div className={classes["root"]}>
|
||||||
@ -20,7 +35,7 @@ export default class LoginClass extends BasePage {
|
|||||||
<Typography typo={ITypo.H1}>
|
<Typography typo={ITypo.H1}>
|
||||||
<div className={classes["title"]}>Connexion espace professionnel</div>
|
<div className={classes["title"]}>Connexion espace professionnel</div>
|
||||||
</Typography>
|
</Typography>
|
||||||
<Button onClick={this.redirectUserOnConnection} icon={idNoteLogo} iconposition={"left"}>
|
<Button onClick={redirectUserOnConnection} icon={idNoteLogo} iconposition={"left"}>
|
||||||
S'identifier avec ID.not
|
S'identifier avec ID.not
|
||||||
</Button>
|
</Button>
|
||||||
<Typography typo={ITypo.P_18}>
|
<Typography typo={ITypo.P_18}>
|
||||||
@ -31,18 +46,3 @@ export default class LoginClass extends BasePage {
|
|||||||
</DefaultDoubleSidePage>
|
</DefaultDoubleSidePage>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async redirectUserOnConnection() {
|
|
||||||
// const variables = FrontendVariables.getInstance();
|
|
||||||
// const baseFronturl = variables.BACK_API_PROTOCOL + variables.FRONT_APP_HOST;
|
|
||||||
|
|
||||||
await UserStore.instance.connect(process.env["NEXT_PUBLIC_ADMIN_ID"] as string);
|
|
||||||
// await JwtService.getInstance().checkJwt();
|
|
||||||
// window.location.assign("http://localhost:3000" + "/folders");
|
|
||||||
|
|
||||||
// const authorizeEndPoint = variables.IDNOT_AUTHORIZE_ENDPOINT;
|
|
||||||
// const clientId = variables.IDNOT_CLIENT_ID;
|
|
||||||
// const url = `${authorizeEndPoint}?client_id=${clientId}&redirect_uri=${baseFronturl}/authorized-client&scope=openid,profile,offline_access&response_type=code`;
|
|
||||||
// window.location.assign(url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
import Roles from "@Front/Api/LeCoffreApi/Admin/OfficeRoles/OfficeRoles";
|
import OfficeRoles from "@Front/Api/LeCoffreApi/Admin/OfficeRoles/OfficeRoles";
|
||||||
import Rules from "@Front/Api/LeCoffreApi/Admin/Rules/Rules";
|
import Rules from "@Front/Api/LeCoffreApi/Admin/Rules/Rules";
|
||||||
import Button from "@Front/Components/DesignSystem/Button";
|
import Button from "@Front/Components/DesignSystem/Button";
|
||||||
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultRoleDashboard from "@Front/Components/LayoutTemplates/DefaultRoleDashboard";
|
import DefaultRoleDashboard from "@Front/Components/LayoutTemplates/DefaultRoleDashboard";
|
||||||
import { Role, Rule } from "le-coffre-resources/dist/Admin";
|
import { Role, Rule } from "le-coffre-resources/dist/Admin";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { useCallback, useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
@ -22,11 +24,22 @@ export default function RolesInformations(props: IProps) {
|
|||||||
const [roleSelected, setRoleSelected] = useState<Role | null>(null);
|
const [roleSelected, setRoleSelected] = useState<Role | null>(null);
|
||||||
const [rulesCheckboxes, setRulesCheckboxes] = useState<RuleCheckbox[]>([]);
|
const [rulesCheckboxes, setRulesCheckboxes] = useState<RuleCheckbox[]>([]);
|
||||||
const [selectAll, setSelectAll] = useState<boolean>(false);
|
const [selectAll, setSelectAll] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const [isConfirmModalOpened, setIsConfirmModalOpened] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const openConfirmModal = useCallback(() => {
|
||||||
|
setIsConfirmModalOpened(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const closeConfirmModal = useCallback(() => {
|
||||||
|
setIsConfirmModalOpened(false);
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSelectAll(false);
|
setSelectAll(false);
|
||||||
async function getUser() {
|
async function getUser() {
|
||||||
if (!roleUid) return;
|
if (!roleUid) return;
|
||||||
const role = await Roles.getInstance().getByUid(roleUid as string, {
|
const role = await OfficeRoles.getInstance().getByUid(roleUid as string, {
|
||||||
q: {
|
q: {
|
||||||
rules: true,
|
rules: true,
|
||||||
},
|
},
|
||||||
@ -64,19 +77,32 @@ export default function RolesInformations(props: IProps) {
|
|||||||
[rulesCheckboxes],
|
[rulesCheckboxes],
|
||||||
);
|
);
|
||||||
|
|
||||||
const onSubmitHandler = useCallback(
|
const modifyRules = useCallback(async () => {
|
||||||
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
|
||||||
if (!roleSelected || !roleSelected.uid) return;
|
if (!roleSelected || !roleSelected.uid) return;
|
||||||
const rules = rulesCheckboxes.filter((rule) => rule.checked)?.map((rule) => Rule.hydrate<Rule>(rule));
|
const rules = rulesCheckboxes.filter((rule) => rule.checked)?.map((rule) => Rule.hydrate<Rule>(rule));
|
||||||
const role = await Roles.getInstance().put(roleSelected.uid, {
|
await OfficeRoles.getInstance().put(roleSelected.uid, {
|
||||||
|
uid: roleSelected.uid,
|
||||||
rules,
|
rules,
|
||||||
});
|
});
|
||||||
if (!role) return;
|
|
||||||
setRoleSelected(role);
|
const roleUpdated = await OfficeRoles.getInstance().getByUid(roleSelected.uid, {
|
||||||
if (!role.rules) return;
|
q: {
|
||||||
setRulesCheckboxes(role.rules.map((rule) => ({ ...rule, checked: false })));
|
rules: true,
|
||||||
},
|
},
|
||||||
[roleSelected, rulesCheckboxes],
|
});
|
||||||
|
setRoleSelected(roleUpdated);
|
||||||
|
closeConfirmModal();
|
||||||
|
}, [closeConfirmModal, roleSelected, rulesCheckboxes]);
|
||||||
|
|
||||||
|
const handleRuleChange = useCallback(
|
||||||
|
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const ruleUid = e.target.value;
|
||||||
|
const rule = rulesCheckboxes.find((rule) => rule.uid === ruleUid);
|
||||||
|
if (!rule) return;
|
||||||
|
rule.checked = e.target.checked;
|
||||||
|
setRulesCheckboxes([...rulesCheckboxes]);
|
||||||
|
},
|
||||||
|
[rulesCheckboxes],
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -103,19 +129,37 @@ export default function RolesInformations(props: IProps) {
|
|||||||
checked={selectAll}
|
checked={selectAll}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<Form onSubmit={onSubmitHandler}>
|
<Form>
|
||||||
<div className={classes["rights"]}>
|
<div className={classes["rights"]}>
|
||||||
{rulesCheckboxes.map((rule) => (
|
{rulesCheckboxes.map((rule) => (
|
||||||
<div className={classes["right"]} key={rule.uid}>
|
<div className={classes["right"]} key={rule.uid}>
|
||||||
<CheckBox option={{ label: rule.name, value: rule.uid }} checked={rule.checked} />
|
<CheckBox
|
||||||
|
option={{ label: rule.name, value: rule.uid }}
|
||||||
|
checked={rule.checked}
|
||||||
|
onChange={handleRuleChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<div className={classes["save-container"]}>
|
<div className={classes["save-container"]}>
|
||||||
<Button type="submit">Enregistrer</Button>
|
<Button onClick={openConfirmModal}>Enregistrer</Button>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
</div>
|
</div>
|
||||||
|
<Confirm
|
||||||
|
isOpen={isConfirmModalOpened}
|
||||||
|
onClose={closeConfirmModal}
|
||||||
|
onAccept={modifyRules}
|
||||||
|
closeBtn
|
||||||
|
header={"Êtes-vous sûr d'enregistrer ?"}
|
||||||
|
confirmText={"Valider"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
En enregistrant vous modifiez les droits des rôles.
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
</div>
|
</div>
|
||||||
</DefaultRoleDashboard>
|
</DefaultRoleDashboard>
|
||||||
);
|
);
|
||||||
|
@ -3,6 +3,7 @@ import OfficeRoles from "@Front/Api/LeCoffreApi/Admin/OfficeRoles/OfficeRoles";
|
|||||||
import Users from "@Front/Api/LeCoffreApi/SuperAdmin/Users/Users";
|
import Users from "@Front/Api/LeCoffreApi/SuperAdmin/Users/Users";
|
||||||
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
||||||
import SelectField, { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
import SelectField, { IOption } from "@Front/Components/DesignSystem/Form/SelectField";
|
||||||
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultUserDashboard from "@Front/Components/LayoutTemplates/DefaultUserDashboard";
|
import DefaultUserDashboard from "@Front/Components/LayoutTemplates/DefaultUserDashboard";
|
||||||
import User from "le-coffre-resources/dist/Notary";
|
import User from "le-coffre-resources/dist/Notary";
|
||||||
@ -20,6 +21,42 @@ export default function UserInformations(props: IProps) {
|
|||||||
const [userSelected, setUserSelected] = useState<User | null>(null);
|
const [userSelected, setUserSelected] = useState<User | null>(null);
|
||||||
const [availableRoles, setAvailableRoles] = useState<IOption[]>([]);
|
const [availableRoles, setAvailableRoles] = useState<IOption[]>([]);
|
||||||
|
|
||||||
|
const [addSuperAdminModalOpened, setAddSuperAdminModalOpened] = useState<boolean>(false);
|
||||||
|
const [removeSuperAdminModalOpened, setRemoveSuperAdminModalOpened] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const openAddSuperAdminModal = () => {
|
||||||
|
setAddSuperAdminModalOpened(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
const closeAddSuperAdminModal = () => {
|
||||||
|
setAddSuperAdminModalOpened(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const openRemoveSuperAdminModal = () => {
|
||||||
|
setRemoveSuperAdminModalOpened(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
const closeRemoveSuperAdminModal = () => {
|
||||||
|
setRemoveSuperAdminModalOpened(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleCheckboxAdminChanged = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const checked = e.target.checked;
|
||||||
|
if (checked) {
|
||||||
|
openAddSuperAdminModal();
|
||||||
|
} else {
|
||||||
|
openRemoveSuperAdminModal();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const addSuperAdmin = async () => {
|
||||||
|
closeAddSuperAdminModal();
|
||||||
|
};
|
||||||
|
|
||||||
|
const removeSuperAdmin = async () => {
|
||||||
|
closeRemoveSuperAdminModal();
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function getUser() {
|
async function getUser() {
|
||||||
if (!userUid) return;
|
if (!userUid) return;
|
||||||
@ -109,6 +146,7 @@ export default function UserInformations(props: IProps) {
|
|||||||
toolTip="tooltip"
|
toolTip="tooltip"
|
||||||
/>
|
/>
|
||||||
<CheckBox
|
<CheckBox
|
||||||
|
onChange={handleCheckboxAdminChanged}
|
||||||
option={{
|
option={{
|
||||||
label: "Nommer super admin LEcoffre.io",
|
label: "Nommer super admin LEcoffre.io",
|
||||||
value: "title",
|
value: "title",
|
||||||
@ -135,6 +173,40 @@ export default function UserInformations(props: IProps) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<Confirm
|
||||||
|
isOpen={addSuperAdminModalOpened}
|
||||||
|
onClose={closeAddSuperAdminModal}
|
||||||
|
onAccept={addSuperAdmin}
|
||||||
|
closeBtn
|
||||||
|
header={`Souhaitez-vous attribuer un vote à ${
|
||||||
|
userSelected?.contact?.first_name + " " + userSelected?.contact?.last_name
|
||||||
|
} pour devenir Super Administrateur ?`}
|
||||||
|
confirmText={"Attribuer un vote"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Nommer une personne Super Administrateur nécessite 3 votes de super administrateurs existants. Souhaitez-vous
|
||||||
|
attribuer un vote ?
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
|
<Confirm
|
||||||
|
isOpen={removeSuperAdminModalOpened}
|
||||||
|
onClose={closeRemoveSuperAdminModal}
|
||||||
|
onAccept={removeSuperAdmin}
|
||||||
|
closeBtn
|
||||||
|
header={`Souhaitez-vous retirer ${
|
||||||
|
userSelected?.contact?.first_name + " " + userSelected?.contact?.last_name
|
||||||
|
} de la liste des Super Administrateurs ?`}
|
||||||
|
confirmText={"Attribuer un vote"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Retirer un collaborateur du rôle de Super Administrateur nécessite 3 votes de super administrateurs existants.
|
||||||
|
Souhaitez-vous attribuer un vote ?
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
</div>
|
</div>
|
||||||
</DefaultUserDashboard>
|
</DefaultUserDashboard>
|
||||||
);
|
);
|
||||||
|
@ -213,6 +213,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"DocumentTypes": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types",
|
||||||
|
"labelKey": "documentTypes"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"DocumentTypesInformations": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/[uid]",
|
||||||
|
"labelKey": "documentInformations"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Create": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/create",
|
||||||
|
"labelKey": "createDocumentType"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Edit": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/[uid]/edit",
|
||||||
|
"labelKey": "editDocumentType"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"404": {
|
"404": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"props": {
|
"props": {
|
||||||
|
@ -213,6 +213,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"DocumentTypes": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types",
|
||||||
|
"labelKey": "documentTypes"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"DocumentTypesInformations": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/[uid]",
|
||||||
|
"labelKey": "documentInformations"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Create": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/create",
|
||||||
|
"labelKey": "createDocumentType"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Edit": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/[uid]/edit",
|
||||||
|
"labelKey": "editDocumentType"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"404": {
|
"404": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"props": {
|
"props": {
|
||||||
|
@ -213,6 +213,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"DocumentTypes": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types",
|
||||||
|
"labelKey": "documentTypes"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"DocumentTypesInformations": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/[uid]",
|
||||||
|
"labelKey": "documentInformations"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Create": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/create",
|
||||||
|
"labelKey": "createDocumentType"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Edit": {
|
||||||
|
"enabled": true,
|
||||||
|
"props": {
|
||||||
|
"path": "/document-types/[uid]/edit",
|
||||||
|
"labelKey": "editDocumentType"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"404": {
|
"404": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"props": {
|
"props": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user