/* eslint-disable react-hooks/exhaustive-deps */ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { FormEvent, useEffect, useState } from "react"; import Calendar from "react-calendar"; import "react-calendar/dist/Calendar.css"; import "./CalendarPage.css"; import { format, isBefore, differenceInBusinessDays, setHours, getHours, setMinutes, getMinutes, setSeconds, setMilliseconds, } from "date-fns"; import ru from "date-fns/locale/ru"; import ky from "ky"; import { useParams } from "react-router-dom"; import InputMask from "react-input-mask"; function CalendarPage() { const params = useParams(); const [step, setStep] = useState(1); const [date, setDate] = useState(new Date()); const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [phone, setPhone] = useState(""); const [link, setLink] = useState(""); const [datesAndTimes, setDatesAndTimes] = useState([]); const [scheduledSessions, setScheduledSessions] = useState([]); async function selectDate(value: any) { await getScheduledSessions("653675f420af0dadee9003ec", value); setDate(value); setStep((prev) => prev + 1); } async function getScheduledSessions(buildId: string, date: Date) { const result: any[] = await ky .get( `https://crm.stream.graff.tech/api/scheduled_sessions/${buildId}?date=${date.toISOString()}` ) .json(); console.log(result); setScheduledSessions(result); } function selectTime(value: any) { let newDate = date; newDate = setHours(date, getHours(value)); newDate = setMinutes(newDate, getMinutes(value)); newDate = setSeconds(newDate, 0); newDate = setMilliseconds(newDate, 0); setDate(newDate); setStep((prev) => prev + 1); } async function addSchedule(e: FormEvent) { e.preventDefault(); const username = params.username; const title = "nksJukovaDev"; const startAt = date; try { const result: any = await ky .post(`${import.meta.env.VITE_COORD_URL}/scheduled_sessions`, { json: { username, name, email, phone, title, startAt, }, }) .json(); if (!result.userInviteLink) { alert(result.error); return; } setLink(result.userInviteLink); setName(""); setEmail(""); setPhone(""); setStep(4); } catch (error: any) { alert(error.message); } } async function getSessionScheduleSettings() { const username = params.username; try { const result: any = await ky .get( `${ import.meta.env.VITE_COORD_URL }/session_schedule_settings/${username}` ) .json(); if (result.error) { console.log("Error: ", result.error); return; } const { datesAndTimes } = result; console.log(datesAndTimes); setDatesAndTimes(datesAndTimes); } catch (error) { if (error instanceof Error) { console.log(error.message); } } } useEffect(() => { getSessionScheduleSettings(); }, []); return (
{step === 1 && (

Выберите
дату

)} {step === 2 && (

Выберите
время

{format(date, "dd MMMM", { locale: ru })}

{datesAndTimes.map( (dateAndTime: { value: Date; active: true }, index: number) => !differenceInBusinessDays(date, new Date()) ? ( isBefore(new Date(), new Date(dateAndTime.value)) && ( ) ) : ( ) )}
)} {step === 3 && (

Расскажите
о себе

{format(date, "dd MMMM HH:mm", { locale: ru })}

Имя

setName(e.target.value)} />

Email

setEmail(e.target.value)} />

Телефон

setPhone(e.target.value)} />
)} {step === 4 && (

Просмотр
запланирован

Ссылка для подключения и другая дополнительная информация будут отправлены на ваш почтовый адрес.

)}
); } export default CalendarPage;