public GetPageTranslationsResponse Get(GetPageTranslationsRequest request) { var languageGroupIdentifier = GetPageLanguageGroupIdentifier(request); // Page has no translations if (!languageGroupIdentifier.HasValue) { return new GetPageTranslationsResponse { Data = new DataListResponse<PageTranslationModel>() }; } request.Data.SetDefaultOrder("Title"); // Load translations var query = repository .AsQueryable<Module.Pages.Models.PageProperties>() .Where(p => p.LanguageGroupIdentifier == languageGroupIdentifier.Value); var dataListResult = query.Select(p => new PageTranslationModel { Id = p.Id, Title = p.Title, PageUrl = p.PageUrl, LanguageId = p.Language != null ? p.Language.Id : (System.Guid?)null, LanguageCode = p.Language != null ? p.Language.Code : null, IsPublished = p.Status == PageStatus.Published, PublishedOn = p.PublishedOn }).ToDataListResponse(request); return new GetPageTranslationsResponse { Data = dataListResult }; }
public ActionResult ChangeCulture(string lang, string returnUrl) { Session["Culture"] = new CultureInfo(lang); using (var api = ApiFactory.Create()) { var request = new GetPageTranslationsRequest { PageUrl = returnUrl }; var xx = api.Pages.Page.Translations.Get(request); if (xx.Data.TotalCount > 1) { List <PageTranslationModel> pages1 = xx.Data.Items.ToList(); foreach (var item in pages1) { string language = item.LanguageCode != null ? item.LanguageCode : "vi"; if (language == lang) { return(Redirect(item.PageUrl)); } } } } return(Redirect(returnUrl)); }
private System.Guid? GetPageLanguageGroupIdentifier(GetPageTranslationsRequest request) { // Get page language group identifier var query = repository.AsQueryable<Module.Pages.Models.PageProperties>(); if (request.PageId.HasValue) { query = query.Where(p => p.Id == request.PageId.Value); } else { var url = urlService.FixUrl(request.PageUrl); query = query.Where(p => p.PageUrl == url); } return query.Select(p => p.LanguageGroupIdentifier).FirstOrDefault(); }
public ActionResult ChangeCulture(string lang, string returnUrl) { Session["Culture"] = new CultureInfo(lang); using (var api = ApiFactory.Create()) { var request = new GetPageTranslationsRequest { PageUrl = returnUrl }; var xx = api.Pages.Page.Translations.Get(request); if (xx.Data.TotalCount > 1) { List<PageTranslationModel> pages1 = xx.Data.Items.ToList(); foreach (var item in pages1) { string language = item.LanguageCode != null ? item.LanguageCode : "vi"; if (language == lang) { return Redirect(item.PageUrl); } } } } return Redirect(returnUrl); }