public SessionViewModel ToSessionViewModel(Session session) { if (session == null) { return(null); } var speakerSessions = _context.SpeakerSessions .Include(ss => ss.Session) .Include(ss => ss.Speaker) .Include(ss => ss.Speaker.CodecampUser) .Where(ss => ss.SessionId == session.SessionId) .ToList(); var sessionViewModel = new SessionViewModel { SessionId = session.SessionId, Name = session.Name, Description = session.Description, SkillLevel = SkillLevel.GetSkillLevelDescription(session.SkillLevel), Keywords = session.Keywords, IsApproved = session.IsApproved, SpeakerSessions = speakerSessions, EventName = session.Event.Name }; return(sessionViewModel); }
public async Task <List <ScheduleViewModel> > GetScheduleViewModelToBuildSchedule(int eventId) { var scheduleToBuild // Get the sessions = from session in _context.Sessions // Speaker/session information join _speakerSession in _context.SpeakerSessions on session.SessionId equals _speakerSession.SessionId into speakerSessionLeftJoin // Get schedule info if it exists join _schedule in _context.CodecampSchedule on session.SessionId equals _schedule.SessionId into scheduleLeftJoin from schedule in scheduleLeftJoin.DefaultIfEmpty() // Get track information if it exists join _track in _context.Tracks on schedule.TrackId equals _track.TrackId into trackLeftJoin // Get timeslot inforation if it exists join _timeslot in _context.Timeslots on schedule.TimeslotId equals _timeslot.TimeslotId into timeslotLeftJoin from track in trackLeftJoin.DefaultIfEmpty() from timeslot in timeslotLeftJoin.DefaultIfEmpty() where session.EventId == eventId select new ScheduleViewModel { SessionId = session.SessionId, Name = session.Name, Description = session.Description, SkillLevelId = session.SkillLevel, SkillLevel = SkillLevel.GetSkillLevelDescription(session.SkillLevel), Keywords = session.Keywords, IsApproved = session.IsApproved, SpeakerSessions = speakerSessionLeftJoin.ToList(), TrackId = track != null ? track.TrackId : (int?)null, TrackName = track != null ? track.Name : string.Empty, RoomNumber = track != null ? track.RoomNumber : string.Empty, TimeslotId = timeslot != null ? timeslot.TimeslotId : (int?)null, StartTime = timeslot != null ? timeslot.StartTime : (DateTime?)null, EndTime = timeslot != null ? timeslot.EndTime : (DateTime?)null }; scheduleToBuild = scheduleToBuild .OrderBy(s => s.TrackName) .ThenBy(s => s.StartTime); return(await scheduleToBuild.ToListAsync()); }
public SessionViewModel ToSessionViewModel(Session session, string userId = null) { if (session == null) { return(null); } var speakerSessions = _context.SpeakerSessions .Include(ss => ss.Session) .Include(ss => ss.Speaker) .Include(ss => ss.Speaker.CodecampUser) .Where(ss => ss.SessionId == session.SessionId) .ToList(); var track = session.TrackId.HasValue ? _context.Tracks.FirstOrDefault(t => t.TrackId == session.TrackId.Value) : null; var timeslot = session.TimeslotId.HasValue ? _context.Timeslots.FirstOrDefault(t => t.TimeslotId == session.TimeslotId.Value) : null; var sessionViewModel = new SessionViewModel { SessionId = session.SessionId, Name = session.Name, Description = session.Description, SkillLevel = SkillLevel.GetSkillLevelDescription(session.SkillLevel), Keywords = session.Keywords, IsApproved = session.IsApproved, EventName = session.Event.Name, IsUserFavorite = userId == null ? false : session.AttendeeSessions .Exists(_as => _as.CodecampUserId == userId && _as.SessionId == session.SessionId), TimeslotId = timeslot != null ? session.TimeslotId : (int?)null, TimeslotName = timeslot != null ? timeslot.Name : string.Empty, StartTime = timeslot != null ? timeslot.StartTime : (DateTime?)null, EndTime = timeslot != null ? timeslot.EndTime : (DateTime?)null, TrackId = track != null ? track.TrackId : (int?)null, TrackName = track != null ? track.Name : string.Empty, RoomNumber = track != null ? track.RoomNumber : string.Empty, SpeakerNames = string.Join(",", speakerSessions.Select(ss => ss.Speaker.CodecampUser.FullName)) }; return(sessionViewModel); }
/// <summary> /// Convert a Session to a SessionViewModel /// </summary> /// <param name="sessions">IQueryable<Session> object</param> /// <returns>IQueryable<SessionViewModel> object</returns> public IQueryable <SessionViewModel> ToSessionViewModel(IQueryable <Session> sessions) { if (sessions == null) { return(null); } var sessionViewModels = from session in sessions select new SessionViewModel { SessionId = session.SessionId, Name = session.Name, Description = session.Description, SkillLevel = SkillLevel.GetSkillLevelDescription(session.SkillLevel), Keywords = session.Keywords, IsApproved = session.IsApproved, EventName = session.Event.Name, }; return(sessionViewModels); }
public List <ScheduleViewModel> ToScheduleViewModel(List <Schedule> schedule) { var scheduleViewModel = from _schedule in schedule // Get session information join session in _context.Sessions on _schedule.SessionId equals session.SessionId // Get event information join _event in _context.Events on _schedule.Session.EventId equals _event.EventId // Get track information join track in _context.Tracks on _schedule.TrackId equals track.TrackId // Get timeslot information join timeslot in _context.Timeslots on _schedule.TimeslotId equals timeslot.TimeslotId // Get speakerSession information join _speakerSession in _context.SpeakerSessions on _schedule.SessionId equals _speakerSession.SessionId into speakerSessionsGroupJoin select new ScheduleViewModel { SessionId = _schedule.SessionId, Name = session.Name, Description = session.Description, SkillLevelId = session.SkillLevel, SkillLevel = SkillLevel.GetSkillLevelDescription(session.SkillLevel), Keywords = session.Keywords, IsApproved = session.IsApproved, SpeakerSessions = speakerSessionsGroupJoin.ToList(), TrackId = _schedule.TrackId, TrackName = track.Name, RoomNumber = track.RoomNumber, TimeslotId = _schedule.TimeslotId, StartTime = timeslot.StartTime, EndTime = timeslot.EndTime }; return(scheduleViewModel.ToList()); }
/// <summary> /// Convert a Session to a SessionViewModel /// </summary> /// <param name="sessions">IQueryable<Session> object</param> /// <returns>IQueryable<SessionViewModel> object</returns> public IQueryable <SessionViewModel> ToSessionViewModel(IQueryable <Session> sessions, string userId = null) { if (sessions == null) { return(null); } var tempSession = from _session in sessions join speakerSession in _context.SpeakerSessions on _session.SessionId equals speakerSession.SessionId join speaker in _context.Speakers on speakerSession.SpeakerId equals speaker.SpeakerId join codecampUser in _context.CodecampUsers on speaker.CodecampUserId equals codecampUser.Id join _timeslot in _context.Timeslots on _session.TimeslotId equals _timeslot.TimeslotId into timeslotLeftJoin join _track in _context.Tracks on _session.TrackId equals _track.TrackId into trackLeftJoin from timeslot in timeslotLeftJoin.DefaultIfEmpty() from track in trackLeftJoin.DefaultIfEmpty() select new SessionViewModel { SessionId = _session.SessionId, Name = _session.Name, Description = _session.Description, SkillLevel = SkillLevel.GetSkillLevelDescription(_session.SkillLevel), Keywords = _session.Keywords, IsApproved = _session.IsApproved, EventName = _session.Event.Name, IsUserFavorite = userId == null ? false : _session.AttendeeSessions .Exists(_as => _as.CodecampUserId == userId && _as.SessionId == _session.SessionId), TimeslotId = timeslot != null ? timeslot.TimeslotId : (int?)null, TimeslotName = timeslot != null ? timeslot.Name : string.Empty, StartTime = timeslot != null ? timeslot.StartTime : DateTime.MinValue, EndTime = timeslot != null ? timeslot.EndTime : DateTime.MinValue, TrackId = track != null ? track.TrackId : (int?)null, TrackName = track != null ? track.Name : string.Empty, RoomNumber = track != null ? track.RoomNumber : string.Empty, SpeakerNames = codecampUser.FullName }; var session = from _session in tempSession group _session by new { _session.SessionId, _session.Name, _session.Description, _session.SkillLevel, _session.Keywords, _session.IsApproved, _session.EventName, _session.IsUserFavorite, _session.TimeslotId, _session.TimeslotName, _session.StartTime, _session.EndTime, _session.TrackId, _session.TrackName, _session.RoomNumber, } into groupSession select new SessionViewModel { SessionId = groupSession.Key.SessionId, Name = groupSession.Key.Name, Description = groupSession.Key.Description, SkillLevel = groupSession.Key.SkillLevel, Keywords = groupSession.Key.Keywords, IsApproved = groupSession.Key.IsApproved, EventName = groupSession.Key.EventName, IsUserFavorite = groupSession.Key.IsUserFavorite, TimeslotId = groupSession.Key.TimeslotId, TimeslotName = groupSession.Key.TimeslotName, StartTime = groupSession.Key.StartTime, EndTime = groupSession.Key.EndTime, TrackId = groupSession.Key.TrackId, TrackName = groupSession.Key.TrackName, RoomNumber = groupSession.Key.RoomNumber, SpeakerNames = string.Join(",", groupSession.Select(gs => gs.SpeakerNames)) }; session = session .OrderBy(s => s.TrackName) .ThenBy(s => s.StartTime.Value.TimeOfDay); return(session); }
public async Task <List <ScheduleViewModel> > GetScheduleViewModel(int eventId) { var tempSchedule // Get the sessions = from session in _context.Sessions // Speaker/session information join speakerSession in _context.SpeakerSessions on session.SessionId equals speakerSession.SessionId join speaker in _context.Speakers on speakerSession.SpeakerId equals speaker.SpeakerId join codecampUser in _context.CodecampUsers on speaker.CodecampUserId equals codecampUser.Id // Get track information if it exists join _track in _context.Tracks on session.TrackId equals _track.TrackId into trackLeftJoin // Get timeslot inforation if it exists join _timeslot in _context.Timeslots on session.TimeslotId equals _timeslot.TimeslotId into timeslotLeftJoin from track in trackLeftJoin.DefaultIfEmpty() from timeslot in timeslotLeftJoin.DefaultIfEmpty() where session.EventId == eventId select new ScheduleViewModel { SessionId = session.SessionId, Name = session.Name, Description = session.Description, SkillLevelId = session.SkillLevel, SkillLevel = SkillLevel.GetSkillLevelDescription(session.SkillLevel), Keywords = session.Keywords, IsApproved = session.IsApproved, Speakers = codecampUser.FullName, TrackId = track != null ? track.TrackId : (int?)null, TrackName = track != null ? track.Name : string.Empty, RoomNumber = track != null ? track.RoomNumber : string.Empty, TimeslotId = timeslot != null ? timeslot.TimeslotId : (int?)null, StartTime = timeslot != null ? timeslot.StartTime : DateTime.MinValue, EndTime = timeslot != null ? timeslot.EndTime : DateTime.MinValue }; var schedule = from _schedule in tempSchedule group _schedule by new { _schedule.SessionId, _schedule.Name, _schedule.Description, _schedule.SkillLevelId, _schedule.SkillLevel, _schedule.Keywords, _schedule.IsApproved, _schedule.TrackId, _schedule.TrackName, _schedule.RoomNumber, _schedule.TimeslotId, _schedule.StartTime, _schedule.EndTime } into groupSchedule select new ScheduleViewModel { SessionId = groupSchedule.Key.SessionId, Name = groupSchedule.Key.Name, Description = groupSchedule.Key.Description, SkillLevelId = groupSchedule.Key.SkillLevelId, SkillLevel = groupSchedule.Key.SkillLevel, Keywords = groupSchedule.Key.Keywords, IsApproved = groupSchedule.Key.IsApproved, TrackId = groupSchedule.Key.TrackId, TrackName = groupSchedule.Key.TrackName, RoomNumber = groupSchedule.Key.RoomNumber, TimeslotId = groupSchedule.Key.TimeslotId, StartTime = groupSchedule.Key.StartTime, EndTime = groupSchedule.Key.EndTime, Speakers = string.Join(",", groupSchedule.Select(gs => gs.Speakers)) }; schedule = schedule .OrderByDescending(s => s.IsApproved) .ThenBy(s => s.TrackName) .ThenBy(s => s.StartTime.Value.TimeOfDay); return(await schedule.ToListAsync()); }