"use client";

import { useState } from "react";
import { useRouter } from "next/navigation";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";

export function ReadingAiToggle({
  initialValue,
  initialAdminSmsRecipients,
}: {
  initialValue: boolean;
  initialAdminSmsRecipients: string[];
}) {
  const router = useRouter();
  const [enabled, setEnabled] = useState(initialValue);
  const [recipients, setRecipients] = useState(initialAdminSmsRecipients.join(", "));
  const [saving, setSaving] = useState(false);
  const [savingRecipients, setSavingRecipients] = useState(false);
  const [error, setError] = useState<string | null>(null);

  async function save(nextValue: boolean) {
    setSaving(true);
    setError(null);
    setEnabled(nextValue);
    try {
      const res = await fetch("/api/admin/reading-settings", {
        method: "PUT",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ useAiReadings: nextValue }),
      });
      if (!res.ok) {
        const data = await res.json().catch(() => ({}));
        throw new Error(data?.error ?? "خطا در ذخیره");
      }
      router.refresh();
    } catch (e) {
      setEnabled(!nextValue);
      setError(e instanceof Error ? e.message : "خطا در ذخیره");
    } finally {
      setSaving(false);
    }
  }

  async function saveRecipients() {
    setSavingRecipients(true);
    setError(null);
    try {
      const adminSmsRecipients = recipients
        .split(/[\n,]+/)
        .map((p) => p.trim())
        .filter(Boolean);
      const res = await fetch("/api/admin/reading-settings", {
        method: "PUT",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ adminSmsRecipients }),
      });
      if (!res.ok) {
        const data = await res.json().catch(() => ({}));
        throw new Error(data?.error ?? "خطا در ذخیره شماره‌ها");
      }
      router.refresh();
    } catch (e) {
      setError(e instanceof Error ? e.message : "خطا در ذخیره شماره‌ها");
    } finally {
      setSavingRecipients(false);
    }
  }

  return (
    <div className="space-y-3">
      <p className="text-sm text-muted-foreground">
        وقتی AI خاموش باشد، پاسخ فال به صورت دستی توسط تیم ثبت می‌شود.
      </p>
      <div className="flex items-center gap-3">
        <Button
          type="button"
          variant={enabled ? "default" : "outline"}
          disabled={saving || enabled}
          onClick={() => save(true)}
        >
          فعال
        </Button>
        <Button
          type="button"
          variant={!enabled ? "default" : "outline"}
          disabled={saving || !enabled}
          onClick={() => save(false)}
        >
          غیرفعال
        </Button>
        <span className="text-sm">
          وضعیت فعلی:{" "}
          <strong className={enabled ? "text-green-600" : "text-amber-600"}>
            {enabled ? "پاسخ‌دهی با AI" : "پاسخ‌دهی دستی ادمین"}
          </strong>
        </span>
      </div>
      <div className="space-y-2 border-t pt-3">
        <p className="text-sm font-medium">شماره‌های دریافت پیامک ادمین</p>
        <p className="text-xs text-muted-foreground">
          شماره‌ها را با کاما یا خط جدید جدا کنید. اگر خالی باشد، مقدار env استفاده می‌شود.
        </p>
        <Input
          value={recipients}
          onChange={(e) => setRecipients(e.target.value)}
          placeholder="09000000000, 09111111111"
        />
        <Button type="button" variant="outline" size="sm" onClick={saveRecipients} disabled={savingRecipients}>
          {savingRecipients ? "در حال ذخیره..." : "ذخیره شماره‌های ادمین"}
        </Button>
      </div>
      {error && <p className="text-sm text-destructive">{error}</p>}
    </div>
  );
}
