import { prisma } from "@/lib/prisma";
import { Prisma } from "@prisma/client";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import Link from "next/link";
import { ReadingAiToggle } from "./reading-ai-toggle";
import { IncomeChart } from "./income-chart";
import { getIncomeStats } from "@/lib/admin/income-stats";
import { getReadingSettings } from "@/lib/readings/settings";

export default async function AdminDashboardPage() {
  const [
    usersCount,
    readingsCount,
    revenue,
    pendingComments,
    activeCoupons,
    settings,
    pendingManualMain,
    pendingManualFollowUp,
    incomeStats,
  ] = await Promise.all([
    prisma.user.count(),
    prisma.reading.count(),
    prisma.payment.aggregate({
      where: { status: "succeeded" },
      _sum: { amount: true },
    }),
    prisma.comment.count({ where: { status: "PENDING" } }),
    prisma.coupon.count({ where: { active: true, expiresAt: { gt: new Date() } } }),
    getReadingSettings(),
    prisma.reading.count({
      where: { status: "PAID", sections: null },
    }),
    prisma.reading.count({
      where: {
        followUpQuestion: { not: null },
        followUpCardIds: { not: Prisma.JsonNull },
        followUpSections: null,
      },
    }),
    getIncomeStats(),
  ]);

  const revenueVal = revenue._sum.amount ?? 0;

  return (
    <div>
      <h1 className="text-2xl font-bold mb-8">داشبورد</h1>
      <div className="grid gap-6 md:grid-cols-2 lg:grid-cols-5">
        <Card>
          <CardHeader>
            <CardTitle className="text-base">کاربران</CardTitle>
          </CardHeader>
          <CardContent>
            <p className="text-2xl font-bold">{usersCount}</p>
          </CardContent>
        </Card>
        <Card>
          <CardHeader>
            <CardTitle className="text-base">فال‌ها</CardTitle>
          </CardHeader>
          <CardContent>
            <p className="text-2xl font-bold">{readingsCount}</p>
          </CardContent>
        </Card>
        <Card>
          <CardHeader>
            <CardTitle className="text-base">درآمد</CardTitle>
          </CardHeader>
          <CardContent>
            <p className="text-2xl font-bold">{Number(revenueVal).toLocaleString("fa-IR")} ریال</p>
          </CardContent>
        </Card>
        <Card>
          <CardHeader>
            <CardTitle className="text-base">نظرات در انتظار</CardTitle>
          </CardHeader>
          <CardContent>
            <p className="text-2xl font-bold">{pendingComments}</p>
          </CardContent>
        </Card>
        <Card>
          <CardHeader>
            <CardTitle className="text-base">کوپن‌های فعال</CardTitle>
          </CardHeader>
          <CardContent>
            <p className="text-2xl font-bold">{activeCoupons}</p>
          </CardContent>
        </Card>
      </div>
      <IncomeChart
        daily={incomeStats.daily}
        monthly={incomeStats.monthly}
        summary={incomeStats.summary}
      />
      <div className="grid gap-6 mt-6 md:grid-cols-2">
        <Card>
          <CardHeader>
            <CardTitle className="text-base">تنظیم پاسخ فال</CardTitle>
          </CardHeader>
          <CardContent>
            <ReadingAiToggle
              initialValue={settings.useAiReadings}
              initialAdminSmsRecipients={settings.adminSmsRecipients}
            />
          </CardContent>
        </Card>
        <Card>
          <CardHeader>
            <CardTitle className="text-base">در انتظار پاسخ دستی</CardTitle>
          </CardHeader>
          <CardContent className="space-y-2">
            <p className="text-sm">فال اصلی: <strong>{pendingManualMain}</strong></p>
            <p className="text-sm">پیگیری ۱۰ کارت: <strong>{pendingManualFollowUp}</strong></p>
            <Link href="/admin/readings" className="text-sm underline">
              مشاهده صف پاسخ‌ها
            </Link>
          </CardContent>
        </Card>
      </div>
    </div>
  );
}
