diff --git a/src/components/ServiceProject/ServiceProjectTeam/ServiceProjectCard.jsx b/src/components/ServiceProject/ServiceProjectTeam/ServiceProjectCard.jsx new file mode 100644 index 00000000..15533622 --- /dev/null +++ b/src/components/ServiceProject/ServiceProjectTeam/ServiceProjectCard.jsx @@ -0,0 +1,217 @@ +import React, { useEffect, useState } from "react"; +import moment from "moment"; +import { formatNumber, formatUTCToLocalTime, getDateDifferenceInDays } from "../../../utils/dateUtils"; +import { useNavigate } from "react-router-dom"; +import ManageProjectInfo from "../../Project/ManageProjectInfo"; +import ProjectRepository from "../../../repositories/ProjectRepository"; +import { cacheData, getCachedData } from "../../../slices/apiDataManager"; +import showToast from "../../../services/toastService"; +import { useHasUserPermission } from "../../../hooks/useHasUserPermission"; +import { MANAGE_PROJECT } from "../../../utils/constants"; +import GlobalModel from "../../common/GlobalModel"; +import { useDispatch } from "react-redux"; +import { setProjectId } from "../../../slices/localVariablesSlice"; +import { useProjectContext } from "../../../pages/project/ProjectPage"; +import { useActiveInActiveServiceProject } from "../../../hooks/useServiceProject"; +import ConfirmModal from "../../common/ConfirmModal"; +import { getProjectStatusColor, getProjectStatusName } from "../../../utils/projectStatus"; + +const ServiceProjectCard = ({ project, isCore = true }) => { + const [deleteProject, setDeleteProject] = useState({ + project: null, + isOpen: false, + }); + const dispatch = useDispatch(); + const navigate = useNavigate(); + const ManageProject = useHasUserPermission(MANAGE_PROJECT); + const { setMangeProject, setManageServiceProject } = useProjectContext(); + + const getProgress = (planned, completed) => { + return (completed * 100) / planned + "%"; + }; + const getProgressInNumber = (planned, completed) => { + return (completed * 100) / planned; + }; + + const handleClose = () => setShowModal(false); + + const handleViewProject = () => { + if (isCore) { + dispatch(setProjectId(project.id)); + navigate(`/projects/details`); + } else { + navigate(`/service-projects/${project.id}`); + } + }; + const handleViewActivities = () => { + dispatch(setProjectId(project.id)); + navigate(`/activities/records?project=${project.id}`); + }; + const handleManage = () => { + if (isCore) { + setMangeProject({ + isOpen: true, + Project: project.id, + }); + } else { + setManageServiceProject({ + isOpen: true, + project: project.id, + }); + } + }; + + const { mutate: DeleteProject, isPending } = useActiveInActiveServiceProject( + () => setDeleteProject({ project: null, isOpen: false }) + ); + const handleActiveInactive = (projectId) => { + DeleteProject(projectId, false); + }; + + console.log("Kartik", project) + return ( + <> + setDeleteProject({ project: null, isOpen: false })} + loading={isPending} + paramData={project.id} + isOpen={deleteProject.isOpen} + /> +
+
+
+
+
+
+ +
+
+
+ {project?.shortName ? project?.shortName : project?.name} +
+
+ {project?.shortName ? project?.name : ""} +
+
+
+
+
+ + +
+
+
+
+ + {/* Card View */} + +
+
+
+
+

+ + {getProjectStatusName(project?.status?.id)} + +

+
+ +

+ Contact Person: + {project?.contactName || "NA"} +

+ +

+ Assigned Date: + {formatUTCToLocalTime(project?.assignedDate)} +

+ +

+ Address: + {project?.address || "NA"} +

+ + +

{project?.projectAddress}

+
+
+
+
+
+ +
+
+
+
+ + ); +}; + +export default ServiceProjectCard; \ No newline at end of file diff --git a/src/pages/ServiceProject/ServiceProjectDisplay.jsx b/src/pages/ServiceProject/ServiceProjectDisplay.jsx index 1a3eeb24..b089df49 100644 --- a/src/pages/ServiceProject/ServiceProjectDisplay.jsx +++ b/src/pages/ServiceProject/ServiceProjectDisplay.jsx @@ -10,6 +10,7 @@ import Pagination from "../../components/common/Pagination"; import GlobalModel from "../../components/common/GlobalModel"; import ManageServiceProject from "../../components/ServiceProject/ManageServiceProject"; import { SpinnerLoader } from "../../components/common/Loader"; +import ServiceProjectCard from "../../components/ServiceProject/ServiceProjectTeam/ServiceProjectCard"; const ServiceProjectDisplay = ({ listView }) => { const [currentPage, setCurrentPage] = useState(1); @@ -48,7 +49,7 @@ const ServiceProjectDisplay = ({ listView }) => {

List

) : ( data?.data?.map((project) => ( - + )) )}