import React, { useState, useEffect } from "react"; import AssignTask from "../AssignTask"; import { useParams } from "react-router-dom"; import EditActivityModal from "./EditActivityModal"; import { useHasUserPermission } from "../../../hooks/useHasUserPermission"; import { ASSIGN_REPORT_TASK, MANAGE_PROJECT_INFRA, MANAGE_TASK, } from "../../../utils/constants"; import ConfirmModal from "../../common/ConfirmModal"; import ProjectRepository from "../../../repositories/ProjectRepository"; import { useDeleteProjectTask, useProjectDetails, } from "../../../hooks/useProjects"; import showToast from "../../../services/toastService"; import { cacheData, clearCacheKey, getCachedData, } from "../../../slices/apiDataManager"; import { refreshData } from "../../../slices/localVariablesSlice"; import GlobalModel from "../../common/GlobalModel"; import { useDeleteMasterItem } from "../../../hooks/masterHook/useMaster"; import { useSelector } from "react-redux"; const WorkItem = ({ workItem, forBuilding, forFloor, forWorkArea, deleteHandleTask, }) => { const projectId = useSelector((store) => store.localVariables.projectId); const isTaskPlanning = /^\/activities\/task$/.test(location.pathname); const [itemName, setItemName] = useState(""); const [NewWorkItem, setNewWorkItem] = useState(); const [isModalOpen, setIsModalOpen] = useState(false); const [showModal, setShowModal] = useState(false); const [showModal2, setShowModal2] = useState(false); const ManageTasks = useHasUserPermission(MANAGE_TASK); const ManageInfra = useHasUserPermission(MANAGE_PROJECT_INFRA); const ManageAndAssignTak = useHasUserPermission(ASSIGN_REPORT_TASK); const [loadingDelete, setLoadingDelete] = useState(false); const project = getCachedData("projectInfo"); const openModal = () => setIsModalOpen(true); const closeModal = () => setIsModalOpen(false); const showModalDelete = () => setShowModal2(true); const closeModalDelete = () => setShowModal2(false); const getProgress = (planned, completed) => { return (completed * 100) / planned + "%"; }; const { mutate: DeleteTask, isPending } = useDeleteProjectTask(() => { closeModalDelete?.(); }); const handleAssignTask = () => { setItemName(""); }; useEffect(() => { setNewWorkItem(workItem); }, [workItem]); const refreshWorkItem = (plannedTask) => { if (workItem) { const updated = { ...workItem, todaysAssigned: (workItem.todaysAssigned || 0) + plannedTask, }; setNewWorkItem(updated); } }; let assigndata = { building: forBuilding, floor: forFloor, workArea: forWorkArea, workItem, }; const hasWorkItem = NewWorkItem && NewWorkItem; useEffect(() => { const tooltipTriggerList = Array.from( document.querySelectorAll('[data-bs-toggle="tooltip"]') ); tooltipTriggerList.forEach((el) => new bootstrap.Tooltip(el)); }, []); const handleSubmit = async () => { let WorkItemId = workItem.workItemId || workItem.id; DeleteTask({ workItemId: WorkItemId, workAreaId: forWorkArea?.id, completedTask: workItem?.completedWork, plannedTask: workItem?.plannedWork, buildingId: forBuilding?.id, floorId: forFloor?.id, }); }; const PlannedWork = NewWorkItem?.workItem?.plannedWork || workItem?.plannedWork; const CompletedWork = NewWorkItem?.workItem?.completedWork ?? workItem?.completedWork; return ( <> {isModalOpen && ( )} {showModal && ( setShowModal(false)} > setShowModal(false)} /> )} {showModal2 && ( )} {/* Activity Name - always visible */} {hasWorkItem ? NewWorkItem?.workItem?.activityMaster?.activityName || workItem.activityMaster?.activityName : "NA"} {hasWorkItem ? NewWorkItem?.workItem?.activityMaster?.activityGroupMaster?.service?.name ?? workItem?.activityMaster?.activityGroupMaster?.service?.name ?? "NA" : "NA"} {" "} {hasWorkItem ? NewWorkItem?.workItem?.activityMaster?.activityGroupMaster?.service?.name : "NA"} {/* Status - visible only on small screens */} {hasWorkItem ? NewWorkItem?.workItem?.completedWork ?? workItem?.completedWork ?? "NA" : "NA"} /{" "} {hasWorkItem ? NewWorkItem?.workItem?.plannedWork || workItem?.plannedWork : "NA"} {hasWorkItem ? NewWorkItem?.workItem?.workCategoryMaster?.name || workItem.workCategoryMaster?.name || "NA" : "NA"} {hasWorkItem ? `${ NewWorkItem?.workItem?.completedWork ?? workItem?.completedWork ?? "0" }/${ NewWorkItem?.workItem?.plannedWork ?? workItem?.plannedWork ?? "0" }` : "NA"} {hasWorkItem ? `${ NewWorkItem?.todaysAssigned ?? workItem?.todaysAssigned ?? "0" }` : "NA"}
{(ManageInfra || (ManageAndAssignTak && PlannedWork !== CompletedWork)) && ( {/* Desktop (md and up): inline icons */}
{isTaskPlanning && ManageAndAssignTak && PlannedWork !== CompletedWork && ( )} {ManageInfra && ( <> setShowModal(true)} role="button" > )}
{/* Mobile (sm only): dropdown with icons */}
)} ); }; export default WorkItem;