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); }; 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;