import React, { useEffect, useState } from "react"; import moment from "moment"; import { formatNumber, getDateDifferenceInDays } from "../../utils/dateUtils"; import { useNavigate } from "react-router-dom"; import { useProjectDetails, useUpdateProject } from "../../hooks/useProjects"; import ManageProjectInfo from "./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 { getProjectStatusColor, getProjectStatusName, } from "../../utils/projectStatus"; import GlobalModel from "../common/GlobalModel"; import { useDispatch } from "react-redux"; import { setProjectId } from "../../slices/localVariablesSlice"; import { useProjectContext } from "../../pages/project/ProjectPage"; const ProjectCard = ({ project }) => { const dispatch = useDispatch(); const navigate = useNavigate(); const ManageProject = useHasUserPermission(MANAGE_PROJECT); const { setMangeProject } = useProjectContext(); const getProgress = (planned, completed) => { return (completed * 100) / planned + "%"; }; const getProgressInNumber = (planned, completed) => { return (completed * 100) / planned; }; const handleClose = () => setShowModal(false); const handleViewProject = () => { dispatch(setProjectId(project.id)); navigate(`/projects/details`); }; const handleViewActivities = () => { dispatch(setProjectId(project.id)); navigate(`/activities/records?project=${project.id}`); }; return ( <>
Contact Person:{" "} {project?.contactPerson ? project.contactPerson : "NA"}
Start Date: {project.startDate ? moment(project?.startDate).format("DD-MMM-YYYY") : "NA"}
Deadline: {project?.endDate ? moment(project?.endDate).format("DD-MMM-YYYY") : "NA"}
{project?.projectAddress}
{getProjectStatusName(project?.projectStatusId)}
{" "} {getDateDifferenceInDays(project?.endDate,new Date() ) >= 0 && ( {project?.endDate && getDateDifferenceInDays(project?.endDate, new Date())}{" "} Days left )} {getDateDifferenceInDays(project?.endDate, new Date()) < 0 && ( {project?.endDate && getDateDifferenceInDays(project?.endDate, new Date())}{" "} Days overdue )}