"use client";

import { useState } from "react";
import { useRouter } from "next/navigation";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";

type Prices = {
  "7-card": number;
  "18-card": number;
  "48-card": number;
};

export function ReadingPricingForm({ initialPrices }: { initialPrices: Prices }) {
  const router = useRouter();
  const [prices, setPrices] = useState({
    "7-card": String(initialPrices["7-card"]),
    "18-card": String(initialPrices["18-card"]),
    "48-card": String(initialPrices["48-card"]),
  });
  const [saving, setSaving] = useState(false);
  const [error, setError] = useState<string | null>(null);
  const [success, setSuccess] = useState<string | null>(null);

  function toInt(v: string): number {
    return parseInt(v.replace(/[^\d]/g, ""), 10);
  }

  async function onSave() {
    setSaving(true);
    setError(null);
    setSuccess(null);
    const payload: Prices = {
      "7-card": toInt(prices["7-card"]),
      "18-card": toInt(prices["18-card"]),
      "48-card": toInt(prices["48-card"]),
    };
    if (!payload["7-card"] || !payload["18-card"] || !payload["48-card"]) {
      setSaving(false);
      setError("همه قیمت‌ها باید عدد مثبت باشند.");
      return;
    }
    try {
      const res = await fetch("/api/admin/reading-pricing", {
        method: "PUT",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ prices: payload }),
      });
      if (!res.ok) {
        const data = await res.json().catch(() => ({}));
        throw new Error(data?.error ?? "خطا در ذخیره");
      }
      setSuccess("قیمت‌ها با موفقیت ذخیره شد.");
      router.refresh();
    } catch (e) {
      setError(e instanceof Error ? e.message : "خطا در ذخیره");
    } finally {
      setSaving(false);
    }
  }

  return (
    <Card>
      <CardHeader>
        <CardTitle className="text-base">تنظیم قیمت فال‌ها (IRR)</CardTitle>
      </CardHeader>
      <CardContent className="space-y-4">
        <div>
          <label className="text-sm block mb-1">فال 7 کارته</label>
          <Input
            value={prices["7-card"]}
            onChange={(e) => setPrices((p) => ({ ...p, "7-card": e.target.value }))}
            inputMode="numeric"
          />
        </div>
        <div>
          <label className="text-sm block mb-1">فال 18 کارته</label>
          <Input
            value={prices["18-card"]}
            onChange={(e) => setPrices((p) => ({ ...p, "18-card": e.target.value }))}
            inputMode="numeric"
          />
        </div>
        <div>
          <label className="text-sm block mb-1">فال 48 کارته</label>
          <Input
            value={prices["48-card"]}
            onChange={(e) => setPrices((p) => ({ ...p, "48-card": e.target.value }))}
            inputMode="numeric"
          />
        </div>
        {error && <p className="text-sm text-destructive">{error}</p>}
        {success && <p className="text-sm text-green-700">{success}</p>}
        <Button onClick={onSave} disabled={saving}>
          {saving ? "در حال ذخیره..." : "ذخیره قیمت‌ها"}
        </Button>
      </CardContent>
    </Card>
  );
}
