diff --git a/src/JobsMedical.Web/Pages/Facilities/Details.cshtml b/src/JobsMedical.Web/Pages/Facilities/Details.cshtml
index 17215ed..74aaa39 100644
--- a/src/JobsMedical.Web/Pages/Facilities/Details.cshtml
+++ b/src/JobsMedical.Web/Pages/Facilities/Details.cshtml
@@ -149,3 +149,12 @@
{
}
+
+@* Place/clinic structured data — only for a real named facility (not the «نامشخص» placeholder). *@
+@if (JobsMedical.Web.Services.SeoJsonLd.HasRealEmployer(f))
+{
+ var bu = $"{ViewContext.HttpContext.Request.Scheme}://{ViewContext.HttpContext.Request.Host}";
+ @Html.Raw("")
+}
diff --git a/src/JobsMedical.Web/Pages/Index.cshtml b/src/JobsMedical.Web/Pages/Index.cshtml
index 9952e3c..8e97cd0 100644
--- a/src/JobsMedical.Web/Pages/Index.cshtml
+++ b/src/JobsMedical.Web/Pages/Index.cshtml
@@ -2,7 +2,7 @@
@model IndexModel
@{
ViewData["Title"] = null; // use default site title for the home page (best for SEO)
- ViewData["Description"] = "همکادر؛ سریعترین راه برای کادر درمان (پزشک، پرستار، ماما، تکنسین) جهت یافتن شیفت و موقعیت استخدامی در بیمارستانها و کلینیکهای تهران. بهجای گشتن در کانالهای تلگرام و بله، همه فرصتها یکجا.";
+ ViewData["Description"] = "یافتن شیفت و موقعیت استخدامی کادر درمان (پزشک، پرستار، ماما، تکنسین) در بیمارستانها و کلینیکهای تهران — همهٔ فرصتها یکجا در همکادر.";
}
diff --git a/src/JobsMedical.Web/Services/SeoJsonLd.cs b/src/JobsMedical.Web/Services/SeoJsonLd.cs
index 87fcfc2..7924157 100644
--- a/src/JobsMedical.Web/Services/SeoJsonLd.cs
+++ b/src/JobsMedical.Web/Services/SeoJsonLd.cs
@@ -100,6 +100,26 @@ public static class SeoJsonLd
return Fix(JsonSerializer.Serialize(obj, Opts));
}
+ /// schema.org structured data for a facility page — a Hospital/MedicalClinic with its
+ /// address, map coordinates, and aggregate review rating, so Google can show a rich place result.
+ public static string MedicalOrganization(Facility f, string baseUrl, double avgRating = 0, int ratingCount = 0)
+ {
+ var schemaType = f.Type == FacilityType.Hospital ? "Hospital" : "MedicalClinic";
+ var obj = new Dictionary
+ {
+ ["@context"] = "https://schema.org",
+ ["@type"] = schemaType,
+ ["name"] = f.Name,
+ ["url"] = $"{baseUrl}/Facilities/Details/{f.Id}",
+ ["address"] = new { type = "PostalAddress", addressLocality = f.City?.Name, addressCountry = "IR", streetAddress = f.Address },
+ };
+ if (f.Lat is double la && f.Lng is double lo)
+ obj["geo"] = new { type = "GeoCoordinates", latitude = la, longitude = lo };
+ if (ratingCount > 0)
+ obj["aggregateRating"] = new { type = "AggregateRating", ratingValue = Math.Round(avgRating, 1), reviewCount = ratingCount };
+ return Fix(JsonSerializer.Serialize(obj, Opts));
+ }
+
public static string Organization(string baseUrl) => Fix(JsonSerializer.Serialize(new Dictionary
{
["@context"] = "https://schema.org",