import { getServerSession } from "next-auth"; import { authOptions } from "@/app/api/auth/[...nextauth]/route"; import { getAnnonceByIdInclude } from "@/lib/services/annonceService"; import Link from "next/link"; import ImageCarrousel from "@/lib/components/annonceComponents/ImageCarrousel"; import AddQuestionButton from "@/lib/components/EditAnnonce/addQuestionButtonComponent"; import AnswerQuestionButton from "@/lib/components/EditAnnonce/answerQuestionButtonComponent"; import RoomComponent from "@/lib/components/annonceComponents/roomComponent"; import BathRoomComponent from "@/lib/components/annonceComponents/bathRoomComponent"; import AeraComponent from "@/lib/components/annonceComponents/aeraComponent"; import FloorComponent from "@/lib/components/annonceComponents/floorComponent"; import YearComponent from "@/lib/components/annonceComponents/yearComponent"; import AvailableComponent from "@/lib/components/annonceComponents/availableComponent"; import Image from "next/image"; export default async function AnnonceDetail({ params }: { params: { id: string } }) { const session = await getServerSession(authOptions); const annonce = await getAnnonceByIdInclude(Number(params.id)); if (!annonce) return
Annonce non trouvée.
; const agent = annonce.agent; 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 (

{annonce.title}

{annonce.realeSteateStatus === "AVAILABLE" && (

Location

)} {annonce.realeSteateStatus === "RENTED" && (

Loué

)} {annonce.realeSteateStatus === "FORSALE" && (

Achat

)} {annonce.realeSteateStatus === "SOLD" && (

Vendu

)}

{formattedPrice}

Description de la propriété

{annonce.description}

{annonce.agent.firstName} {annonce.agent.lastName}

{annonce.agent.role}

{/*{`${titre}*/}
photoplaceholder

E-mail

{annonce.agent.email}

FAQ

{annonce.questions && annonce.questions.length > 0 ? (
{annonce.questions.map((q) => (

{q.authorName ?? "Utilisateur anonyme"} :

{q.content}

{q.answer ? (

Réponse :

{q.answer}

— {q.answerAuthorName ?? "Agent"} le{" "} {q.answeredAt ? new Date(q.answeredAt).toLocaleDateString() : ""}

) : ( <>

Pas encore de réponse.

{session && (session.user?.role === "ADMIN" || Number(session.user?.id) === annonce.agent.id) && ( )} )}
))}
) : (

Aucune question posée pour le moment.

)} {session && }
); }