CarouselBannerController
Wed Sep 20 2023 13:16:22 GMT+0000 (Coordinated Universal Time)
Saved by @makkarim07
using Newtonsoft.Json; using SitefinityWebApp.Mvc.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using Telerik.Sitefinity.Abstractions; using Telerik.Sitefinity.Mvc; using Telerik.Sitefinity.Services.Search; using Telerik.Sitefinity.Services.Search.Data; namespace SitefinityWebApp.Mvc.Controllers { [ControllerToolboxItem(Name = "CarouselBanner", Title = "Carousel Banner", SectionName = "SBF Custom")] public class CarouselBannerController : Controller { public string ItemType { get { return this.itemType; } set { this.itemType = value; } } string itemType = CarouselBannerModuleBuilder.Type; public string SelectedItems { get; set; } public string SelectedItemIds { get; set; } public string ItemType2 { get { return this.itemType2; } set { this.itemType2 = value; } } string itemType2 = FeaturedMenuModuleBuilder.Type; public string SelectedItems2 { get; set; } public string SelectedItemIds2 { get; set; } public ActionResult Index() { var result = new CarouselBannerWidgetModel(); var service = Telerik.Sitefinity.Services.ServiceBus.ResolveService<ISearchService>(); var queryBuilder = ObjectFactory.Resolve<IQueryBuilder>(); GetCarouselBanner(result, service, queryBuilder); GetFeaturedMenu(result, service, queryBuilder); return View(result); } private void GetCarouselBanner(CarouselBannerWidgetModel result, ISearchService service, IQueryBuilder queryBuilder) { var keysearch = string.Format("({0})", "true"); var searchQuery = queryBuilder.BuildQuery(keysearch, new[] { "si_issearch" }); searchQuery.IndexName = CarouselBannerModuleBuilder.IndexName; #region Compose where clause if (!string.IsNullOrWhiteSpace(this.SelectedItemIds)) { var ids = JsonConvert.DeserializeObject<Guid[]>(this.SelectedItemIds).ToList(); if (ids != null && ids.Count > 0) { var testimonialTypeGroup = new SearchQueryGroup(); testimonialTypeGroup.Operator = QueryOperator.Or; foreach (var value in ids) { testimonialTypeGroup.AddTerm(new SearchTerm() { Field = CarouselBannerModuleBuilder.Id, Value = string.Format("({0})", value) }); } var searchGroup = searchQuery.SearchGroup; searchQuery.SearchGroup = new SearchQueryGroup { Groups = new[] { searchGroup, testimonialTypeGroup }, Operator = QueryOperator.And }; } } #endregion List<IDocument> finalResult = null; IEnumerable<IDocument> whereItems = null; whereItems = service.Search(searchQuery); finalResult = whereItems.ToList(); for (int i = 0; i < finalResult.Count(); i++) { CarouselBannerModel modelItem = new CarouselBannerModel(); modelItem = ComposeBannerSlider(finalResult[i]); result.CarouselBannerItems.Add(modelItem); } result.CarouselBannerItems = result.CarouselBannerItems.OrderBy(t => t.Order).ToList(); } private void GetFeaturedMenu(CarouselBannerWidgetModel result, ISearchService service, IQueryBuilder queryBuilder) { var keysearch = string.Format("({0})", "true"); var searchQuery = queryBuilder.BuildQuery(keysearch, new[] { "si_issearch" }); searchQuery.IndexName = FeaturedMenuModuleBuilder.IndexName; #region Compose where clause if (!string.IsNullOrWhiteSpace(this.SelectedItemIds2)) { var ids = JsonConvert.DeserializeObject<Guid[]>(this.SelectedItemIds2).ToList(); if (ids != null && ids.Count > 0) { var testimonialTypeGroup = new SearchQueryGroup(); testimonialTypeGroup.Operator = QueryOperator.Or; foreach (var value in ids) { testimonialTypeGroup.AddTerm(new SearchTerm() { Field = FeaturedMenuModuleBuilder.Id, Value = string.Format("({0})", value) }); } var searchGroup = searchQuery.SearchGroup; searchQuery.SearchGroup = new SearchQueryGroup { Groups = new[] { searchGroup, testimonialTypeGroup }, Operator = QueryOperator.And }; } } #endregion List<IDocument> finalResult = null; IEnumerable<IDocument> whereItems = null; whereItems = service.Search(searchQuery); finalResult = whereItems.ToList(); for (int i = 0; i < finalResult.Count(); i++) { FeaturedMenuModel modelItem = new FeaturedMenuModel(); modelItem = ComposeFeatureMenu(finalResult[i]); result.FeatureMenuItems.Add(modelItem); } result.FeatureMenuItems = result.FeatureMenuItems.OrderBy(t => t.Order).ToList(); } private CarouselBannerModel ComposeBannerSlider(IDocument itemLive) { CarouselBannerModel bookModel = new CarouselBannerModel(); bookModel.Title = itemLive.GetValue($"si_{CarouselBannerModuleBuilder.Title}").ToString(); bookModel.Header = itemLive.GetValue($"si_{CarouselBannerModuleBuilder.Header}").ToString(); bookModel.Description = itemLive.GetValue($"si_{CarouselBannerModuleBuilder.Description}").ToString(); bookModel.CTALink = itemLive.GetValue($"si_{CarouselBannerModuleBuilder.CTALink}").ToString(); bookModel.ImageUrl = itemLive.GetValue($"si_{CarouselBannerModuleBuilder.Image}").ToString(); bookModel.PortraitImageUrl = itemLive.GetValue($"si_{CarouselBannerModuleBuilder.PortraitImage}").ToString(); bookModel.StyleOption = itemLive.GetValue($"si_{CarouselBannerModuleBuilder.StyleOption}").ToString(); bookModel.IsDark = bookModel.StyleOption == "2"; bookModel.Order = !string.IsNullOrWhiteSpace(itemLive.GetValue($"si_{CarouselBannerModuleBuilder.Order}").ToString()) ? int.Parse(itemLive.GetValue($"si_{CarouselBannerModuleBuilder.Order}").ToString()) : int.MaxValue; return bookModel; } private FeaturedMenuModel ComposeFeatureMenu(IDocument itemLive) { FeaturedMenuModel bookModel = new FeaturedMenuModel(); bookModel.Title = itemLive.GetValue($"si_{FeaturedMenuModuleBuilder.Title}").ToString(); bookModel.URL = itemLive.GetValue($"si_{FeaturedMenuModuleBuilder.URL}").ToString(); bookModel.Order = !string.IsNullOrWhiteSpace(itemLive.GetValue($"si_{FeaturedMenuModuleBuilder.Order}").ToString()) ? int.Parse(itemLive.GetValue($"si_{FeaturedMenuModuleBuilder.Order}").ToString()) : int.MaxValue; return bookModel; } } }
Comments