Implementing Restore Functionality in Jobs.

This commit is contained in:
Kartik Sharma 2025-11-21 11:39:36 +05:30
parent 17a9f4a9b1
commit ee4ef18594
2 changed files with 57 additions and 35 deletions

View File

@ -28,28 +28,26 @@ const JobList = ({ isArchive }) => {
); );
const [isArchiveModalOpen, setIsArchiveModalOpen] = useState(false); const [isArchiveModalOpen, setIsArchiveModalOpen] = useState(false);
const [archiveJobId, setArchiveJobId] = useState(null); const [archiveJobId, setArchiveJobId] = useState(null);
const [isArchiveAction, setIsArchiveAction] = useState(true);
const handleArchive = () => { const handleArchive = () => {
const payload = [ const payload = [
{ {
op: "replace", op: "replace",
path: "/isArchive", path: "/isArchive",
value: true, value: isArchiveAction,
}, },
]; ];
UpdateJob({ UpdateJob({
id: archiveJobId, id: archiveJobId,
payload, payload,
isArchiveAction: true, isArchiveAction,
}); });
setIsArchiveModalOpen(false); setIsArchiveModalOpen(false);
setArchiveJobId(null); setArchiveJobId(null);
}; };
const jobGrid = [ const jobGrid = [
{ {
key: "jobTicketUId", key: "jobTicketUId",
@ -123,17 +121,21 @@ const JobList = ({ isArchive }) => {
return ( return (
<> <>
{isArchiveModalOpen && ( {isArchiveModalOpen && (
<ConfirmModal <ConfirmModal
isOpen={isArchiveModalOpen} isOpen={isArchiveModalOpen}
type="success" type={isArchiveAction ? "success" : "undo"}
header="Archive Job" header={isArchiveAction ? "Archive Job" : "Restore Job"}
message="Are you sure you want to archive this job?" message={
isArchiveAction
? "Are you sure you want to archive this job?"
: "Are you sure you want to restore this job?"
}
onSubmit={handleArchive} onSubmit={handleArchive}
onClose={() => setIsArchiveModalOpen(false)} onClose={() => setIsArchiveModalOpen(false)}
loading={false} loading={false}
/> />
)} )}
<div className="dataTables_wrapper dt-bootstrap5 no-footer table-responsive"> <div className="dataTables_wrapper dt-bootstrap5 no-footer table-responsive">
@ -170,6 +172,7 @@ const JobList = ({ isArchive }) => {
onClick={() => onClick={() =>
setSelectedJob({ showCanvas: true, job: row?.id }) setSelectedJob({ showCanvas: true, job: row?.id })
} }
> >
{col.getValue(row)} {col.getValue(row)}
</td> </td>
@ -183,6 +186,9 @@ const JobList = ({ isArchive }) => {
<i className="bx bx-dots-vertical-rounded bx-md"></i> <i className="bx bx-dots-vertical-rounded bx-md"></i>
</button> </button>
<div className="dropdown-menu dropdown-menu-end"> <div className="dropdown-menu dropdown-menu-end">
{!isArchive && (
<>
<button <button
className="dropdown-item py-1" className="dropdown-item py-1"
onClick={() => onClick={() =>
@ -191,7 +197,7 @@ const JobList = ({ isArchive }) => {
> >
<i className="bx bx-detail bx-sm"></i> View <i className="bx bx-detail bx-sm"></i> View
</button> </button>
<>
<button <button
className="dropdown-item py-1" className="dropdown-item py-1"
onClick={() => onClick={() =>
@ -201,12 +207,27 @@ const JobList = ({ isArchive }) => {
<i className="bx bx-edit bx-sm"></i> Edit <i className="bx bx-edit bx-sm"></i> Edit
</button> </button>
</> </>
)}
{canArchive(row?.status?.id) && ( {isArchive && (
<button <button
className="dropdown-item py-1" className="dropdown-item py-1"
onClick={() => { onClick={() => {
setArchiveJobId(row.id); setArchiveJobId(row.id);
setIsArchiveAction(false);
setIsArchiveModalOpen(true);
}}
>
<i className="bx bx-reset bx-sm"></i> Restore
</button>
)}
{!isArchive && canArchive(row?.status?.id) && (
<button
className="dropdown-item py-1"
onClick={() => {
setArchiveJobId(row.id);
setIsArchiveAction(true);
setIsArchiveModalOpen(true); setIsArchiveModalOpen(true);
}} }}
> >
@ -215,6 +236,7 @@ const JobList = ({ isArchive }) => {
)} )}
</div> </div>
</div> </div>
</td> </td>
</tr> </tr>

View File

@ -264,7 +264,6 @@ export const useCreateServiceProjectJob = (onSuccessCallback) => {
export const useUpdateServiceProjectJob = (onSuccessCallback) => { export const useUpdateServiceProjectJob = (onSuccessCallback) => {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation({ return useMutation({
mutationFn: async ({ id, payload, isArchiveAction = false }) => { mutationFn: async ({ id, payload, isArchiveAction = false }) => {
const resp = await ServiceProjectRepository.UpdateJob(id, payload); const resp = await ServiceProjectRepository.UpdateJob(id, payload);
@ -281,10 +280,11 @@ export const useUpdateServiceProjectJob = (onSuccessCallback) => {
if (isArchiveAction) { if (isArchiveAction) {
showToast("Job archived successfully", "success"); showToast("Job archived successfully", "success");
} else { } else {
showToast("Job Updated successfully", "success"); showToast("Job restored successfully", "success");
} }
}, },
onError: (error) => { onError: (error) => {
showToast( showToast(
error?.response?.data?.message || error?.response?.data?.message ||