public IList <Sponsor> GetSponsors(int eventId) { using (var db = new CC.Data.CCDB()) { var e = db.Events.Find(eventId); if (e == null) { throw new ArgumentException("Event not found"); } var result = new List <Sponsor>(); // results.Add(new Sponsor { ID = 1, Name = "Microsoft" }); // results.Add(new Sponsor { ID = 2, Name = "DevExpress" }); foreach (var s in e.Sponsors.OrderBy(sp => Guid.NewGuid())) { Sponsor sponsor = new Sponsor(); Mapper.CopyProperties(s, sponsor); result.Add(sponsor); } return(result); } }
public IList <Announcement> GetAnnouncements(int eventId) { using (var db = new CC.Data.CCDB()) { var announcements = (from a in db.Announcements where a.Event_ID == eventId orderby a.PublishDate descending select a).ToList(); var result = new List <Announcement>(); foreach (var announcement in announcements) { result.Add(announcement.Map()); } //foreach (var announcement in db.Events.Find(eventId).Announcements) //{ // // var a = new Announcement(); // // Mapper.CopyProperties(announcement, a); // result.Add(announcement.Map()); //} return(result); } }
public IList <Session> GetSessions(int eventId) { var eventInfo = GetEvent(eventId); if (!eventInfo.IsSpeakerRegistrationOpen) { return(GetApprovedSessions(eventId)); } else { using (var db = new CC.Data.CCDB()) { var sessions = (from s in db.Sessions.Include("Speaker") where s.Event_ID == eventId orderby s.Name select s).ToList(); var result = new List <Session>(); foreach (var session in sessions) { result.Add(session.Map()); } return(result); } } }
public IList <Speaker> GetSpeakers(int eventId) { var eventInfo = GetEvent(eventId); List <Speaker> result = new List <Speaker>(); using (var db = new CC.Data.CCDB()) { var sessions = (from session in db.Sessions.Include("Speakers").Include("Sessions") where session.Event_ID == eventId select session); //if registrations are closed and there are approved sessions, filter this list if (!eventInfo.IsSpeakerRegistrationOpen && (sessions.Where(s => s.Status == ApprovedSession).Any())) { sessions = sessions.Where(s => s.Status == ApprovedSession); } var speakers = sessions.Select(s => s.Speaker) .Distinct() .OrderBy(s => s.LastName + " " + s.FirstName) .ToList(); foreach (var speaker in speakers) { result.Add(speaker.AsSpeaker()); } } return(result); }
public void AttendSession(int personId, int sessionId) { using (var db = new CC.Data.CCDB()) { // 1. delete old one Data.Session newSession = db.Sessions.Find(sessionId); if (newSession == null) { throw new Exception("Session not found"); } var oldSession = (from sa in db.SessionAttendees.Include("Session.Timeslot") where sa.Person_ID == personId && sa.Session.ID == sessionId select sa).SingleOrDefault(); //if (oldSession != null) // db.SessionAttendees.Remove(oldSession); if (oldSession == null) { // 2. insert new one db.SessionAttendees.Add(new CC.Data.SessionAttendee() { Person_ID = personId, Session_ID = sessionId, Comment = string.Empty, SessionRating = 0, SpeakerRating = 0 }); } db.SaveChanges(); } }
public void CreateSponsor(Sponsor sponsor) { using (var db = new CC.Data.CCDB()) { db.Sponsors.Add(sponsor.Map()); db.SaveChanges(); } }
public Speaker GetSpeaker(int eventId, int speakerId) { using (var db = new CC.Data.CCDB()) { var s = (from speaker in db.People.Include("Sessions") where speaker.ID == speakerId select speaker).FirstOrDefault(); if (s == null) { throw new ArgumentException("Speaker not found"); } // OLD: return s.AsSpeaker(); // ?? how to filter sessions by event id ?? Speaker result = new Speaker() { ID = s.ID, Email = s.Email, FirstName = s.FirstName, LastName = s.LastName, Title = string.IsNullOrEmpty(s.Title) ? string.Empty : s.Title, Bio = string.IsNullOrEmpty(s.Bio) ? string.Empty : s.Bio, Website = string.IsNullOrEmpty(s.Website) ? string.Empty : s.Website, Blog = string.IsNullOrEmpty(s.Blog) ? string.Empty : s.Blog, Twitter = string.IsNullOrEmpty(s.Twitter) ? string.Empty : s.Twitter, ImageUrl = s.ImageUrl, Image = s.Image }; foreach (var session in s.Sessions) { if (session.Event_ID == eventId) { var tSlot = (from timeslot in db.Timeslots where timeslot.ID == session.Timeslot_ID select timeslot); var tRack = (from track in db.Tracks where track.ID == session.Track_ID select track); if (tSlot != null) { session.Timeslot = tSlot.FirstOrDefault(); } if (tRack != null) { session.Track = tRack.FirstOrDefault(); } result.Sessions.Add(session.Map()); } } return(result); } }
public void DeleteSponsor(int id) { using (var db = new CC.Data.CCDB()) { var s = db.Sponsors.Find(id); db.Sponsors.Remove(s); db.SaveChanges(); } }
public int GetAttendeesCount(int eventId) { using (var db = new CC.Data.CCDB()) { var attendees = db.EventAttendees .Where(x => x.Event_ID == eventId && x.Rsvp == "Yes") .ToList(); return(attendees.Count()); } }
public void DeleteAnnouncement(int id) { using (var db = new CC.Data.CCDB()) { Data.Announcement announcement = (from a in db.Announcements where a.ID == id select a).FirstOrDefault(); db.Announcements.Remove(announcement); db.SaveChanges(); } }
public void UpdateTrack(Track track) { using (var db = new CC.Data.CCDB()) { var t = db.Tracks.Find(track.ID); t.Name = track.Name; t.Description = track.Description; db.SaveChanges(); } }
public void AddAdministrator(int personId) { using (var db = new CC.Data.CCDB()) { var p = db.People.Find(personId); if (p == null) throw new ArgumentException("Person not found"); p.IsAdmin = true; db.SaveChanges(); } }
public Sponsor GetSponsor(int id) { using (var db = new CC.Data.CCDB()) { var sponsor = db.Sponsors.Find(id); Sponsor result = new Sponsor(); Mapper.CopyProperties(sponsor, result); return(result); } }
public Timeslot GetTimeslot(int id) { using (var db = new CC.Data.CCDB()) { var t = db.Timeslots.Find(id); if (t == null) { throw new ArgumentException("Timeslot not found"); } return(t.Map()); } }
public void UpdateTimeslot(Timeslot timeslot) { //ToDo: Add error handling here. Brian Hall had an unhandled exception when he tried to submit a timeslot that was a past date-time. using (var db = new CC.Data.CCDB()) { var t = db.Timeslots.Find(timeslot.ID); t.Name = timeslot.Name; t.StartTime = timeslot.StartTime; t.EndTime = timeslot.EndTime; db.SaveChanges(); } }
public Track GetTrack(int id) { using (var db = new CC.Data.CCDB()) { var t = db.Tracks.Find(id); if (t == null) { throw new ArgumentException("Track not found"); } return(t.Map()); } }
public IList <Event> GetEvents() { using (var db = new CC.Data.CCDB()) { List <Event> result = new List <Event>(); foreach (var e in db.Events) { result.Add(e.Map()); } return(result); } }
public Event GetEvent(int eventId) { using (var db = new CC.Data.CCDB()) { var e = db.Events.Find(eventId); if (e == null) { throw new ArgumentException("Event not found"); } return(e.Map()); } }
public Event GetDefaultEvent() { using (var db = new CC.Data.CCDB()) { var e = db.Events.Where(x => x.IsDefault).FirstOrDefault(); if (e == null) { throw new ArgumentException("Event not found"); } return(e.Map()); } }
public bool HasSubmittedRating(int personid, int eventid) { bool flag = false; using (var db = new CC.Data.CCDB()) { CC.Data.EventAttendee et = db.EventAttendees.Where(e => e.Event_ID == eventid && e.Person_ID == personid).FirstOrDefault(); if (et == null) { return(false); } flag = db.EventAttendeeRatings.Where(e => e.EventAttendee_ID == et.ID).Any(); } return(flag); }
public IList <Person> GetAllAttendees(int eventId) { var eventInfo = GetEvent(eventId); List <Person> result = new List <Person>(); using (var db = new CC.Data.CCDB()) { var people = db.EventAttendees.Where(e => e.Event_ID == eventId && e.Rsvp == "YES").Select(e => e.Person).ToList(); foreach (var person in people) { result.Add(person.Map()); } } return(result); }
public void UpdateSponsor(Sponsor sponsor) { using (var db = new CC.Data.CCDB()) { var s = db.Sponsors.Find(sponsor.ID); s.Name = sponsor.Name; s.Description = sponsor.Description; s.WebsiteUrl = sponsor.WebsiteUrl; s.SponsorshipLevel = sponsor.SponsorshipLevel; //s.ImageUrl = sponsor.ImageUrl; s.Image = sponsor.Image; db.SaveChanges(); } }
public void RemoveAdministrator(int personId) { using (var db = new CC.Data.CCDB()) { var p = db.People.Find(personId); if (p == null) { throw new ArgumentException("Person not found"); } p.IsAdmin = false; db.SaveChanges(); } }
public IList <Event> GetEventsByDate(DateTime fromDate, DateTime toDate) { using (var db = new CC.Data.CCDB()) { List <Event> result = new List <Event>(); var events = (from e in db.Events where fromDate <= e.StartTime && e.StartTime <= toDate select e).ToList(); foreach (var e in events) { result.Add(e.Map()); } return(result); } }
public void DeleteTrack(int id) { using (var db = new CC.Data.CCDB()) { Data.Track track = (from t in db.Tracks.Include("Sessions") where t.ID == id select t).FirstOrDefault(); if (track.Sessions.Count > 0) { throw new Exception("Can't delete a track that contains sessions!"); } db.Tracks.Remove(track); db.SaveChanges(); } }
public void CreateTrack(Track track) { using (var db = new CC.Data.CCDB()) { Data.Track t = new Data.Track() { Event_ID = track.EventID, Name = track.Name, Description = track.Description }; db.Tracks.Add(t); db.SaveChanges(); } }
public void CreateTimeslot(Timeslot timeslot) { using (var db = new CC.Data.CCDB()) { Data.Timeslot t = new Data.Timeslot() { Event_ID = timeslot.EventID, Name = timeslot.Name, StartTime = timeslot.StartTime, EndTime = timeslot.EndTime }; db.Timeslots.Add(t); db.SaveChanges(); } }
public IList <SessionAttendee> GetAttendedSessions(int eventId, int personId) { using (var db = new CC.Data.CCDB()) { var q = (from sa in db.SessionAttendees.Include("Session.Event").Include("Session.Timeslot").Include("Session.Speaker") where sa.Person_ID == personId && sa.Session.Event_ID == eventId orderby sa.Session.Timeslot.StartTime select sa).ToList(); List <SessionAttendee> result = new List <SessionAttendee>(); foreach (var sa in q) { result.Add(sa.Map()); } return(result); } }
public void CreateAnnouncement(Announcement announcement) { using (var db = new CC.Data.CCDB()) { Data.Announcement a = new Data.Announcement() { Event_ID = announcement.EventID, Title = announcement.Title, Content = announcement.Content, PublishDate = announcement.PublishDate }; db.Announcements.Add(a); db.SaveChanges(); } }
public string GetEventAttendee(int eventId, int personId) { using (var db = new CC.Data.CCDB()) { var ea = db.EventAttendees .Where(x => x.Event_ID == eventId && x.Person_ID == personId) .FirstOrDefault(); if (ea == null) { return(""); } else { return(ea.Rsvp); } } }
public void UpdateAnnouncement(Announcement announcement) { using (var db = new CC.Data.CCDB()) { var a = db.Announcements.Find(announcement.ID); if (a == null) { throw new ArgumentException("Announcement not found"); } a.Title = announcement.Title; a.Content = announcement.Content; a.PublishDate = announcement.PublishDate; db.SaveChanges(); } }
public void Rsvp(int eventId, int personId, string rsvp) { using (var db = new CC.Data.CCDB()) { var ea = db.EventAttendees .Where(x => x.Event_ID == eventId && x.Person_ID == personId) .FirstOrDefault(); if (ea == null) { ea = new CC.Data.EventAttendee() { Event_ID = eventId, Person_ID = personId, Rsvp = rsvp }; db.EventAttendees.Add(ea); } else { ea.Rsvp = rsvp; } db.SaveChanges(); } }
public IList<Person> GetAllAttendees(int eventId) { var eventInfo = GetEvent(eventId); List<Person> result = new List<Person>(); using (var db = new CC.Data.CCDB()) { var people = db.EventAttendees.Where(e => e.Event_ID == eventId && e.Rsvp == "YES").Select(e => e.Person).ToList(); foreach (var person in people) { result.Add(person.Map()); } } return result; }
public IList<Announcement> GetAnnouncements(int eventId) { using (var db = new CC.Data.CCDB()) { var announcements = (from a in db.Announcements where a.Event_ID == eventId orderby a.PublishDate descending select a).ToList(); var result = new List<Announcement>(); foreach (var announcement in announcements) result.Add(announcement.Map()); //foreach (var announcement in db.Events.Find(eventId).Announcements) //{ // // var a = new Announcement(); // // Mapper.CopyProperties(announcement, a); // result.Add(announcement.Map()); //} return result; } }
public int GetAttendeesCount(int eventId) { using (var db = new CC.Data.CCDB()) { var attendees = db.EventAttendees .Where(x => x.Event_ID == eventId && x.Rsvp == "Yes") .ToList(); return attendees.Count(); } }
public Event GetDefaultEvent() { using (var db = new CC.Data.CCDB()) { var e = db.Events.Where(x => x.IsDefault).FirstOrDefault(); if (e == null) throw new ArgumentException("Event not found"); return e.Map(); } }
public IList<Event> GetEvents() { using (var db = new CC.Data.CCDB()) { List<Event> result = new List<Event>(); foreach (var e in db.Events) result.Add(e.Map()); return result; } }
public IList<Session> GetMyAgenda(int eventId, int personId) { using (var db = new CC.Data.CCDB()) { var q = (from sa in db.SessionAttendees.Include("Session.Event").Include("Session.Timeslot").Include("Session.Speaker") where sa.Person_ID == personId && sa.Session.Event_ID == eventId && sa.Session.Status == "APPROVED" orderby sa.Session.Timeslot.StartTime select sa).ToList(); List<Session> result = new List<Session>(); foreach (var sa in q) result.Add(sa.Session.Map()); return result; } }
public Timeslot GetTimeslot(int id) { using (var db = new CC.Data.CCDB()) { var t = db.Timeslots.Find(id); if (t == null) throw new ArgumentException("Timeslot not found"); return t.Map(); } }
public IList<Timeslot> GetTimeslots(int eventId) { using (var db = new CC.Data.CCDB()) { var e = db.Events.Find(eventId); if (e == null) throw new ArgumentException("Event not found"); List<Timeslot> result = new List<Timeslot>(); foreach (var Timeslot in e.Timeslots) result.Add(Timeslot.Map()); return result; } }
public Track GetTrack(int id) { using (var db = new CC.Data.CCDB()) { var t = db.Tracks.Find(id); if (t == null) throw new ArgumentException("Track not found"); return t.Map(); } }
public IList<Track> GetTracks(int eventId) { using (var db = new CC.Data.CCDB()) { var e = db.Events.Find(eventId); if (e == null) throw new ArgumentException("Event not found"); List<Track> result = new List<Track>(); foreach (var track in e.Tracks) result.Add(track.Map()); return result; } }
public int GetTracksCount(int eventId) { using (var db = new CC.Data.CCDB()) { var e = db.Events.Find(eventId); if (e == null) throw new ArgumentException("Event not found"); return e.Tracks.Count(); } }
public void AttendSession(int personId, int sessionId) { using (var db = new CC.Data.CCDB()) { // 1. delete old one Data.Session newSession = db.Sessions.Find(sessionId); if (newSession == null) throw new Exception("Session not found"); var oldSession = (from sa in db.SessionAttendees.Include("Session.Timeslot") where sa.Person_ID == personId && sa.Session.ID == sessionId select sa).SingleOrDefault(); //if (oldSession != null) // db.SessionAttendees.Remove(oldSession); if (oldSession == null) // 2. insert new one db.SessionAttendees.Add(new CC.Data.SessionAttendee() { Person_ID = personId, Session_ID = sessionId, Comment = string.Empty, SessionRating = 0, SpeakerRating = 0 }); db.SaveChanges(); } }
public bool HasSubmittedRating(int personid, int eventid) { bool flag = false; using (var db = new CC.Data.CCDB()) { CC.Data.EventAttendee et = db.EventAttendees.Where(e => e.Event_ID == eventid && e.Person_ID == personid).FirstOrDefault(); if (et == null) return false; flag = db.EventAttendeeRatings.Where(e => e.EventAttendee_ID == et.ID).Any(); } return flag; }
public int GetSessionsCount(int eventId) { var eventInfo = GetEvent(eventId); using (var db = new CC.Data.CCDB()) { var sessions = (from session in db.Sessions where session.Event_ID == eventId select session); if (!eventInfo.IsSpeakerRegistrationOpen) { sessions = sessions.Where(s => s.Status == ApprovedSession); } return sessions.Count(); } }
public IList<Session> GetSessions(int eventId) { var eventInfo = GetEvent(eventId); if (!eventInfo.IsSpeakerRegistrationOpen) { return GetApprovedSessions(eventId); } else { using (var db = new CC.Data.CCDB()) { var sessions = (from s in db.Sessions.Include("Speaker") where s.Event_ID == eventId orderby s.Name select s).ToList(); var result = new List<Session>(); foreach (var session in sessions) result.Add(session.Map()); return result; } } }
// Refactored into TagRepository //public IList<Tag> GetTags() //{ // using (var db = new CC.Data.OCCDB()) // { // List<Tag> result = new List<Tag>(); // //var sessions = db.Sessions; // //var tags = db.Tags.OrderBy(t => t.TagName); // var sessionsTags = from t in db.Tags // select new { t.ID, t.TagName, SessionsCount = db.Sessions.Where(s => s.Tag_ID == t.ID).Count() }; // foreach (var tag in sessionsTags) // { // Data.Tag tg = new Data.Tag() { ID = tag.ID, TagName = tag.TagName }; // int count = tag.SessionsCount; // result.Add(tg.Map(count)); // } // return result; // } //} public IList<Tag> GetTagsByEvent(int eventid) { using (var db = new CC.Data.CCDB()) { List<Tag> result = new List<Tag>(); //var sessions = db.Sessions; //var tags = db.Tags.OrderBy(t => t.TagName); var sessionsTags = from t in db.Tags select new { t.ID, t.TagName, SessionsCount = db.Sessions.Where(s => s.Tag_ID == t.ID && s.Event_ID == eventid).Count() }; foreach (var tag in sessionsTags) { Data.Tag tg = new Data.Tag() { ID = tag.ID, TagName = tag.TagName }; int count = tag.SessionsCount; result.Add(tg.Map(count)); } return result; } }
public IList<Event> GetEventsByDate(DateTime fromDate, DateTime toDate) { using (var db = new CC.Data.CCDB()) { List<Event> result = new List<Event>(); var events = (from e in db.Events where fromDate <= e.StartTime && e.StartTime <= toDate select e).ToList(); foreach (var e in events) result.Add(e.Map()); return result; } }
public IList<Sponsor> GetSponsors(int eventId) { using (var db = new CC.Data.CCDB()) { var e = db.Events.Find(eventId); if (e == null) throw new ArgumentException("Event not found"); var result = new List<Sponsor>(); // results.Add(new Sponsor { ID = 1, Name = "Microsoft" }); // results.Add(new Sponsor { ID = 2, Name = "DevExpress" }); foreach (var s in e.Sponsors.OrderBy(sp => Guid.NewGuid())) { Sponsor sponsor = new Sponsor(); Mapper.CopyProperties(s, sponsor); result.Add(sponsor); } return result; } }
public string GetEventAttendee(int eventId, int personId) { using (var db = new CC.Data.CCDB()) { var ea = db.EventAttendees .Where(x => x.Event_ID == eventId && x.Person_ID == personId) .FirstOrDefault(); if (ea == null) return ""; else return ea.Rsvp; } }
public Sponsor GetSponsor(int id) { using (var db = new CC.Data.CCDB()) { var sponsor = db.Sponsors.Find(id); Sponsor result = new Sponsor(); Mapper.CopyProperties(sponsor, result); return result; } }
public IList<Announcement> GetCurrentAnnouncements(int eventId) { using (var db = new CC.Data.CCDB()) { var announcements = (from a in db.Announcements where a.Event_ID == eventId && a.PublishDate <= DateTime.Today orderby a.PublishDate descending select a).ToList(); var result = new List<Announcement>(); foreach (var announcement in announcements) result.Add(announcement.Map()); return result; } }
public int GetSpeakersCount(int eventId) { var eventInfo = GetEvent(eventId); using (var db = new CC.Data.CCDB()) { var sessions = (from session in db.Sessions.Include("Speakers") where session.Event_ID == eventId && ((!eventInfo.IsSpeakerRegistrationOpen && session.Status == ApprovedSession) || (eventInfo.IsSpeakerRegistrationOpen)) select session); if (!eventInfo.IsSpeakerRegistrationOpen) { sessions = sessions.Where(s => s.Status == ApprovedSession); } return sessions.Select(s => s.Speaker).Distinct().Count(); } }
public IList<Session> GetApprovedSessions(int eventId) { using (var db = new CC.Data.CCDB()) { var sessions = (from s in db.Sessions.Include("Speaker") where s.Event_ID == eventId && s.Status == ApprovedSession orderby Guid.NewGuid() select s).ToList(); var result = new List<Session>(); foreach (var session in sessions) result.Add(session.Map()); return result; } }
public IList<Speaker> GetSpeakers(int eventId) { var eventInfo = GetEvent(eventId); List<Speaker> result = new List<Speaker>(); using (var db = new CC.Data.CCDB()) { var sessions = (from session in db.Sessions.Include("Speakers").Include("Sessions") where session.Event_ID == eventId select session); //if registrations are closed and there are approved sessions, filter this list if (!eventInfo.IsSpeakerRegistrationOpen && (sessions.Where(s => s.Status == ApprovedSession).Any())) { sessions = sessions.Where(s => s.Status == ApprovedSession); } var speakers = sessions.Select(s => s.Speaker) .Distinct() .OrderBy(s => s.LastName + " " + s.FirstName) .ToList(); foreach (var speaker in speakers) result.Add(speaker.AsSpeaker()); } return result; }
public Announcement GetAnnouncement(int id) { using (var db = new CC.Data.CCDB()) { var announcement = db.Announcements.Find(id); if (announcement == null) throw new ArgumentException("Announcement not found"); // Announcement result = new Announcement(); // Mapper.CopyProperties(announcement, result); return announcement.Map(); // result; } }
public Speaker GetSpeaker(int eventId, int speakerId) { using (var db = new CC.Data.CCDB()) { var s = (from speaker in db.People.Include("Sessions") where speaker.ID == speakerId select speaker).FirstOrDefault(); if (s == null) throw new ArgumentException("Speaker not found"); // OLD: return s.AsSpeaker(); // ?? how to filter sessions by event id ?? Speaker result = new Speaker() { ID = s.ID, Email = s.Email, FirstName = s.FirstName, LastName = s.LastName, Title = string.IsNullOrEmpty(s.Title) ? string.Empty : s.Title, Bio = string.IsNullOrEmpty(s.Bio) ? string.Empty : s.Bio, Website = string.IsNullOrEmpty(s.Website) ? string.Empty : s.Website, Blog = string.IsNullOrEmpty(s.Blog) ? string.Empty : s.Blog, Twitter = string.IsNullOrEmpty(s.Twitter) ? string.Empty : s.Twitter, ImageUrl = s.ImageUrl }; foreach (var session in s.Sessions) if (session.Event_ID == eventId) { var tSlot = (from timeslot in db.Timeslots where timeslot.ID == session.Timeslot_ID select timeslot); var tRack = (from track in db.Tracks where track.ID == session.Track_ID select track); if (tSlot != null) { session.Timeslot = tSlot.FirstOrDefault(); } if (tRack != null) { session.Track = tRack.FirstOrDefault(); } result.Sessions.Add(session.Map()); } return result; } }
public IList<Person> GetAdministrators() { List<Person> result = new List<Person>(); using (var db = new CC.Data.CCDB()) { var admins = (from p in db.People where p.IsAdmin select p) .OrderBy(s => s.FirstName + " " + s.LastName) .ToList(); foreach (var admin in admins) result.Add(admin.Map()); } return result; }
public IList<Track> GetAgenda(int eventId) { using (var db = new CC.Data.CCDB()) { var e = (from x in db.Events.Include("Tracks.Sessions.Speaker").Include("Tracks.Sessions.Timeslot") where x.ID == eventId select x).FirstOrDefault(); if (e == null) throw new ArgumentException("Event not found"); List<Track> result = new List<Track>(); foreach (var track in e.Tracks) result.Add(track.AsTrackWithSessions()); return result; } }