import moment from "moment-jalaali"; const DAY_NAMES = [ "یکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه", ]; const formatJalali = (ts) => { const m = moment.unix(ts); return `${DAY_NAMES[m.day()]} ${m.format("HH:mm")}`; }; /** * قاعدهٔ واحد فعال/غیرفعال بودن نوبت‌دهی در پروفایل پزشک. * * booking_locations دقیق‌تر از doctor.active است: backend فقط محل‌های واقعاً * قابل‌رزرو را برمی‌گرداند. تا وقتی حداقل یک محل هست، نوبت‌دهی فعال است — حتی * اگر فیلد قدیمی active به هر دلیل false باشد. بدون محل، همان فیلدهای doctor * ملاک می‌مانند (سازگاری با پزشک بدون برنامه). */ export function bookingState(doctor, bookingLocations) { const hasLocations = Array.isArray(bookingLocations) && bookingLocations.length > 0; if (!hasLocations) { const enabled = doctor?.active !== false && !!doctor?.free_turn; return { enabled, label: enabled ? `اولین نوبت آزاد: ${doctor.free_turn}` : "نوبت‌دهی غیرفعال است", }; } const earliest = bookingLocations .map((l) => l.next_available_at) .filter((t) => t != null) .sort((a, b) => a - b)[0] ?? null; return { enabled: true, label: earliest != null ? `اولین نوبت آزاد: ${formatJalali(earliest)}` : "فعلاً نوبت خالی ندارد", }; }