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 && (