import { desc, eq, sql } from "drizzle-orm";
import { getDb } from "@/db";
import { inquiries, siteSettings } from "@/db/schema";
import { products, services } from "@/lib/catalog";
import { requireAdmin } from "@/lib/admin-auth";
import AdminDashboard from "./AdminDashboard";

export const dynamic = "force-dynamic";

export default async function AdminPage() {
  let user;
  try { user = await requireAdmin("/admin"); }
  catch (error) {
    if (error instanceof Error && error.message === "ADMIN_ACCESS_DENIED") return <main className="admin-denied"><h1>Access denied</h1><p>This account is not authorized to manage Poland Egypt.</p><a href="/">Return to website</a></main>;
    throw error;
  }
  const db = getDb();
  const [records, counts, settings] = await Promise.all([
    db.select().from(inquiries).orderBy(desc(inquiries.createdAt)).limit(100),
    db.select({ status: inquiries.status, total: sql<number>`count(*)` }).from(inquiries).groupBy(inquiries.status),
    db.select().from(siteSettings),
  ]);
  const totals = Object.fromEntries(counts.map(item => [item.status, Number(item.total)]));
  const social = Object.fromEntries(settings.map(item => [item.key, item.value]));
  const defaults = [{titleAr:"كفاءة تبدأ من اختيارٍ أدق",titleEn:"Efficiency starts with the right choice",textAr:"أجهزة كمبروسر ومحطات هواء متكاملة مصممة لاحتياجات التشغيل الصناعي.",textEn:"Air compressors and complete air stations selected around your industrial operation.",image:"/assets/hero-compressor.png",active:true},{titleAr:"قطعة الغيار الصحيحة. في الوقت المناسب.",titleEn:"The right spare part. Right on time.",textAr:"فلاتر وزيوت وصمامات وحساسات وقطع غيار لمختلف أنظمة الهواء المضغوط.",textEn:"Filters, oils, valves, sensors and spare parts for compressed-air systems.",image:"/assets/hero-spare-parts.png",active:true}];
  let slides = defaults; try { if (social.homepage_slides) slides = JSON.parse(social.homepage_slides); } catch {}
  let managedProducts = products.map((p,index) => ({...p,active:true,sortOrder:index})); try { if (social.products_cms) managedProducts = JSON.parse(social.products_cms); } catch {}
  let managedServices = services.map((s,index) => ({...s,active:true,sortOrder:index})); try { if (social.services_cms) managedServices = JSON.parse(social.services_cms); } catch {}
  return <AdminDashboard user={{ name: user.displayName, email: user.email }} inquiries={records} totals={totals} products={managedProducts} services={managedServices} company={{ facebook:social.facebook_url||"https://www.facebook.com/",instagram:social.instagram_url||"https://www.instagram.com/",phone:social.phone||"01008852325",whatsapp:social.whatsapp||"201008852325",email:social.email||"mohamedpondk00@gmail.com",addressAr:social.address_ar||"المريوطية، الهرم، الجيزة",addressEn:social.address_en||"Marioutia, Haram, Giza, Egypt",footerAr:social.footer_ar||"بولاند إيجيبت شركة متخصصة في توريد ضواغط الهواء الصناعية ومحطات الهواء المتكاملة ومجففات الهواء وقطع الغيار ومستلزمات الصيانة وخدمات الدعم الفني للمصانع في مصر.",footerEn:social.footer_en||"Poland Egypt supplies industrial air compressors, complete air stations, air dryers, spare parts, maintenance supplies and technical services for factories across Egypt."}} slides={slides} />;
}
