Пример #1
0
        // GET: Agenda
        public async Task <IActionResult> Agenda()
        {
            var agenda = new PageModel();

            agenda.Sessions
                = await _sessionBL.GetAllApprovedSessionViewModelsForActiveEvent();

            agenda.Tracks
                = await _trackBL.GetAllTrackViewModelsForActiveEvent();

            agenda.Timeslots
                = await _timeslotBL.GetAllTimeslotViewModelsForActiveEvent();

            return(View(agenda));
        }
        public async Task <IActionResult> Index()
        {
            var pageModel = new PageModel();

            pageModel.UserTypes = UserType.GetUserTypes().ToList();

            pageModel.Tracks = await _trackBL.GetAllTrackViewModelsForActiveEvent();

            pageModel.Tracks.Insert(0, new TrackViewModel {
                TrackId = 0, DisplayName = "All Tracks"
            });

            pageModel.Timeslots = await _timeslotBL.GetAllTimeslotViewModelsForActiveEvent();

            pageModel.Timeslots.Insert(0, new TimeslotViewModel {
                TimeslotId = 0, DisplayName = "All Timeslots"
            });

            if (User.IsInRole("Admin"))
            {
                // Get all sessions for the active event for the admin
                pageModel.SelectedUserType = (int)TypesOfUsers.AllUsers; // JTL, I don't think this is actually necessary
                pageModel.Sessions         = await _sessionBL.GetAllApprovedSessionViewModelsForActiveEvent(UserId);

                ViewData["Title"] = "All Sessions";
            }
            else if (User.IsInRole("Speaker"))
            {
                pageModel.SelectedUserType = (int)TypesOfUsers.AllUsers;

                var user = await _userManager.GetUserAsync(User);

                if (user != null && user.SpeakerId.HasValue)
                {
                    if (pageModel.SelectedUserType == (int)TypesOfUsers.SpecificUser)
                    {
                        // The user is a speaker and we have access to their speakerId, therefore
                        // get all of the speaker's sessions for the active event.
                        pageModel.Sessions = await _sessionBL.GetAllSessionViewModelsForSpeakerForActiveEvent(
                            user.SpeakerId.Value, UserId);

                        ViewData["Title"] = "Your Sessions";
                    }
                    else
                    {
                        // The user desires to see all approved sessions for the event
                        pageModel.Sessions = await _sessionBL.GetAllApprovedSessionViewModelsForActiveEvent(UserId);

                        ViewData["Title"] = "Sessions";
                    }
                }
                else
                {
                    // We can't get the speakerId, so we'll return only approved
                    // speakers for the active event.
                    pageModel.SelectedUserType = (int)TypesOfUsers.AllUsers;
                    pageModel.Sessions         = await _sessionBL.GetAllApprovedSessionViewModelsForActiveEvent(UserId);

                    ViewData["Title"] = "Sessions";
                }
            }
            else
            {
                // The user is an attendee, return all approved sessions for
                // the active event.
                pageModel.SelectedUserType = (int)TypesOfUsers.AllUsers; // JTL, I don't think this is actually necessary
                pageModel.Sessions         = await _sessionBL.GetAllApprovedSessionViewModelsForActiveEvent(UserId);

                ViewData["Title"] = "Sessions";
            }

            pageModel.Sessions = pageModel.Sessions.OrderBy(s => s.StartTime).ToList();
            return(View(pageModel));
        }