/// <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.GetAllSessionViewModelsForSpeakerForActiveEvent(speakerViewModel.SpeakerId); } else { speakerViewModel.Sessions = await _sessionBL.GetAllApprovedSessionViewModelsForSpeakerForActiveEvent(speakerViewModel.SpeakerId); } return(speakerViewModel); }
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)); }