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 ( <>
{project?.shortName ? project?.shortName : project?.name}
{project?.shortName ? project?.name : ""}

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 )}
Task: {formatNumber(project?.completedWork)} /{" "} {formatNumber(project?.plannedWork)} {Math.floor( getProgressInNumber( project?.plannedWork, project?.completedWork ) ) || 0}{" "} % Completed
{project?.teamSize} Members
{" "} 15
); }; export default ProjectCard;