Merge branch 'dev' into staging

This commit is contained in:
Vins 2024-05-31 15:18:29 +02:00
commit 82378bf908
4 changed files with 40 additions and 25 deletions

View File

@ -1,4 +1,6 @@
import PenIcon from "@Assets/Icons/pen.svg"; import PenIcon from "@Assets/Icons/pen.svg";
import Trash from "@Assets/Icons/trash.svg";
import { OfficeFolder } from "le-coffre-resources/dist/Notary"; 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";
@ -10,6 +12,7 @@ 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"; import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document";
import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders";
type IProps = { type IProps = {
customer: Customer; customer: Customer;
@ -23,6 +26,9 @@ export default class UserFolderHeader extends React.Component<IProps, IState> {
isArchived: false, isArchived: false,
}; };
public override render(): JSX.Element | null { public override render(): JSX.Element | null {
const redirectCurrent = Module.getInstance()
.get()
.modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.folder.uid ?? "");
const redirectPath = Module.getInstance() const redirectPath = Module.getInstance()
.get() .get()
.modules.pages.Folder.pages.EditClient.props.path.replace("[folderUid]", this.props.folder.uid ?? "") .modules.pages.Folder.pages.EditClient.props.path.replace("[folderUid]", this.props.folder.uid ?? "")
@ -60,6 +66,14 @@ export default class UserFolderHeader extends React.Component<IProps, IState> {
<Link href={redirectPath}> <Link href={redirectPath}>
<Image src={PenIcon} alt="edit" className={classes["edit-icon"]} onClick={this.onEditClick} /> <Image src={PenIcon} alt="edit" className={classes["edit-icon"]} onClick={this.onEditClick} />
</Link> </Link>
<Link href={redirectCurrent}>
<Image
src={Trash}
alt="delete"
className={classes["edit-icon"]}
onClick={() => this.removeCustomer(this.props.customer.uid!)}
/>
</Link>
</div> </div>
)} )}
</div> </div>
@ -73,6 +87,26 @@ export default class UserFolderHeader extends React.Component<IProps, IState> {
return notAskedDocuments.length > 0; return notAskedDocuments.length > 0;
} }
private async removeCustomer(uid: string) {
try {
//use folder put to remove customer from folder
const query = {
q: {
customers: "true",
},
};
const folder = await Folders.getInstance().getByUid(this.props.folder.uid!, query);
if (!folder.customers) return;
const customers = folder.customers.filter((customer) => customer.uid !== uid);
folder.customers = customers;
await Folders.getInstance().put(this.props.folder.uid!, folder);
//redirect on the same page
window.location.reload();
} catch (e) {
console.error(e);
}
}
private formatPhoneNumber(phoneNumber: string): string { private formatPhoneNumber(phoneNumber: string): string {
if (!phoneNumber) return ""; if (!phoneNumber) return "";
phoneNumber = phoneNumber.replace(/ /g, ""); phoneNumber = phoneNumber.replace(/ /g, "");

View File

@ -18,9 +18,6 @@ import DocumentList from "./DocumentList";
import UserFolderHeader from "./UserFolderHeader"; import UserFolderHeader from "./UserFolderHeader";
import { AnchorStatus } from "@Front/Components/Layouts/Folder/FolderInformation"; import { AnchorStatus } from "@Front/Components/Layouts/Folder/FolderInformation";
import Trash from "@Assets/Icons/trash.svg";
import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders";
type IProps = { type IProps = {
customer: Customer; customer: Customer;
animationDelay?: number; animationDelay?: number;
@ -78,7 +75,6 @@ export default class UserFolder extends React.Component<IProps, IState> {
} }
return ( return (
<div className={classes["root"]} data-opened={this.props.isOpened.toString()}> <div className={classes["root"]} data-opened={this.props.isOpened.toString()}>
<Button variant={EButtonVariant.LINE} icon={Trash} onClick={() => this.removeCustomer(this.props.customer.uid!)} />{" "}
<Confirm <Confirm
isOpen={this.state.isOpenDeletionModal} isOpen={this.state.isOpenDeletionModal}
onClose={this.closeDeletionModal} onClose={this.closeDeletionModal}
@ -219,24 +215,4 @@ export default class UserFolder extends React.Component<IProps, IState> {
isOpenDeletionModal: false, isOpenDeletionModal: false,
}); });
} }
private async removeCustomer(uid: string) {
try {
//use folder put to remove customer from folder
const query = {
q: {
customers: "true",
},
};
const folder = await Folders.getInstance().getByUid(this.props.folder.uid!, query);
if (!folder.customers) return;
const customers = folder.customers.filter((customer) => customer.uid !== uid);
folder.customers = customers;
await Folders.getInstance().put(this.props.folder.uid!, folder);
//redirect on the same page
await this.props.getFolderCallback();
} catch (e) {
console.error(e);
}
}
} }

View File

@ -176,7 +176,7 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
)} )}
</> </>
)} )}
{!this.doesFolderHaveCustomer() && ( {this.canDeleteFolder() && (
<span className={classes["delete-folder"]} onClick={this.openVerifDeleteFolder}> <span className={classes["delete-folder"]} onClick={this.openVerifDeleteFolder}>
<Button variant={EButtonVariant.SECONDARY}>Supprimer le dossier</Button> <Button variant={EButtonVariant.SECONDARY}>Supprimer le dossier</Button>
</span> </span>
@ -405,6 +405,10 @@ class FolderInformationClass extends BasePage<IPropsClass, IState> {
return this.props.selectedFolder?.customers!.length > 0; return this.props.selectedFolder?.customers!.length > 0;
} }
private canDeleteFolder(): boolean {
return (this.props.selectedFolder?.customers?.length ?? 0) === 0 && (this.props.selectedFolder?.documents?.length ?? 0) === 0;
}
private openArchivedModal(): void { private openArchivedModal(): void {
if (this.everyDocumentValidated() && this.props.isAnchored === AnchorStatus.VERIFIED_ON_CHAIN) { if (this.everyDocumentValidated() && this.props.isAnchored === AnchorStatus.VERIFIED_ON_CHAIN) {
this.setState({ isArchivedModalOpen: true }); this.setState({ isArchivedModalOpen: true });

View File

@ -179,6 +179,7 @@ class UpdateClientClass extends BasePage<IPropsClass, IState> {
if (!values["cell_phone_number"]) return; if (!values["cell_phone_number"]) return;
// remove every space from the phone number // remove every space from the phone number
values["cell_phone_number"] = values["cell_phone_number"].replace(/\s/g, ""); values["cell_phone_number"] = values["cell_phone_number"].replace(/\s/g, "");
values["cell_phone_number"] = values["cell_phone_number"].replace(/\./g, "");
if (values["cell_phone_number"] && values["cell_phone_number"].length === 10) { if (values["cell_phone_number"] && values["cell_phone_number"].length === 10) {
// get the first digit of the phone number // get the first digit of the phone number
const firstDigit = values["cell_phone_number"].charAt(0); const firstDigit = values["cell_phone_number"].charAt(0);