import React, { useEffect, useState } from "react"; import WorkItem from "./WorkItem"; import { useProjectDetails } from "../../../hooks/useProjects"; import { cacheData, getCachedData } from "../../../slices/apiDataManager"; import { useDispatch } from "react-redux"; import { refreshData } from "../../../slices/localVariablesSlice"; import ProjectRepository from "../../../repositories/ProjectRepository"; import showToast from "../../../services/toastService"; const WorkArea = ({ workArea, floor, forBuilding }) => { const [workItems, setWorkItems] = useState([]); const dispatch = useDispatch(); const [Project, setProject] = useState(); useEffect(() => { const project = getCachedData("projectInfo"); setProject(project); if (!project || !forBuilding?.id || !floor?.id || !workArea?.id) return; const building = project.buildings?.find((b) => b.id === forBuilding.id); const floors = building?.floors?.find((f) => f.id === floor.id); const workAreas = floor?.workAreas?.find((wa) => wa.id === workArea.id); setWorkItems(workAreas?.workItems || []); }, [workArea, floor, floor]); const HanldeDeleteActivity = async (workItemId) => { try { const updatedProject = { ...Project.data }; const response = await ProjectRepository.deleteProjectTask(workItemId); const newProject = { ...updatedProject, buildings: updatedProject?.buildings.map((building) => building?.id === building?.id ? { ...building, floors: building?.floors?.map((floor) => floor.id === floor?.id ? { ...floor, workAreas: floor.workAreas.map((workArea) => workArea.id === workArea?.id ? { ...workArea, workItems: workArea.workItems.filter( (item) => String(item?.workItem?.id ?? item?.id) !== String(workItemId) ), } : workArea ), } : floor ), } : building ), }; cacheData("projectInfo", { projectId: newProject.id, data: newProject, }); dispatch(refreshData(true)); showToast("Activity Deleted Successfully", "success"); } catch (error) { const message = error.response?.data?.message || error.message || "An unexpected error occurred"; showToast(message, "error"); } }; useEffect(() => { const toggleButtons = document.querySelectorAll(".accordion-button"); toggleButtons.forEach((btn) => { const icon = btn.querySelector(".toggle-icon"); btn.addEventListener("click", () => { setTimeout(() => { if (btn.classList.contains("collapsed")) { icon.classList.remove("bx-minus-circle"); icon.classList.add("bx-plus-circle"); } else { icon.classList.remove("bx-plus-circle"); icon.classList.add("bx-minus-circle"); } }, 300); // allow Bootstrap collapse to complete }); }); return () => { toggleButtons.forEach((btn) => { btn.removeEventListener("click", () => {}); }); }; }, []); return (
{/* Accordion Header */}

{/* Accordion Body */} {workItems && workItems.length > 0 && (
{workArea.workItems.map((workItem) => ( ))}
Activity Status Category Completed/Planned Progress Actions
)}
); }; export default WorkArea;