import Link from "next/link";
import { prisma } from "@/lib/prisma";
import { formatMoney, formatDate } from "@/lib/utils";
import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card";
import { PageHeader } from "@/components/ui/page-header";
import { EmptyState } from "@/components/ui/empty-state";
import {
  Table,
  TableBody,
  TableCell,
  TableHead,
  TableHeader,
  TableRow,
} from "@/components/ui/table";
import { FileText, Eye } from "lucide-react";

export const dynamic = "force-dynamic";

export default async function FacturesPage() {
  const [factures, hotel] = await Promise.all([
    prisma.facture.findMany({
      include: {
        reservation: { include: { client: true, chambre: true, paiements: true } },
      },
      orderBy: { date_emission: "desc" },
      take: 200,
    }),
    prisma.hotel.findFirst(),
  ]);
  const devise = hotel?.devise || "MAD";

  return (
    <div className="space-y-4">
      <PageHeader
        title="Factures"
        description={`${factures.length} facture${factures.length > 1 ? "s" : ""} émise${factures.length > 1 ? "s" : ""}`}
      />

      {factures.length === 0 ? (
        <EmptyState
          icon={<FileText className="w-8 h-8" />}
          title="Aucune facture"
          description="Les factures sont créées automatiquement lors du check-out, ou manuellement depuis une réservation."
        />
      ) : (
        <Card>
          <CardContent className="p-0">
            <Table>
              <TableHeader>
                <TableRow>
                  <TableHead>N° facture</TableHead>
                  <TableHead>Date</TableHead>
                  <TableHead>Client</TableHead>
                  <TableHead>Chambre</TableHead>
                  <TableHead className="text-right">Total</TableHead>
                  <TableHead className="text-right">Action</TableHead>
                </TableRow>
              </TableHeader>
              <TableBody>
                {factures.map((f) => (
                  <TableRow key={f.id}>
                    <TableCell className="font-semibold">{f.numero_facture}</TableCell>
                    <TableCell>{formatDate(f.date_emission)}</TableCell>
                    <TableCell>{f.reservation.client.nom_complet}</TableCell>
                    <TableCell>N°{f.reservation.chambre.numero}</TableCell>
                    <TableCell className="text-right font-semibold">
                      {formatMoney(f.total, devise)}
                    </TableCell>
                    <TableCell className="text-right">
                      <Button asChild variant="ghost" size="sm">
                        <Link href={`/factures/${f.id}`}>
                          <Eye className="w-3.5 h-3.5" />
                          Voir
                        </Link>
                      </Button>
                    </TableCell>
                  </TableRow>
                ))}
              </TableBody>
            </Table>
          </CardContent>
        </Card>
      )}
    </div>
  );
}
