using Convert_It_Online.Services; using Microsoft.AspNetCore.Routing; using System.Globalization; namespace Convert_It_Online.Routing { public class LocalizedAreaRouteConstraint : IRouteConstraint { private readonly IUrlTranslationService _urlTranslationService; public LocalizedAreaRouteConstraint(IUrlTranslationService urlTranslationService) { _urlTranslationService = urlTranslationService; } public bool Match(HttpContext? httpContext, IRouter? route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) { if (values.TryGetValue("translatedArea", out var value) && value is string areaName) { if (values.TryGetValue("culture", out var cultureValue) && cultureValue is string cultureName) { var culture = new CultureInfo(cultureName); var originalArea = _urlTranslationService.GetOriginalArea(areaName, culture); if (originalArea != null) { values["area"] = originalArea; return true; } } } return false; } } }