Resolve #86c24bdcu "Feature/restore fast react "

This commit is contained in:
AmirHossein Mahmoodi
2025-02-27 11:55:04 +00:00
parent 8ff3c7422b
commit e8d0977569
4 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import { RESTORE_FAST_REACT } from "@/core/utils/routes";
import useRequest from "@/lib/hooks/useRequest";
import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
import { useState } from "react";
const RestoreContent = ({ rowId, mutate, setOpenRestoreDialog }) => {
const [submitting, setSubmitting] = useState(false);
const requestServer = useRequest({ notificationSuccess: true });
const handleClick = () => {
setSubmitting(true);
requestServer(`${RESTORE_FAST_REACT}/${rowId}`, "post")
.then(() => {
mutate();
setOpenRestoreDialog(false);
setSubmitting(false);
})
.catch(() => {
setSubmitting(false);
});
};
return (
<>
<DialogContent>
<Stack alignItems="center" spacing={2}>
<Typography textAlign="center" fontWeight="bold" fontSize="16px" mt={2}>
آیا از بازگردانی فعالیت اطمینان دارید؟
</Typography>
</Stack>
</DialogContent>
<DialogActions sx={{ justifyContent: "center", paddingBottom: 2, width: "100%" }}>
<Button onClick={() => setOpenRestoreDialog(false)} variant="contained" color="error">
خیر !
</Button>
<Button onClick={handleClick} variant="contained" color="primary" disabled={submitting}>
{submitting ? "درحال ارسال اطلاعات..." : "بله اطمینان دارم"}
</Button>
</DialogActions>
</>
);
};
export default RestoreContent;

View File

@@ -0,0 +1,32 @@
import React, { useState } from "react";
import { Tooltip, IconButton, Dialog, DialogTitle } from "@mui/material";
import ReplyIcon from "@mui/icons-material/Reply";
import RestoreContent from "./RestoreContent";
const RestoreForm = ({ rowId, mutate }) => {
const [openRestoreDialog, setOpenRestoreDialog] = useState(false);
return (
<>
<Tooltip title="بازگردانی">
<IconButton color="primary" onClick={() => setOpenRestoreDialog(true)}>
<ReplyIcon />
</IconButton>
</Tooltip>
<Dialog
open={openRestoreDialog}
onClose={() => setOpenRestoreDialog(false)}
PaperProps={{
sx: {
boxShadow: "rgba(60, 64, 67, 0.3) 0px 1px 16px 0px, rgba(60, 64, 67, 0.15) 0px 1px 10px 0px",
},
}}
dir="rtl"
maxWidth={"md"}
>
<DialogTitle>بازگردانی فعالیت</DialogTitle>
<RestoreContent rowId={rowId} mutate={mutate} setOpenRestoreDialog={setOpenRestoreDialog} />
</Dialog>
</>
);
};
export default RestoreForm;

View File

@@ -2,12 +2,14 @@ import { Box } from "@mui/material";
import ConfirmForm from "./ConfirmDialog";
import RejectForm from "./RejectDialog";
import { usePermissions } from "@/lib/hooks/usePermissions";
import RestoreForm from "./RestoreForm";
const RowActions = ({ row, mutate }) => {
const { data: userPermissions } = usePermissions();
const hasSupervisePermission = userPermissions.some((item) =>
["supervise-fast-react", "supervise-fast-react-province"].includes(item)
);
const hasRestorePermission = userPermissions.includes("restore-fast-react");
return (
<Box sx={{ display: "flex", gap: 1 }}>
{hasSupervisePermission && row.original?.status === 0 && (
@@ -16,6 +18,7 @@ const RowActions = ({ row, mutate }) => {
{hasSupervisePermission && row.original?.status === 0 && (
<RejectForm rowId={row.getValue("id")} mutate={mutate} />
)}
{hasRestorePermission && <RestoreForm rowId={row.getValue("id")} mutate={mutate} />}
</Box>
);
};

View File

@@ -119,3 +119,4 @@ export const REJECT_BY_FAST_REACT_SUPERVISOR = api + "/api/v3/road_observations/
export const GET_FAST_REACT_OPERATOR = api + "/api/v3/road_observations/operator_index";
export const GET_FAST_REACT_REFER_LIST = api + "/api/v3/road_observations/refer_list";
export const REFER_FAST_REACT = api + "/api/v3/road_observations/refer";
export const RESTORE_FAST_REACT = api + "/api/v3/road_observations/restore";