import { getServerSession } from "next-auth"; import { authOptions } from "@/app/api/auth/[...nextauth]/route"; import { redirect } from "next/navigation"; import { getAnnonceById, getAnnonceByIdInclude } from "@/lib/services/annonceService"; import { getUserById } from "@/lib/services/userService"; import Link from "next/link"; import ImageCarousel from "@/lib/components/ImageCarrousel"; import ImageCarrousel from "@/lib/components/ImageCarrousel"; export default async function AnnonceDetail({ params }: { params: { id: string } }) { const session = await getServerSession(authOptions); if (!session) redirect("/"); const annonce = await getAnnonceByIdInclude(Number(params.id)); if (!annonce) return
Annonce non trouvée.
; const agent = await getUserById(annonce.agentId); const formattedPrice = new Intl.NumberFormat("fr-FR", { style: "currency", currency: "EUR", minimumFractionDigits: 0, }).format(annonce.price); const imageSrc = annonce.mainImg ? `data:image/jpeg;base64,${annonce.mainImg}` : "/default-image-annonce.jpg"; let imagesSrc = []; if (annonce.gallery && annonce.gallery.length > 0) { const autresImagesSrc = annonce.gallery.map((img) => `data:image/jpeg;base64,${img.imageData}`); imagesSrc = [imageSrc, ...autresImagesSrc]; } else { imagesSrc = [imageSrc]; } return (
← Retour aux annonces
{/* Colonne principale (Image et Description) */}
{/* Carrousel */}
{/* Titre et Adresse */}

{annonce.title}

{annonce.address}, {annonce.city}

{/* Description */}

Description

{annonce.description || "Aucune description."}

{/* Prix et Agent */}
); }