diff --git a/src/components/Activities/InfraPlanning.jsx b/src/components/Activities/InfraPlanning.jsx index 0e9c9590..5dce91c4 100644 --- a/src/components/Activities/InfraPlanning.jsx +++ b/src/components/Activities/InfraPlanning.jsx @@ -1,4 +1,3 @@ - import React, { useState, useEffect } from "react"; import "../../components/Project/ProjectInfra.css"; import BuildingModel from "../Project/Infrastructure/BuildingModel"; @@ -8,25 +7,33 @@ import WorkAreaModel from "../Project/Infrastructure/WorkAreaModel"; import TaskModel from "../Project/Infrastructure/TaskModel"; import ProjectRepository from "../../repositories/ProjectRepository"; import Breadcrumb from "../../components/common/Breadcrumb"; -import {useProjectDetails, useProjectInfra, useProjects} from "../../hooks/useProjects"; -import {useHasUserPermission} from "../../hooks/useHasUserPermission"; -import {APPROVE_TASK, ASSIGN_REPORT_TASK, MANAGE_PROJECT_INFRA} from "../../utils/constants"; -import {useDispatch, useSelector} from "react-redux"; -import {useProfile} from "../../hooks/useProfile"; -import {refreshData, setProjectId} from "../../slices/localVariablesSlice"; +import { + useCurrentService, + useProjectDetails, + useProjectInfra, + useProjects, +} from "../../hooks/useProjects"; +import { useHasUserPermission } from "../../hooks/useHasUserPermission"; +import { + APPROVE_TASK, + ASSIGN_REPORT_TASK, + MANAGE_PROJECT_INFRA, +} from "../../utils/constants"; +import { useDispatch, useSelector } from "react-redux"; +import { useProfile } from "../../hooks/useProfile"; +import { refreshData, setProjectId } from "../../slices/localVariablesSlice"; import InfraTable from "../Project/Infrastructure/InfraTable"; import { useSelectedProject } from "../../slices/apiDataManager"; import Loader from "../common/Loader"; - - - const InfraPlanning = () => { const { profile: LoggedUser, refetch: fetchData } = useProfile(); const dispatch = useDispatch(); const selectedProject = useSelectedProject(); + const selectedService = useCurrentService(); - const { projectInfra, isLoading, isError, error, isFetched } = useProjectInfra(selectedProject); + const { projectInfra, isLoading, isError, error, isFetched } = + useProjectInfra(selectedProject, selectedService || "" ); const canManageInfra = useHasUserPermission(MANAGE_PROJECT_INFRA); const canApproveTask = useHasUserPermission(APPROVE_TASK); @@ -63,9 +70,9 @@ const InfraPlanning = () => { return (
-
-
- +
+
+
@@ -73,4 +80,3 @@ const InfraPlanning = () => { }; export default InfraPlanning; - diff --git a/src/components/DailyProgressRport/TaskReportFilterPanel.jsx b/src/components/DailyProgressRport/TaskReportFilterPanel.jsx index 0216a7e7..6ae6ab60 100644 --- a/src/components/DailyProgressRport/TaskReportFilterPanel.jsx +++ b/src/components/DailyProgressRport/TaskReportFilterPanel.jsx @@ -1,10 +1,68 @@ -import React from 'react' +import React, { useState } from 'react' +import { useCurrentService, useProjectInfra } from '../../hooks/useProjects' +import { useSelectedProject } from '../../slices/apiDataManager'; +import { FormProvider, useForm } from 'react-hook-form'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { TaskReportDefaultValue, TaskReportFilterSchema } from './TaskRportScheam'; +import { DateRangePicker1 } from '../common/DateRangePicker'; +import SelectMultiple from '../common/SelectMultiple'; const TaskReportFilterPanel = () => { + const [resetKey, setResetKey] = useState(0); + const selectedProjec = useSelectedProject() + const selectedService = useCurrentService(); + const {projectInfra, isLoading, error, isFetched } = useProjectInfra(selectedProjec,selectedService); + const methods = useForm({resolver:zodResolver(TaskReportFilterSchema),defaultValues:TaskReportDefaultValue}) + const {register,reset,handleSubmit, formState:{errors}} = methods; + const onSubmit =(formData)=>{} return ( -
- -
+ +
+
+ + + +
+ +
+ +
+
+ +
+ + +
+ + +
+
+
) } diff --git a/src/components/DailyProgressRport/TaskRportScheam.jsx b/src/components/DailyProgressRport/TaskRportScheam.jsx new file mode 100644 index 00000000..0aee409f --- /dev/null +++ b/src/components/DailyProgressRport/TaskRportScheam.jsx @@ -0,0 +1,15 @@ +import { z } from "zod"; + +export const TaskReportFilterSchema = z.object({ + buildingIds: z.array(z.string()).optional(), + floorIds: z.array(z.string()).optional(), + startDate: z.string().optional(), + endDate: z.string().optional(), +}); + +export const TaskReportDefaultValue = { + buildingIds:[], + floorIds:[], + startDate:null, + endDate:null +} \ No newline at end of file diff --git a/src/components/Project/ManageProjectInfo.jsx b/src/components/Project/ManageProjectInfo.jsx index 5d56c171..eaf7cacd 100644 --- a/src/components/Project/ManageProjectInfo.jsx +++ b/src/components/Project/ManageProjectInfo.jsx @@ -49,7 +49,9 @@ const ManageProjectInfo = ({ project, handleSubmitForm, onClose, isPending }) => .default(currentDate), projectStatusId: z .string() - .min(1, { message: "Status is required" }) + .min(1, { message: "Status is required" }), + promoterId:z.string().min(1,{message:"Promoter is required"}), + pmcId:z.string().min(1,{message:"PMC is required"}) }) .refine( (data) => { @@ -80,12 +82,13 @@ const ManageProjectInfo = ({ project, handleSubmitForm, onClose, isPending }) => projectAddress: project?.projectAddress || "", startDate: formatDate(project?.startDate) || currentDate, endDate: formatDate(project?.endDate) || currentDate, - // projectStatusId: String(project?.projectStatusId || "00000000-0000-0000-0000-000000000000"), projectStatusId: project?.projectStatusId && project.projectStatusId !== DEFAULT_EMPTY_STATUS_ID ? String(project.projectStatusId) : ACTIVE_STATUS_ID, + promoterId:project.promoterId, + pmcId:project.pmcId }, mode: "onChange", }); diff --git a/src/components/Project/MapUsers.jsx b/src/components/Project/MapUsers.jsx index 7aecb456..af1b4615 100644 --- a/src/components/Project/MapUsers.jsx +++ b/src/components/Project/MapUsers.jsx @@ -121,7 +121,7 @@ const MapUsers = ({
-

Assign Employee

+

Add Employee To Project

{(filteredData.length > 0 || diff --git a/src/components/Project/ProjectInfra.jsx b/src/components/Project/ProjectInfra.jsx index 29a0b283..643f6106 100644 --- a/src/components/Project/ProjectInfra.jsx +++ b/src/components/Project/ProjectInfra.jsx @@ -35,7 +35,10 @@ const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => { const selectedService = useCurrentService(); const reloadedData = useSelector((store) => store.localVariables.reload); const [expandedBuildings, setExpandedBuildings] = useState([]); - const { projectInfra, isLoading, error } = useProjectInfra(projectId); + const { projectInfra, isLoading, error } = useProjectInfra( + projectId, + selectedService + ); const { projects_Details, refetch, loading } = useProjectDetails(data?.id); const [project, setProject] = useState(projects_Details); const ManageInfra = useHasUserPermission(MANAGE_PROJECT_INFRA); @@ -48,7 +51,6 @@ const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => { const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId); - useEffect(() => { setProject(projectInfra); }, [data, projects_Details]); diff --git a/src/components/Project/ProjectOrganization/ProjectAssignedOrgs.jsx b/src/components/Project/ProjectOrganization/ProjectAssignedOrgs.jsx index 53a2365a..2aa2b046 100644 --- a/src/components/Project/ProjectOrganization/ProjectAssignedOrgs.jsx +++ b/src/components/Project/ProjectOrganization/ProjectAssignedOrgs.jsx @@ -29,7 +29,7 @@ const ProjectAssignedOrgs = () => { label: "Service Name", getValue: (org) => (
- N/A + {org?.service?.name}
), align: "text-start", diff --git a/src/hooks/useProjects.js b/src/hooks/useProjects.js index 77ed38e1..eeac3c31 100644 --- a/src/hooks/useProjects.js +++ b/src/hooks/useProjects.js @@ -190,17 +190,17 @@ export const useProjectName = () => { }; }; -export const useProjectInfra = (projectId) => { +export const useProjectInfra = (projectId,serviceId) => { const { data: projectInfra, isLoading, error, isFetched, } = useQuery({ - queryKey: ["ProjectInfra", projectId], + queryKey: ["ProjectInfra", projectId,serviceId], queryFn: async () => { if (!projectId) return null; - const res = await ProjectRepository.getProjectInfraByproject(projectId); + const res = await ProjectRepository.getProjectInfraByproject(projectId,serviceId); return res.data; }, enabled: !!projectId, diff --git a/src/pages/Activities/TaskPlannng.jsx b/src/pages/Activities/TaskPlannng.jsx index e3e74f9c..8728240f 100644 --- a/src/pages/Activities/TaskPlannng.jsx +++ b/src/pages/Activities/TaskPlannng.jsx @@ -64,7 +64,7 @@ const TaskPlanning = () => { {/* Planning Component */} {selectedProject ? ( - + ) : (
Please select a project
)} diff --git a/src/pages/DailyProgressReport/DailyProgrssReport.jsx b/src/pages/DailyProgressReport/DailyProgrssReport.jsx index 79147d5a..cce50688 100644 --- a/src/pages/DailyProgressReport/DailyProgrssReport.jsx +++ b/src/pages/DailyProgressReport/DailyProgrssReport.jsx @@ -87,10 +87,10 @@ const DailyProgrssReport = () => { onChange={(e) => setService(e.target.value)} > {isLoading ? ( - + ) : ( <> - {data?.data?.map((service) => ( diff --git a/src/repositories/ProjectRepository.jsx b/src/repositories/ProjectRepository.jsx index 8f5ece39..42dde36a 100644 --- a/src/repositories/ProjectRepository.jsx +++ b/src/repositories/ProjectRepository.jsx @@ -19,7 +19,6 @@ const ProjectRepository = { return api.get(url); }, - getEmployeesByProject: (projectId) => api.get(`/api/Project/employees/get/${projectId}`), @@ -42,7 +41,14 @@ const ProjectRepository = { projectNameList: () => api.get("/api/project/list/basic"), getProjectDetails: (id) => api.get(`/api/project/details/${id}`), - getProjectInfraByproject: (id) => api.get(`/api/project/infra-details/${id}`), + getProjectInfraByproject: (projectId, serviceId) => { + let url = `/api/project/infra-details/${projectId}`; + + if (serviceId) { + url + `?serviceId=${serviceId}`; + } + return api.get(url); + }, getProjectTasksByWorkArea: (workAreaId, serviceId) => { let url = `/api/project/tasks/${workAreaId}`; if (serviceId) { @@ -58,16 +64,24 @@ const ProjectRepository = { // Permission Managment for Employee at Project Level - getProjectLevelEmployeeList: (projectId) => api.get(`/api/Project/get/proejct-level/employees/${projectId}`), - getProjectLevelModules: () => api.get(`/api/Project/get/proejct-level/modules`), - getProjectLevelEmployeePermissions: (employeeId, projectId) => api.get(`/api/Project/get/project-level-permission/employee/${employeeId}/project/${projectId}`), - updateProjectLevelEmployeePermission: (data) => api.post(`/api/Project/assign/project-level-permission`, data), - getAllProjectLevelPermission: (projectId) => api.get(`/api/Project/get/all/project-level-permission/${projectId}`), - + getProjectLevelEmployeeList: (projectId) => + api.get(`/api/Project/get/proejct-level/employees/${projectId}`), + getProjectLevelModules: () => + api.get(`/api/Project/get/proejct-level/modules`), + getProjectLevelEmployeePermissions: (employeeId, projectId) => + api.get( + `/api/Project/get/project-level-permission/employee/${employeeId}/project/${projectId}` + ), + updateProjectLevelEmployeePermission: (data) => + api.post(`/api/Project/assign/project-level-permission`, data), + getAllProjectLevelPermission: (projectId) => + api.get(`/api/Project/get/all/project-level-permission/${projectId}`), // Services - getProjectAssignedServices: (projectId) => api.get(`/api/Project/get/assigned/services/${projectId}`), - getProjectAssignedOrganizations: (projectId) => api.get(`/api/Project/get/assigned/organization/${projectId}`) + getProjectAssignedServices: (projectId) => + api.get(`/api/Project/get/assigned/services/${projectId}`), + getProjectAssignedOrganizations: (projectId) => + api.get(`/api/Project/get/assigned/organization/${projectId}`), }; export const TasksRepository = {