Archiving deed types

This commit is contained in:
Maxime Lalo 2023-07-25 14:44:01 +02:00
parent dfc3b79eb8
commit df3f4ff590
3 changed files with 53 additions and 2 deletions

View File

@ -81,4 +81,14 @@ export default class DeedTypes extends BaseAdmin {
return Promise.reject(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);
}
}
} }

View File

@ -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 });

View File

@ -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,26 @@ 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>({
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;
@ -136,8 +157,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}>
Archiver
</Button>
</div> </div>
<Confirm
isOpen={isDeleteModalOpened}
onClose={closeDeleteModal}
onAccept={deleteDeedType}
closeBtn
header={"Archiver 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 archiver ce type d'acte ?
</Typography>
</div>
</Confirm>
</div> </div>
</DefaultDeedTypesDashboard> </DefaultDeedTypesDashboard>
); );