Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        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));
        }