import { prisma } from '@peyzajart/db'
import Link from 'next/link'
import { formatTL } from '../../../lib/format'

export const dynamic = 'force-dynamic'

const STATUS_LABELS: Record<string, string> = {
  PENDING: 'Beklemede', CONFIRMED: 'Onaylandı', PREPARING: 'Hazırlanıyor',
  SHIPPED: 'Kargoda', DELIVERED: 'Teslim', CANCELLED: 'İptal',
}
const STATUS_COLORS: Record<string, string> = {
  PENDING: 'bg-yellow-100 text-yellow-800', CONFIRMED: 'bg-blue-100 text-blue-800',
  PREPARING: 'bg-purple-100 text-purple-800', SHIPPED: 'bg-orange-100 text-orange-800',
  DELIVERED: 'bg-green-100 text-green-800', CANCELLED: 'bg-red-100 text-red-800',
}

export default async function AdminDashboardPage() {
  const now = new Date()
  const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate())
  const weekStart = new Date(todayStart); weekStart.setDate(weekStart.getDate() - 7)
  const monthStart = new Date(now.getFullYear(), now.getMonth(), 1)

  const [
    totalOrders, pendingOrders, activeDealers,
    todayRevenue, weekRevenue, monthRevenue,
    recentOrders,
  ] = await Promise.all([
    prisma.order.count(),
    prisma.order.count({ where: { status: 'PENDING' } }),
    prisma.dealer.count({ where: { isActive: true, isAdmin: false } }),
    prisma.order.aggregate({ where: { createdAt: { gte: todayStart }, paymentStatus: 'PAID' }, _sum: { totalUSD: true } }),
    prisma.order.aggregate({ where: { createdAt: { gte: weekStart }, paymentStatus: 'PAID' }, _sum: { totalUSD: true } }),
    prisma.order.aggregate({ where: { createdAt: { gte: monthStart }, paymentStatus: 'PAID' }, _sum: { totalUSD: true } }),
    prisma.order.findMany({
      orderBy: { createdAt: 'desc' },
      take: 10,
      include: { dealer: { select: { companyName: true, dealerCode: true } } },
    }),
  ])

  const stats = [
    { label: 'Toplam Sipariş', value: totalOrders, sub: `${pendingOrders} bekleyen`, href: '/admin/orders' },
    { label: 'Bugün Gelir', value: formatTL(todayRevenue._sum.totalUSD ?? 0), sub: 'ödendi', href: '/admin/orders' },
    { label: 'Bu Hafta Gelir', value: formatTL(weekRevenue._sum.totalUSD ?? 0), sub: `Ay: ${formatTL(monthRevenue._sum.totalUSD ?? 0)}`, href: '/admin/orders' },
    { label: 'Aktif Bayiler', value: activeDealers, sub: 'toplam', href: '/admin/dealers' },
  ]

  return (
    <div className="p-6 md:p-8">
      <h1 className="font-display text-4xl font-light text-brown mb-8">Admin Dashboard</h1>

      <div className="grid grid-cols-2 lg:grid-cols-4 gap-4 mb-10">
        {stats.map((s) => (
          <Link key={s.label} href={s.href} className="bg-white p-5 shadow-sm rounded-xl hover:shadow-md transition-shadow block">
            <p className="font-body text-xs text-brown/50 tracking-widest uppercase mb-2">{s.label}</p>
            <p className="font-display text-3xl text-brown">{s.value}</p>
            <p className="font-body text-xs text-earth mt-1">{s.sub}</p>
          </Link>
        ))}
      </div>

      <div className="bg-white shadow-sm rounded-xl overflow-hidden">
        <div className="px-6 py-4 border-b border-sand flex items-center justify-between">
          <h2 className="font-display text-xl text-brown">Son Siparişler</h2>
          <Link href="/admin/orders" className="font-body text-xs text-earth hover:text-brown transition-colors">Tümü →</Link>
        </div>
        <div className="overflow-x-auto">
          <table className="w-full">
            <thead>
              <tr className="bg-sand/50 text-left">
                {['Sipariş No', 'Bayi', 'Tarih', 'Tutar', 'Ödeme', 'Durum'].map(h => (
                  <th key={h} className="px-5 py-3 font-body text-xs text-brown/50 tracking-widest uppercase">{h}</th>
                ))}
              </tr>
            </thead>
            <tbody className="divide-y divide-sand">
              {recentOrders.map((o) => (
                <tr key={o.id} className="hover:bg-sand/30 transition-colors">
                  <td className="px-5 py-3">
                    <Link href={`/admin/orders/${o.orderNo}`} className="font-body text-sm font-medium text-earth hover:text-brown">{o.orderNo}</Link>
                  </td>
                  <td className="px-5 py-3 font-body text-sm text-brown">{o.dealer.companyName}</td>
                  <td className="px-5 py-3 font-body text-xs text-brown/50">{new Date(o.createdAt).toLocaleDateString('tr-TR')}</td>
                  <td className="px-5 py-3 font-body text-sm text-brown">{formatTL(o.totalUSD)}</td>
                  <td className="px-5 py-3 font-body text-xs text-brown/50">
                    {o.paymentMethod === 'ONLINE' ? 'İyzico' : 'Havale'}
                  </td>
                  <td className="px-5 py-3">
                    <span className={`px-2 py-0.5 rounded-full font-body text-xs ${STATUS_COLORS[o.status] ?? ''}`}>
                      {STATUS_LABELS[o.status] ?? o.status}
                    </span>
                  </td>
                </tr>
              ))}
            </tbody>
          </table>
        </div>
      </div>
    </div>
  )
}
