import React, { useEffect, useRef } from "react"; import { useServiceProjectJobDetails } from "../../../hooks/useServiceProject"; import { SpinnerLoader } from "../../common/Loader"; import Error from "../../common/Error"; import { formatUTCToLocalTime } from "../../../utils/dateUtils"; import Avatar from "../../common/Avatar"; import EmployeeAvatarGroup from "../../common/EmployeeAvatarGroup"; import { daysLeft, getJobStatusBadge } from "../../../utils/appUtils"; import HoverPopup from "../../common/HoverPopup"; import ChangeStatus from "./ChangeStatus"; import { useParams } from "react-router-dom"; import { STATUS_JOB_CLOSED } from "../../../utils/constants"; import Tooltip from "../../common/Tooltip"; import BranchDetails from "../ServiceProjectBranch/BranchDetails"; import { JobDetailsSkeleton } from "../ServiceProjectSeketon"; import JobComments from "./JobComments"; import JobStatusLog from "./JobStatusLog"; const ManageJobTicket = ({ Job }) => { const { projectId } = useParams(); const { data, isLoading, isError, error } = useServiceProjectJobDetails( Job?.job ); const drawerRef = useRef(); const tabsData = [ { id: "comment", title: "Comments", icon: "bx bx-comment me-2", active: true, content: , }, { id: "history", title: "History", icon: "bx bx-time me-2", active: false, content: , }, ]; if (isLoading) return ; if (isError) return (
); return (
{data?.title}

Job Id : {data?.jobTicketUId || "N/A"}

{data?.status?.displayName} {STATUS_JOB_CLOSED !== data?.status?.id && ( } > } /> )}

{data?.description || "N/A"}

{" "} Created Date : {formatUTCToLocalTime(data?.createdAt, true)}
{data?.tags?.map((tag, ind) => ( {tag?.name} ))}
Start Date :{" "} {formatUTCToLocalTime(data?.startDate)} {" "} {" "} Due on :{" "} {formatUTCToLocalTime(data?.startDate)}
{data?.dueDate && (() => { const { days, color } = daysLeft(data?.startDate, data?.dueDate); return ( Days Left: {days !== null ? `${days} days` : "N/A"} ); })()}
{data?.projectBranch && (
Branch Name: } > {data?.projectBranch?.branchName}
)}

Peoples

{/* Created By */}

Created By

{data?.createdBy?.firstName} {data?.createdBy?.lastName}

{data?.createdBy?.jobRoleName}
{/* Assigned To */}

Assigned To

{data?.assignees?.map((emp) => (
{emp.firstName} {emp.lastName} {emp.jobRoleName}
))}
    {tabsData.map((tab) => (
  • ))}
{tabsData.map((tab) => (
{tab.content}
))}
); }; export default ManageJobTicket;