From 3968a47d9883d0f762b8d03281bd6e0778827e26 Mon Sep 17 00:00:00 2001 From: Pramod Mahajan Date: Tue, 8 Jul 2025 15:11:03 +0530 Subject: [PATCH] fixed : project updation issue --- src/components/Project/AboutProject.jsx | 64 +++++++++++++++++--- src/components/Project/ManageProjectInfo.jsx | 15 ++--- src/components/Project/ProjectCard.jsx | 1 + src/hooks/useProjects.js | 9 ++- src/pages/project/ProjectDetails.jsx | 4 +- src/pages/project/ProjectListView.jsx | 3 +- 6 files changed, 76 insertions(+), 20 deletions(-) diff --git a/src/components/Project/AboutProject.jsx b/src/components/Project/AboutProject.jsx index 53e36e0a..db328f3a 100644 --- a/src/components/Project/AboutProject.jsx +++ b/src/components/Project/AboutProject.jsx @@ -1,14 +1,47 @@ import React, { useEffect, useState } from "react"; import moment from "moment"; import { getProjectStatusName } from "../../utils/projectStatus"; -import {useProjectDetails} from "../../hooks/useProjects"; +import {useProjectDetails, useUpdateProject} from "../../hooks/useProjects"; import {useParams} from "react-router-dom"; -const AboutProject = () => { +import {useHasUserPermission} from "../../hooks/useHasUserPermission"; +import {MANAGE_PROJECT} from "../../utils/constants"; +import GlobalModel from "../common/GlobalModel"; +import ManageProjectInfo from "./ManageProjectInfo"; +const AboutProject = () => +{ + const [ IsOpenModal, setIsOpenModal ] = useState( false ) + const {mutate: UpdateProjectDetails, isPending} = useUpdateProject( { + onSuccessCallback: () => + { + setIsOpenModal(false) + } + }) const {projectId} = useParams(); - const {projects_Details,isLoading,error} = useProjectDetails(projectId) + const manageProject = useHasUserPermission(MANAGE_PROJECT); + const {projects_Details, isLoading, error,refetch} = useProjectDetails( projectId ) + const handleFormSubmit = ( updatedProject ) => + { + if ( projects_Details?.id ) + { + UpdateProjectDetails({ projectId: projects_Details?.id,updatedData: updatedProject, + } ); + refetch() + } +}; return ( <> + {IsOpenModal && ( + setIsOpenModal(false)}> + setIsOpenModal( false )} + isPending={isPending} + /> + + )} {projects_Details && ( + <>
@@ -50,8 +83,7 @@ const AboutProject = () => {
  • Status:{" "} - {projects_Details?.projectStatus?.status -} + {getProjectStatusName(projects_Details.projectStatusId)}
  • @@ -70,10 +102,28 @@ const AboutProject = () => {
    {projects_Details.projectAddress}
    )}
  • + +
  • + {manageProject && ( + + )} +
  • -
    - )} + + + )} + {isLoading && loading...} diff --git a/src/components/Project/ManageProjectInfo.jsx b/src/components/Project/ManageProjectInfo.jsx index 1c289c16..722ad453 100644 --- a/src/components/Project/ManageProjectInfo.jsx +++ b/src/components/Project/ManageProjectInfo.jsx @@ -14,9 +14,8 @@ const formatDate = (date) => { } return d.toLocaleDateString('en-CA'); }; -const ManageProjectInfo = ({ project, handleSubmitForm, onClose }) => { +const ManageProjectInfo = ({ project, handleSubmitForm, onClose,isPending }) => { const [CurrentProject, setCurrentProject] = useState(); - const [isloading, setLoading] = useState(false); const [addressLength, setAddressLength] = useState(0); const maxAddressLength = 500; @@ -116,9 +115,10 @@ const DEFAULT_EMPTY_STATUS_ID = "00000000-0000-0000-0000-000000000000"; */ - const onSubmitForm = (updatedProject) => { - setLoading(true); - handleSubmitForm(updatedProject, setLoading, reset); + const onSubmitForm = ( updatedProject ) => + { + + handleSubmitForm(updatedProject); }; const handleCancel = () => { @@ -313,14 +313,15 @@ const DEFAULT_EMPTY_STATUS_ID = "00000000-0000-0000-0000-000000000000"; )}
    - diff --git a/src/components/Project/ProjectCard.jsx b/src/components/Project/ProjectCard.jsx index 51db4647..015312fe 100644 --- a/src/components/Project/ProjectCard.jsx +++ b/src/components/Project/ProjectCard.jsx @@ -78,6 +78,7 @@ const ProjectCard = ({ projectData, recall }) => { project={projects_Details} handleSubmitForm={handleFormSubmit} onClose={handleClose} + isPending={isPending} /> )} diff --git a/src/hooks/useProjects.js b/src/hooks/useProjects.js index 0f186271..e2949077 100644 --- a/src/hooks/useProjects.js +++ b/src/hooks/useProjects.js @@ -390,14 +390,15 @@ export const useUpdateProject = ({ onSuccessCallback }) => { isSuccess, isError, } = useMutation({ - mutationFn: async ({ projectId, updatedData }) => { + mutationFn: async ( {projectId, updatedData} ) => + { return await ProjectRepository.updateProject(projectId, updatedData); }, onSuccess: ( data, variables ) => { const { projectId } = variables; - + queryClient.invalidateQueries({queryKey:["ProjectsList"]}); queryClient.invalidateQueries( {queryKey: [ "projectinfo", projectId ]} ); queryClient.invalidateQueries({queryKey:['basicProjectNameList']}); @@ -414,7 +415,9 @@ export const useUpdateProject = ({ onSuccessCallback }) => { } }, - onError: (error) => { + onError: ( error ) => + { + console.log(error) showToast(error?.message || "Error while updating project", "error"); }, }); diff --git a/src/pages/project/ProjectDetails.jsx b/src/pages/project/ProjectDetails.jsx index 696e2390..f34586aa 100644 --- a/src/pages/project/ProjectDetails.jsx +++ b/src/pages/project/ProjectDetails.jsx @@ -141,11 +141,11 @@ const ProjectDetails = () => { const handler = useCallback( (msg) => { - if (msg.keyword === "Update_Project" && project.id === msg.response.id) { + if (msg.keyword === "Update_Project" && projects_Details.id === msg.response.id) { refetch() } }, - [project, handleDataChange] + [projects_Details, handleDataChange] ); useEffect(() => { eventBus.on("project", handler); diff --git a/src/pages/project/ProjectListView.jsx b/src/pages/project/ProjectListView.jsx index 0a229039..fed48280 100644 --- a/src/pages/project/ProjectListView.jsx +++ b/src/pages/project/ProjectListView.jsx @@ -80,7 +80,8 @@ const ProjectListView = ({ projectData, recall }) => { )}