public async Task <IActionResult> Index()
        {
            ViewBag.UserTypes = UserType.GetUserTypes();
            var pageModel = new PageModel();

            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.GetAllSessionsViewModelForActiveEvent();

                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.GetAllSessionsViewModelForSpeakerForActiveEvent(
                            user.SpeakerId.Value);

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

                        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.GetAllApprovedSessionsViewModelForActiveEvent();

                    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.GetAllApprovedSessionsViewModelForActiveEvent();

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

            return(View(pageModel));
        }
Beispiel #2
0
        /// <summary>
        /// Get the specified speaker
        /// </summary>
        /// <param name="speakerId">The desired speaker Id</param>
        /// <param name="onlyApprovedSessions">Indicates whether to load only approved sessions or all sessions</param>
        /// <returns>The SpeakerViewModel object</returns>
        public async Task <SpeakerViewModel> GetSpeakerViewModel(int speakerId, bool onlyApprovedSessions = false)
        {
            var speaker = _context.Speakers
                          .Include(s => s.CodecampUser)
                          .FirstOrDefault(s => s.SpeakerId == speakerId);

            var speakerViewModel = ToSpeakerViewModel(speaker);

            if (onlyApprovedSessions == false)
            {
                speakerViewModel.Sessions = await _sessionBL.GetAllSessionsViewModelForSpeakerForActiveEvent(speakerViewModel.SpeakerId);
            }
            else
            {
                speakerViewModel.Sessions = await _sessionBL.GetAllApprovedSessionsViewModelForSpeakerForActiveEvent(speakerViewModel.SpeakerId);
            }

            return(speakerViewModel);
        }