fixed : project updation issue

This commit is contained in:
Pramod Mahajan 2025-07-08 15:11:03 +05:30
parent ae07e9629b
commit 3968a47d98
6 changed files with 76 additions and 20 deletions

View File

@ -1,14 +1,47 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import moment from "moment"; import moment from "moment";
import { getProjectStatusName } from "../../utils/projectStatus"; import { getProjectStatusName } from "../../utils/projectStatus";
import {useProjectDetails} from "../../hooks/useProjects"; import {useProjectDetails, useUpdateProject} from "../../hooks/useProjects";
import {useParams} from "react-router-dom"; 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 {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 ( return (
<> <>
{IsOpenModal && (
<GlobalModel isOpen={IsOpenModal} closeModal={()=>setIsOpenModal(false)}>
<ManageProjectInfo
project={projects_Details}
handleSubmitForm={handleFormSubmit}
onClose={() => setIsOpenModal( false )}
isPending={isPending}
/>
</GlobalModel>
)}
{projects_Details && ( {projects_Details && (
<>
<div className="card mb-6"> <div className="card mb-6">
<div className="card-header text-start"> <div className="card-header text-start">
<h6 className="card-action-title mb-0"> <h6 className="card-action-title mb-0">
@ -50,8 +83,7 @@ const AboutProject = () => {
<li className="d-flex align-items-center mb-3"> <li className="d-flex align-items-center mb-3">
<i className="bx bx-trophy"></i> <i className="bx bx-trophy"></i>
<span className="fw-medium mx-2">Status:</span>{" "} <span className="fw-medium mx-2">Status:</span>{" "}
<span>{projects_Details?.projectStatus?.status <span>{getProjectStatusName(projects_Details.projectStatusId)}</span>
}</span>
</li> </li>
<li className="d-flex align-items-center mb-3"> <li className="d-flex align-items-center mb-3">
<i className="bx bx-user"></i> <i className="bx bx-user"></i>
@ -70,11 +102,29 @@ const AboutProject = () => {
<div className="ms-4 text-start">{projects_Details.projectAddress}</div> <div className="ms-4 text-start">{projects_Details.projectAddress}</div>
)} )}
</li> </li>
<li className="d-flex justify-content-center mb-3">
{manageProject && (
<button
type="button"
className={`btn btn-sm btn-primary ${
!manageProject && "d-none"
}`}
data-bs-toggle="modal"
data-bs-target="#edit-project-modal"
onClick={()=>setIsOpenModal(true)}
>
Modify Details
</button>
)}
</li>
</ul> </ul>
</div> </div>
</div> </div>
</>
)} )}
{isLoading && <span>loading...</span>} {isLoading && <span>loading...</span>}
</> </>
); );

View File

@ -14,9 +14,8 @@ const formatDate = (date) => {
} }
return d.toLocaleDateString('en-CA'); return d.toLocaleDateString('en-CA');
}; };
const ManageProjectInfo = ({ project, handleSubmitForm, onClose }) => { const ManageProjectInfo = ({ project, handleSubmitForm, onClose,isPending }) => {
const [CurrentProject, setCurrentProject] = useState(); const [CurrentProject, setCurrentProject] = useState();
const [isloading, setLoading] = useState(false);
const [addressLength, setAddressLength] = useState(0); const [addressLength, setAddressLength] = useState(0);
const maxAddressLength = 500; const maxAddressLength = 500;
@ -116,9 +115,10 @@ const DEFAULT_EMPTY_STATUS_ID = "00000000-0000-0000-0000-000000000000";
*/ */
const onSubmitForm = (updatedProject) => { const onSubmitForm = ( updatedProject ) =>
setLoading(true); {
handleSubmitForm(updatedProject, setLoading, reset);
handleSubmitForm(updatedProject);
}; };
const handleCancel = () => { const handleCancel = () => {
@ -313,14 +313,15 @@ const DEFAULT_EMPTY_STATUS_ID = "00000000-0000-0000-0000-000000000000";
)} )}
</div> </div>
<div className="col-12 text-center"> <div className="col-12 text-center">
<button type="submit" className="btn btn-sm btn-primary me-3" disabled={isloading}> <button type="submit" className="btn btn-sm btn-primary me-3" disabled={isPending}>
{isloading ? "Please Wait..." : project?.id ? "Update" : "Submit"} {isPending ? "Please Wait..." : project?.id ? "Update" : "Submit"}
</button> </button>
<button <button
type="button" type="button"
className="btn btn-sm btn-label-secondary" className="btn btn-sm btn-label-secondary"
onClick={handleCancel} onClick={handleCancel}
aria-label="Close" aria-label="Close"
disabled={isPending}
> >
Cancel Cancel
</button> </button>

View File

@ -78,6 +78,7 @@ const ProjectCard = ({ projectData, recall }) => {
project={projects_Details} project={projects_Details}
handleSubmitForm={handleFormSubmit} handleSubmitForm={handleFormSubmit}
onClose={handleClose} onClose={handleClose}
isPending={isPending}
/> />
</GlobalModel> </GlobalModel>
)} )}

View File

@ -390,7 +390,8 @@ export const useUpdateProject = ({ onSuccessCallback }) => {
isSuccess, isSuccess,
isError, isError,
} = useMutation({ } = useMutation({
mutationFn: async ({ projectId, updatedData }) => { mutationFn: async ( {projectId, updatedData} ) =>
{
return await ProjectRepository.updateProject(projectId, updatedData); return await ProjectRepository.updateProject(projectId, updatedData);
}, },
@ -414,7 +415,9 @@ export const useUpdateProject = ({ onSuccessCallback }) => {
} }
}, },
onError: (error) => { onError: ( error ) =>
{
console.log(error)
showToast(error?.message || "Error while updating project", "error"); showToast(error?.message || "Error while updating project", "error");
}, },
}); });

View File

@ -141,11 +141,11 @@ const ProjectDetails = () => {
const handler = useCallback( const handler = useCallback(
(msg) => { (msg) => {
if (msg.keyword === "Update_Project" && project.id === msg.response.id) { if (msg.keyword === "Update_Project" && projects_Details.id === msg.response.id) {
refetch() refetch()
} }
}, },
[project, handleDataChange] [projects_Details, handleDataChange]
); );
useEffect(() => { useEffect(() => {
eventBus.on("project", handler); eventBus.on("project", handler);

View File

@ -81,6 +81,7 @@ const ProjectListView = ({ projectData, recall }) => {
project={projects_Details} project={projects_Details}
handleSubmitForm={handleFormSubmit} handleSubmitForm={handleFormSubmit}
onClose={handleClose} onClose={handleClose}
isPending={isPending}
/></GlobalModel> /></GlobalModel>
)} )}