/* eslint-disable react-hooks/exhaustive-deps */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { useEffect, useState } from "react"; import SelectUser from "./SelectUser"; import MoreIcon from "./icons/MoreIcon"; import api from "../utils/api"; import Button from "./Button"; import { Link } from "react-router-dom"; import IUser from "../types/IUser"; import useAuthStore from "../stores/useAuthStore"; import EntryIcon from "./icons/EntryIcon"; import { isAfter, subMinutes } from "date-fns"; interface CardProps { companyId: string; buildId: string; scheduledSessionId: string; scheduleSessionStartAt: string; client?: { name: string; phone: string; email: string; }; manager?: IUser; managers: IUser[]; handleSelect: (scheduledSessionId: string, managerId: string | null) => void; } function Card({ companyId, buildId, scheduledSessionId, scheduleSessionStartAt, client, manager, managers, handleSelect, }: CardProps) { const { user } = useAuthStore(); const [isShow, setIsShow] = useState(false); const [availableManagers, setAvailableManagers] = useState(); async function getAvailableManagers() { const result: any[] = await api .get( `companies/${companyId}/builds/${buildId}/scheduledSessions/${scheduledSessionId}/availableManagers?startAt=${scheduleSessionStartAt}` ) .json(); const filteredManagers = managers.filter((manager) => result.includes(manager.id) ); setAvailableManagers(filteredManagers); } useEffect(() => { if (!isShow) return; getAvailableManagers(); }, [isShow]); return (

Клиент

{client?.name || "Имя не указано"}

{manager ? (

Готов

) : (

Нет менеджера

)}

{client?.phone || "Телефон не указан"}

{client?.email || "Email не указан"}

{manager ? ( ) : (
)}

{manager ? manager.name : "Не назначен"}

{user?.role === "manager" && (manager ? ( isAfter( new Date(), subMinutes(new Date(scheduleSessionStartAt), 10) ) ? ( ) : ( manager.id === user.id && ( ) ) ) : ( ))} {user?.role === "admin" && (
{manager && (
)}
{availableManagers && availableManagers.length > 0 && ( ( handleSelect(scheduledSessionId, managerId), setIsShow(false) )} handleShown={() => setIsShow((prev) => !prev)} /> )}
); } export default Card;