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)); }
/// <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); }