예제 #1
0
        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);
        }
예제 #4
0
        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);
                }
            }
        }
예제 #5
0
        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);
                }
            }
        }
예제 #6
0
        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);
                }
            }
        }