public SortEventsViewModel(EventSortState sortOrder) { TitleSort = sortOrder == EventSortState.TitleAsc ? EventSortState.TitleDesc : EventSortState.TitleAsc; AuthorSort = sortOrder == EventSortState.AuthorAsc ? EventSortState.AuthorDesc : EventSortState.AuthorAsc; CountrySort = sortOrder == EventSortState.CountryAsc ? EventSortState.CountryDesc : EventSortState.CountryAsc; CitySort = sortOrder == EventSortState.CityAsc ? EventSortState.CityDesc : EventSortState.CityAsc; Current = sortOrder; }
public IActionResult Events(string title, string author, string country, string city, int page = 1, EventSortState sortOrder = EventSortState.TitleAsc) { int pageSize = 2; var events = _eventService.GetAllEvents(); if (!String.IsNullOrEmpty(title)) { events = events.Where(p => p.EventName.Contains(title)); } if (!String.IsNullOrEmpty(author)) { events = events.Where(p => p.UserProfile.User.UserName.Contains(author)); } if (!String.IsNullOrEmpty(country)) { events = events.Where(p => p.Location.Country.Contains(country)); } if (!String.IsNullOrEmpty(city)) { events = events.Where(p => p.Location.City.Contains(city)); } switch (sortOrder) { case EventSortState.TitleDesc: events = events.OrderByDescending(s => s.EventName); break; case EventSortState.AuthorAsc: events = events.OrderBy(s => s.UserProfile.User.UserName); break; case EventSortState.AuthorDesc: events = events.OrderByDescending(s => s.UserProfile.User.UserName); break; case EventSortState.CountryAsc: events = events.OrderBy(s => s.Location.Country); break; case EventSortState.CountryDesc: events = events.OrderByDescending(s => s.Location.Country); break; case EventSortState.CityAsc: events = events.OrderBy(s => s.Location.City); break; case EventSortState.CityDesc: events = events.OrderByDescending(s => s.Location.City); break; default: events = events.OrderBy(s => s.EventName); break; } var count = events.Count(); var items = events.Skip((page - 1) * pageSize).Take(pageSize).ToList(); List <List <string> > sel_cat = new List <List <string> >(); List <int> count_subscribers = new List <int>(); foreach (var x in items) { List <string> event_category = new List <string>(); event_category = _categoryService.CategoriesOfEvent(x.Id); sel_cat.Add(event_category); count_subscribers.Add(_eventService.CountSubscribers(x.Id)); } IndexEventsViewModel viewModel = new IndexEventsViewModel { PageViewModel = new PageViewModel(count, page, pageSize), SortEventsViewModel = new SortEventsViewModel(sortOrder), FilterEventsViewModel = new FilterEventsViewModel(title, author, country, city), Events = items, Selected_Categories = sel_cat, Count_Subscribers = count_subscribers }; return(View(viewModel)); }