import React, { useState, useEffect, useCallback } from "react"; import "./ProjectInfra.css"; import BuildingModel from "./Infrastructure/BuildingModel"; import FloorModel from "./Infrastructure/FloorModel"; import showToast from "../../services/toastService"; import WorkAreaModel from "./Infrastructure/WorkAreaModel"; import TaskModel from "./Infrastructure/TaskModel"; import ProjectRepository, { TasksRepository, } from "../../repositories/ProjectRepository"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { MANAGE_PROJECT_INFRA, MANAGE_TASK } from "../../utils/constants"; import InfraTable from "./Infrastructure/InfraTable"; import { cacheData, clearCacheKey, getCachedData, useSelectedProject, } from "../../slices/apiDataManager"; import { useCurrentService, useProjectAssignedServices, useProjectDetails, useProjectInfra, } from "../../hooks/useProjects"; import { useDispatch, useSelector } from "react-redux"; import { refreshData } from "../../slices/localVariablesSlice"; import eventBus from "../../services/eventBus"; import { useParams } from "react-router-dom"; import GlobalModel from "../common/GlobalModel"; import { setService } from "../../slices/globalVariablesSlice"; const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => { const projectId = useSelectedProject(); const selectedService = useCurrentService(); const reloadedData = useSelector((store) => store.localVariables.reload); const [expandedBuildings, setExpandedBuildings] = useState([]); const { projectInfra, isLoading, error } = useProjectInfra(projectId); const { projects_Details, refetch, loading } = useProjectDetails(data?.id); const [project, setProject] = useState(projects_Details); const ManageInfra = useHasUserPermission(MANAGE_PROJECT_INFRA); const ManageTask = useHasUserPermission(MANAGE_TASK); const [showModalFloor, setshowModalFloor] = useState(false); const [showModalWorkArea, setshowModalWorkArea] = useState(false); const [showModalTask, setshowModalTask] = useState(false); const [showModalBuilding, setshowModalBuilding] = useState(false); const dispatch = useDispatch(); const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId); useEffect(() => { setProject(projectInfra); }, [data, projects_Details]); const signalRHandler = (response) => { setProject(response); }; return ( <> {showModalBuilding && ( setshowModalBuilding(false)} > setshowModalBuilding(false)} /> )} {showModalFloor && ( setshowModalFloor(false)} > setshowModalFloor(false)} /> )} {showModalWorkArea && ( setshowModalWorkArea(false)} > setshowModalWorkArea(false)} /> )} {showModalTask && ( setshowModalTask(false)} > setshowModalTask(false)} /> )}
{!servicesLoading && assignedServices?.length > 0 && (assignedServices.length > 1 ? ( ) : (
{assignedServices[0].name}
))}
{/* Buttons Section (aligned to right) */}
{ManageInfra && ( <> )} {(ManageTask || ManageInfra) && ( )}
{isLoading &&

Loading....

} {projectInfra && projectInfra?.length > 0 && ( )} {!isLoading && projectInfra?.length == 0 && (

No Infra Avaiable

)}
); }; export default ProjectInfra;