示例#1
0
        public IActionResult Events()
        {
            var placeTypes           = db.PlaceTypes.ToList();
            var areas                = db.Areas.ToList();
            IndexEventsViewModel evm = new IndexEventsViewModel {
                Areas = areas, PlaceTypes = placeTypes
            };

            return(View(evm));
        }
示例#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));
        }