import { formatJalaliDateTime } from "@/lib/jalali-month";

export function provisionLabel(status?: string | null): string {
  switch (status) {
    case "pending":
      return "در صف آماده‌سازی";
    case "provisioning":
      return "در حال آماده‌سازی";
    case "ready":
      return "آماده";
    case "failed":
      return "ناموفق";
    case "teardown":
      return "جمع‌آوری‌شده";
    default:
      return status || "—";
  }
}

export function sessionStatusLabel(status?: string | null): string {
  switch (status) {
    case "scheduled":
      return "برنامه‌ریزی‌شده";
    case "live":
      return "در حال برگزاری";
    case "ended":
      return "پایان‌یافته";
    case "cancelled":
      return "لغو شده";
    default:
      return status || "—";
  }
}

export function memberRoleLabel(role?: string | null): string {
  switch (role) {
    case "host":
      return "میزبان";
    case "presenter":
      return "ارائه‌دهنده";
    case "attendee":
      return "شرکت‌کننده";
    default:
      return role || "—";
  }
}

export function attendanceLabel(status?: string | null): string {
  switch (status) {
    case "present":
      return "حاضر";
    case "late":
      return "تأخیر";
    case "absent":
      return "غایب";
    case "partial":
      return "وارد شده";
    default:
      return status || "—";
  }
}

export function onlineClassMessage(message?: string | null): string {
  if (!message) return "خطای نامشخص";
  const lower = message.toLowerCase();
  if (lower.includes("curl error 28") || lower.includes("ssl connection timeout") || lower.includes("connection timeout") || lower.includes("timed out")) {
    return "سرور کلاس پاسخ نداد. اتصال امن به آدرس سرور برقرار نشد؛ آدرس و دسترسی شبکه را بررسی کنید.";
  }
  if (lower.includes("curl error 6") || lower.includes("could not resolve")) {
    return "آدرس سرور کلاس پیدا نشد.";
  }
  if (lower.includes("curl error")) {
    return "اتصال به سرور کلاس برقرار نشد.";
  }
  const known: Record<string, string> = {
    no_provider_available: "سرور فعالی برای این مدرسه پیدا نشد.",
    join_window_closed: "الان خارج از بازهٔ ورود به جلسه است.",
    capability_unsupported: "این سرور این امکان را ندارد.",
    session_cancelled: "این جلسه لغو شده است.",
    join_failed: "لینک ورود ساخته نشد.",
    join_url_missing: "لینک اتاق هنوز آماده نیست.",
    room_not_ready: "اتاق هنوز روی ادوبی آماده نیست.",
    display_name_missing: "نام شما در سامانه مدرسه ثبت نشده است.",
    guest_name_required: "نام مهمان را وارد کنید.",
    no_provider: "اتاق به سروری وصل نیست.",
    "driver not implemented": "این کار هنوز از داخل سامانه انجام نمی‌شود.",
  };
  return known[message] ?? message;
}

export function personName(user?: { name?: string | null; first_name?: string | null; last_name?: string | null } | null): string {
  if (!user) return "—";
  const full = user.name?.trim();
  if (full) return full;
  return `${user.first_name ?? ""} ${user.last_name ?? ""}`.trim() || "—";
}

export function formatWhen(value?: string | null): string {
  return formatJalaliDateTime(value);
}

export function formatMinutes(seconds?: number | null): string {
  const total = Math.max(0, Math.round((seconds ?? 0) / 60));
  return `${new Intl.NumberFormat("fa-IR").format(total)} دقیقه`;
}
