Files
nobat724_front/app/clinic/[slug]/page.js
T
2026-06-05 21:28:12 +03:30

75 lines
2.1 KiB
JavaScript

import ClinicPage from "@/components/clinic";
import Layout from "@/components/layout/StLayout";
import { fetchReq } from "@/lib/req";
import { getStateInfo } from "@/lib/getStateInfo";
export async function generateMetadata({ params }) {
const { slug } = await params;
const API_URL = process.env.NEXT_PUBLIC_API_URL;
const { matchedCity } = await getStateInfo();
const siteName = matchedCity?.site_name || "نوبت 724";
try {
const clinic = await fetchReq(`${API_URL}/api/v1/clinic/${slug}`);
if (!clinic) return {};
const title = `${clinic.title} | ${siteName}`;
const description = `رزرو نوبت و اطلاعات ${clinic.title}. مشاهده لیست پزشکان و خدمات درمانی موجود.`;
return {
title,
description,
openGraph: {
title,
description,
images: clinic.images_clinic?.[0]
? [clinic.images_clinic[0]]
: ["https://www.nobat724.com/assets/images/logo.png"],
},
};
} catch {
return {};
}
}
async function Clinic({ params, searchParams }) {
const { slug } = await params;
const API_URL = process.env.NEXT_PUBLIC_API_URL;
const page = Number(searchParams?.page) || 1;
const limit = 50;
const reqClinics = await fetchReq(`${API_URL}/api/v1/clinic/${slug}`);
const reqDoctors = await fetchReq(
`${API_URL}/api/v1/clinic/doctor-list/${slug}?page=${page}&limit=${limit}`
);
const clinic = reqClinics;
const doctors = reqDoctors?.data || [];
const pagedoctors = reqDoctors?.page;
const jsonLd = clinic
? {
"@context": "https://schema.org",
"@type": "MedicalClinic",
name: clinic.title,
...(clinic.images_clinic?.[0] && { image: clinic.images_clinic[0] }),
}
: null;
return (
<>
{jsonLd && (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
)}
<Layout>
<ClinicPage data={clinic} doctors={doctors} slug={slug} pages={pagedoctors} />
</Layout>
</>
);
}
export default Clinic;