import { prisma } from "@/lib/prisma";
import { PageHeader } from "@/components/ui/page-header";
import { CalendrierView } from "@/components/modules/calendrier/CalendrierView";

export const dynamic = "force-dynamic";

export default async function CalendrierPage() {
  // Récupérer toutes les réservations non annulées sur une fenêtre raisonnable
  const start = new Date();
  start.setMonth(start.getMonth() - 2);
  const end = new Date();
  end.setMonth(end.getMonth() + 6);

  const reservations = await prisma.reservation.findMany({
    where: {
      statut: { not: "ANNULEE" },
      OR: [
        { date_arrivee: { gte: start, lte: end } },
        { date_depart: { gte: start, lte: end } },
        { AND: [{ date_arrivee: { lte: start } }, { date_depart: { gte: end } }] },
      ],
    },
    include: { client: true, chambre: true },
    orderBy: { date_arrivee: "asc" },
  });

  const events = reservations.map((r) => ({
    id: r.id,
    client: r.client.nom_complet,
    chambre: r.chambre.numero,
    type: r.chambre.type,
    arrivee: r.date_arrivee.toISOString(),
    depart: r.date_depart.toISOString(),
    statut: r.statut,
    nb_nuits: r.nb_nuits,
    prix_total: r.prix_total,
  }));

  return (
    <div className="space-y-4">
      <PageHeader
        title="Calendrier"
        description="Vue des réservations par mois, semaine et jour"
      />
      <CalendrierView events={events} />
    </div>
  );
}
