import { redirect } from "next/navigation";
import Link from "next/link";
import { isAdminSession, hasPermission, getAllPermissions } from "@/lib/adminAuth";
import { connectDB } from "@/lib/db";
import { Service } from "@/models/Service";
import { AdminNavLinks } from "@/components/admin/AdminNavLinks";
import { AdminPageHeader } from "@/components/admin/AdminPageHeader";
import { AdminEmptyState } from "@/components/admin/AdminEmptyState";
import { NewServiceForm } from "@/components/admin/NewServiceForm";
import { ServiceStatusSelect } from "@/components/admin/ServiceStatusSelect";
import { DeleteServiceButton } from "@/components/admin/DeleteServiceButton";

export const dynamic = "force-dynamic";

export default async function AdminServicesPage() {
  if (!(await isAdminSession())) redirect("/de/login?next=%2Fde%2Fadmin%2Forders");

  if (!(await hasPermission("services_view"))) redirect("/de/account");

  const permissions = await getAllPermissions();

  await connectDB();
  const services = await Service.find({}).sort({ sortOrder: 1 }).lean();

  return (
    <main className="px-6 pt-4 pb-24 max-w-5xl mx-auto">
      <AdminNavLinks permissions={permissions} />
      <AdminPageHeader
        title="Angebote"
        subtitle='Erscheinen auf der öffentlichen Seite „/angebote" — auch wenn nicht verfügbar/auf Anfrage, nur der Status ändert sich.'
      />

      <NewServiceForm />

      <div className="flex flex-col gap-3 mt-6">
        {services.map((s) => (
          <div
            key={String(s._id)}
            className="bg-[var(--rk-surface)] border border-white/10 rounded-2xl p-5 flex items-center justify-between gap-3 flex-wrap"
          >
            <div>
              <p className="text-sm font-medium text-[var(--rk-ink)]">{s.title}</p>
              <p className="text-xs text-[var(--rk-ink-muted)] mt-0.5">
                {s.tiers.length} Preisstufe{s.tiers.length === 1 ? "" : "n"}
                {s.tiers.length > 0 && ` (${s.tiers.filter((t) => t.active).length} aktiv)`} · {s.shootingType}
              </p>
            </div>
            <div className="flex items-center gap-3">
              <ServiceStatusSelect id={String(s._id)} status={s.status} />
              <Link
                href={`/de/admin/services/${s._id}/edit`}
                className="text-xs border border-white/15 rounded-full px-3 py-1.5 hover:border-white/50 transition-colors"
              >
                Bearbeiten
              </Link>
              <DeleteServiceButton id={String(s._id)} />
            </div>
          </div>
        ))}
        {services.length === 0 && <AdminEmptyState message="Noch keine Angebote angelegt." />}
      </div>
    </main>
  );
}
