import React, { useMemo } from 'react'; import { Link } from 'react-router-dom'; import { useHolidays } from '../../hooks/useResourceCalendar'; import { formatDate, currentJalaliYear } from '../../lib/utils'; /** * تعطیلات رسمیِ سال، همان‌جایی که تعطیلی اختصاصی تعریف می‌شود. * * تقویم رسمی یک بار مرکزی ثبت می‌شود و هر پزشک و هر منبع از آن ارث می‌برد؛ اینجا فقط * دیده می‌شود و — اگر این محیط آن روز باز باشد — با یک سوییچ خنثی می‌شود. ساخت و حذفِ * خودِ تعطیلی کارِ مدیر سیستم است، نه کلینیک. * * یک کامپوننت برای دو مصرف‌کننده: تب تعطیلات پزشک و تب تعطیلات منبع. دو نسخه یعنی دو * رفتار که با هم واگرا می‌شوند. */ export default function NationalHolidaysCard({ canUpdate, year = currentJalaliYear() }: { canUpdate: boolean; year?: number; }) { const { holidays, overrides, loading, setOverride, removeOverride } = useHolidays(year); const overrideByDate = useMemo( () => new Map(overrides.map((o) => [o.date, o])), [overrides], ); return (

تعطیلات رسمی {year.toLocaleString('fa-IR', { useGrouping: false })}

این‌ها برای همهٔ پزشکان و منابع اعمال می‌شوند. اگر این محیط روزی را باز است، همین‌جا استثنا بزنید — مدیریت کاملشان در{' '} تنظیمات ← تعطیلات رسمی.

{loading ? ( در حال بارگذاری... ) : holidays.length === 0 ? (

برای سال {year.toLocaleString('fa-IR', { useGrouping: false })} تعطیلی رسمی ثبت نشده است.

) : (
{holidays.map((h) => { const override = overrideByDate.get(h.date); const open = override?.is_working === true; return (
{open ? 'باز' : 'تعطیل'} {formatDate(h.date)} · {h.title} {canUpdate && ( open ? ( ) : ( ) )}
); })}
)}
); }