import { Button } from '@/shadcn/ui/button' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from '@/shadcn/ui/card' import { Avatar, AvatarFallback, AvatarImage, } from '@/shadcn/ui/avatar' import { Badge } from '@/shadcn/ui/badge' import { teachers } from '@/shared/data/teachers' import { Lesson as LessonType } from '@/shared/model/lesson' import React from 'react' import { MdSchool } from 'react-icons/md' import { AiOutlineFolderView } from 'react-icons/ai' import { BsFillGeoAltFill } from 'react-icons/bs' import { RiGroup2Fill } from 'react-icons/ri' import { ResourcesDialog } from '@/widgets/schedule/resources-dialog' export function Lesson({ lesson, width = 350 }: { lesson: LessonType width: number }) { const [resourcesDialogOpened, setResourcesDialogOpened] = React.useState(false) const hasTeacher = 'teacher' in lesson && lesson.teacher const teacherObj = hasTeacher ? teachers.find(t => t.name === lesson.teacher) : null const hasPlace = 'place' in lesson && lesson.place const isFallbackDiscipline = 'fallbackDiscipline' in lesson && lesson.fallbackDiscipline const getTeacherPhoto = (url?: string) => { if(url) { try { const filename = decodeURIComponent(new URL(url).pathname.split('/').pop()!) return `/teachers/${filename}` } catch(e) { console.error(e) return null } } else { return null } } const fallbackTeacherName = () => { if (!hasTeacher || !lesson.teacher) return '' const [, firstName, middleName] = lesson.teacher.split(' ') return firstName.at(0)! + middleName.at(0)! } const handleOpenResources = () => { setResourcesDialogOpened(true) } return ( {lesson.isChange &&
}
{hasTeacher ? ( {fallbackTeacherName()} ) : ( )}
{'subject' in lesson && {lesson.subject}} {lesson.time.start} - {lesson.time.end}{ }{lesson.time.hint &&  ({lesson.time.hint})} {hasTeacher && lesson.teacher && ( {lesson.teacher} )}
{lesson.type && <>{lesson.type}{' '} } {isFallbackDiscipline && ( {lesson.fallbackDiscipline} )} {lesson.topic ? ( {lesson.topic} ) : ( !isFallbackDiscipline && Нет описания пары )} {(Boolean(lesson.resources.length) || hasPlace) && ( {('place' in lesson && lesson.place) ? (
{lesson.place.address} {lesson.place.classroom}
) : } {Boolean(lesson.resources.length) && ( )}
)} setResourcesDialogOpened(false)} teacherName={('teacher' in lesson && lesson.teacher) ? lesson.teacher : undefined} resources={lesson.resources} />
) }