'use client'; import React, { FC, useState, useEffect } from 'react'; import Image from 'next/image'; import { Tag, Image as AntdImage, Space, Button } from 'antd'; import { ZoomInOutlined, ZoomOutOutlined, StarFilled } from '@ant-design/icons'; import { SignupSessionData } from '../../types/experts'; import { ExpertDetails, Practice, ThemeGroup } from '../../types/experts'; import { ExpertDocument } from '../../types/file'; import { Locale } from '../../types/locale'; import { CustomRate } from '../view/CustomRate'; import { i18nText } from '../../i18nKeys'; import { FilledYellowButton } from '../view/FilledButton'; import { getStorageValue } from '../../hooks/useLocalStorage'; import { AUTH_TOKEN_KEY, SESSION_DATA } from '../../constants/common'; import { ScheduleModal } from '../Modals/ScheduleModal'; import { ScheduleModalResult } from '../Modals/ScheduleModalResult'; import SignalrConnection from '../../lib/signalr-connection'; import { useRouter } from '../../navigation'; import { useLocalStorage } from '../../hooks/useLocalStorage'; type ExpertDetailsProps = { expert: ExpertDetails; locale?: string; expertId?: string; }; type ExpertPracticeProps = { cases?: Practice[]; themes?: ThemeGroup[]; locale?: string; }; export const ExpertCard: FC = ({ expert, locale, expertId }) => { const { publicCoachDetails } = expert || {}; const [showSchedulerModal, setShowSchedulerModal] = useState(false); const [mode, setMode] = useState<'data' | 'time' | 'pay' | 'finish'>('data'); const isRus = locale === Locale.ru; const { publicCoachDetails: { tags = [], sessionCost = 0, sessionDuration = 0, coachLanguages = [] , id, botUserId} } = expert || {}; const [jwt] = useLocalStorage(AUTH_TOKEN_KEY, ''); const { joinChatPerson, closeConnection } = SignalrConnection(); const router = useRouter(); useEffect(() => { document?.addEventListener('show_pay_form', handleShowPayForm); return () => { closeConnection(); document?.removeEventListener('show_pay_form', handleShowPayForm); } }, []); const handleJoinChat = (id: number) => { joinChatPerson(id).then((res: any) => { router.push(`/account/messages/${res.id}` as string); }) } const checkSession = (data?: SignupSessionData) => { if (data?.startAtUtc && data?.tagId) { const jwt = getStorageValue(AUTH_TOKEN_KEY, ''); sessionStorage?.setItem(SESSION_DATA, JSON.stringify(data)); if (jwt) { setMode('pay'); } else { setShowSchedulerModal(false); const showAuth = new Event('show_auth_enter'); document?.dispatchEvent(showAuth); } } } const handleShowPayForm = () => { setShowSchedulerModal(true); setMode('pay'); } const onSchedulerHandle = () => { setMode('data'); setShowSchedulerModal(true); }; return ( <>

{`${publicCoachDetails?.name} ${publicCoachDetails?.surname || ''}`}

{`${publicCoachDetails?.practiceHours} ${i18nText('practiceHours', locale)}`} | {`${publicCoachDetails?.supervisionPerYearId} ${i18nText('supervisionCount', locale)}`}
} disabled /> {`4/5 (${i18nText('outOf', locale)} 345)`}
{jwt && (
{botUserId && ( )} {/* Video */}
)}
{/*

{}

*/}
{coachLanguages?.map((lang) => {lang})}
{/*

Hello, my name is Marcelo. I am a Senior UX Designer with more than 6 years of experience working with the largest companies in the world such as Disney, Globant and currently IBM. During my career, I have helped organizations solve complex problems using aesthetically pleasing designs with design while building teams and mentoring other designers. I can help you:
Prepare for interviews, prepare your resume or CV and work on your LinkedIn profile
Get ready for whiteboard challenges and take-home exercises
Create a great portfolio and case study presentation.
Provide industry information.
Professional orientation
Strategic thinking

Oh, and I also speak Spanish!

*/}
{tags?.map((skill) => {skill?.name})}
{i18nText('signUp', locale)}
{`${sessionCost}€`} / {`${sessionDuration}${isRus ? 'мин' : 'min'}`}
setShowSchedulerModal(false)} updateMode={setMode} mode={mode} expertId={expertId as string} locale={locale as string} sessionCost={sessionCost} checkSession={checkSession} /> ); }; export const ExpertPractice: FC = ({ themes = [], cases = [], locale }) => { return cases?.length > 0 ? (

{i18nText('successfulCase', locale)}

{cases?.map(({ id, description, themesGroupIds }) => { const filtered = themes ? themes.filter(({ id }) => themesGroupIds?.includes(+id)) : []; return (
{themesGroupIds && (
{filtered?.map(({ id, name }) => ( {name} ))}
)} {description &&

{description}

}
) })}
) : null; }; export const ExpertCertificate: FC<{ document: ExpertDocument }> = ({ document }) => ( )} fallback="data:image/png;base64,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" preview={{ src: document.fullSize?.url, toolbarRender: ( _, { transform: { scale }, actions: { onZoomOut, onZoomIn }, }, ) => ( ) }} /> );