public int AddUpdateSession(SessionImport session) { var newSession = new Session(); var sn = _context.Sessions .Include("Speakers") .Include("Rooms") .Include("Tags") .FirstOrDefault(s => s.FeedSessionId == session.Id); if (sn == null) { newSession.FeedSessionId = session.Id; newSession.SessionTime = null; newSession.SessionStartTime = session.SessionStartTime; newSession.SessionEndTime = session.SessionEndTime; newSession.Rooms = AddRooms(session.Rooms, session.Id); newSession.Title = session.Title; newSession.Abstract = session.Abstract; newSession.Tags = AddTags(session.Tags, session.Id); newSession.Category = session.Category; newSession.SessionType = session.SessionType; newSession.Speakers = AddSpeakers(session.Speakers); newSession.VolunteersRequired = 1; _context.Sessions.Add(newSession); } else { sn.SessionStartTime = session.SessionStartTime; sn.SessionEndTime = session.SessionEndTime; //sn.Rooms = AddRooms(session.Rooms, sn.Id); sn.Title = session.Title; sn.Abstract = session.Abstract; //sn.Tags = AddTags(session.Tags, sn.Id); sn.Category = session.Category; sn.SessionType = session.SessionType; UpdateSpeakers(session, sn); UpdateRooms(session, sn); UpdateTags(session, sn); } _context.SaveChanges(); if (sn == null) { return(newSession.Id); } else { return(sn.Id); } }
public void UpsertSession(SessionImport session) { var spName = "SessionUpsert"; string speakersStr = ""; string tagsStr = ""; session.Speakers.ForEach(s => speakersStr += ',' + s.Id); session.Tags.ForEach(t => tagsStr += ',' + t); if (string.IsNullOrEmpty(speakersStr)) { speakersStr = ","; } if (string.IsNullOrEmpty(tagsStr)) { tagsStr = ","; } ExecuteStatement(_connStr, (conn, cmd) => { cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = spName; cmd.Parameters.AddWithValue("@Abstract", session.Abstract); cmd.Parameters.AddWithValue("@Category", session.Category); cmd.Parameters.AddWithValue("@Id", session.Id); cmd.Parameters.AddWithValue("@FeedSessionId", session.FeedSessionId); cmd.Parameters.AddWithValue("@SessionEndTime", session.SessionEndTime); cmd.Parameters.AddWithValue("@SessionStartTime", session.SessionStartTime); cmd.Parameters.AddWithValue("@SessionTime", session.SessionTime); cmd.Parameters.AddWithValue("@SessionType", session.SessionType); cmd.Parameters.AddWithValue("@Title", session.Title); cmd.Parameters.AddWithValue("@Rooms", session.Room); cmd.Parameters.AddWithValue("@Tags", tagsStr.Substring(1)); cmd.Parameters.AddWithValue("@Speakers", speakersStr.Substring(1)); }); }
private SessionImport MapSession(ViewModels.SessionizeSession.Session session) { var mappedSession = new SessionImport(); mappedSession.Speakers = new List <ViewModels.Speaker>(); mappedSession.Tags = new List <string>(); var sessionFormat = session.categories.FirstOrDefault(x => x.name == "Session format"); var sessionTrack = session.categories.FirstOrDefault(x => x.name == "Track"); var sessionTags = session.categories.FirstOrDefault(x => x.name == "Tags"); mappedSession.Abstract = session.description; mappedSession.Category = sessionTrack == null ? "" : sessionTrack.categoryItems[0].Name; mappedSession.FeedSessionId = session.id; mappedSession.Room = session.room; mappedSession.SessionEndTime = session.endsAt; mappedSession.SessionStartTime = session.startsAt; mappedSession.SessionTime = session.startsAt; mappedSession.SessionType = sessionFormat == null ? "" : sessionFormat.categoryItems[0].Name; foreach (var speaker in session.speakers) { mappedSession.Speakers.Add(new ViewModels.Speaker() { Id = speaker.id }); } if (sessionTags != null && sessionTags.categoryItems.Count > 0) { foreach (var tag in sessionTags.categoryItems) { mappedSession.Tags.Add(tag.Name); } } mappedSession.Title = session.title; return(mappedSession); }
private static void UpdateTags(SessionImport session, Session sn) { foreach (var tag in session.Tags) { if (sn.Tags.FirstOrDefault(t => t.Name == tag) == null) { sn.Tags.Add(new Models.Tag() { Name = tag, SessionId = sn.Id }); } } foreach (var tag in sn.Tags) { if (session.Tags.FirstOrDefault(r => r == tag.Name) == null) { sn.Tags.Remove(tag); } } }
private static void UpdateRooms(SessionImport session, Session sn) { foreach (var room in session.Rooms) { if (sn.Rooms.FirstOrDefault(r => r.Name == room) == null) { sn.Rooms.Add(new Models.Room() { Name = room, SessionId = sn.Id }); } } foreach (var room in sn.Rooms) { if (session.Rooms.FirstOrDefault(r => r == room.Name) == null) { sn.Rooms.Remove(room); } } }
private static void UpdateSpeakers(SessionImport session, Session sn) { foreach (var speaker in session.Speakers) { if (sn.Speakers.FirstOrDefault(s => s.Id == speaker.Id) == null) { sn.Speakers.Add(new Models.Speaker() { Id = speaker.Id, FirstName = speaker.FirstName, LastName = speaker.LastName, GravatarUrl = speaker.GravatarUrl }); } } foreach (var speaker in sn.Speakers) { if (session.Speakers.FirstOrDefault(s => s.Id == speaker.Id) == null) { sn.Speakers.Remove(speaker); } } }