public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) { VirtualPathData result = null; IRouteUrlPageInfo page = null; var tenant = appContext.CurrentTenant; // Get all of the pages var pages = routeUrlPageListFactory.GetRouteUrlPageList(tenant.Id); if (TryFindMatch(pages, values, out page)) { result = routeUtilities.CreateVirtualPathData(this, page.VirtualPath); } return(result); }
private bool TryFindMatch(IEnumerable<IRouteUrlPageInfo> pages, RouteValueDictionary values, out IRouteUrlPageInfo page) { page = null; Guid contentId = Guid.Empty; var action = Convert.ToString(values["action"]); var controller = Convert.ToString(values["controller"]); var localeId = (int?)values["localeId"]; if (localeId == null) { return false; } if (!Guid.TryParse(Convert.ToString(values["id"]), out contentId)) { // TODO: Make home page based on tenant/area // Special case for homepage if (action == "Index" && controller == "Home") { page = pages .Where(x => x.ContentType == ContentTypeEnum.Home) .Where(x => x.LocaleId.Equals(localeId)) .FirstOrDefault(); if (page != null) { return true; } } } if (action == "Details") { page = pages .Where(x => x.ContentId.Equals(contentId) && x.ContentType.ToString().Equals(controller, StringComparison.InvariantCultureIgnoreCase)) .Where(x => x.LocaleId.Equals(localeId)) .FirstOrDefault(); if (page != null) { return true; } } return false; }
private bool TryFindMatch(IEnumerable <IRouteUrlPageInfo> pages, RouteValueDictionary values, out IRouteUrlPageInfo page) { page = null; Guid contentId = Guid.Empty; var action = Convert.ToString(values["action"]); var controller = Convert.ToString(values["controller"]); var localeId = (int?)values["localeId"]; if (localeId == null) { return(false); } if (!Guid.TryParse(Convert.ToString(values["id"]), out contentId)) { // TODO: Make home page based on tenant/area // Special case for homepage if (action == "Index" && controller == "Home") { page = pages .Where(x => x.ContentType == ContentTypeEnum.Home) .Where(x => x.LocaleId.Equals(localeId)) .FirstOrDefault(); if (page != null) { return(true); } } } if (action == "Details") { page = pages .Where(x => x.ContentId.Equals(contentId) && x.ContentType.ToString().Equals(controller, StringComparison.InvariantCultureIgnoreCase)) .Where(x => x.LocaleId.Equals(localeId)) .FirstOrDefault(); if (page != null) { return(true); } } return(false); }