public HttpResponseMessage UpdateSpeaker(SpeakerInfo speaker) { try { var updatesToProcess = false; var originalSpeaker = SpeakerDataAccess.GetItem(speaker.SpeakerId, speaker.CodeCampId); if (!string.Equals(speaker.SpeakerName, originalSpeaker.SpeakerName)) { originalSpeaker.SpeakerName = speaker.SpeakerName; updatesToProcess = true; } if (!string.Equals(speaker.URL, originalSpeaker.URL)) { originalSpeaker.URL = speaker.URL; updatesToProcess = true; } if (!string.Equals(speaker.Email, originalSpeaker.Email)) { originalSpeaker.Email = speaker.Email; updatesToProcess = true; } if (!string.Equals(speaker.CompanyName, originalSpeaker.CompanyName)) { originalSpeaker.CompanyName = speaker.CompanyName; updatesToProcess = true; } if (!string.Equals(speaker.CompanyTitle, originalSpeaker.CompanyTitle)) { originalSpeaker.CompanyTitle = speaker.CompanyTitle; updatesToProcess = true; } if (!string.Equals(speaker.Bio, originalSpeaker.Bio)) { originalSpeaker.Bio = speaker.Bio; updatesToProcess = true; } if (speaker.IsAuthor != originalSpeaker.IsAuthor) { originalSpeaker.IsAuthor = speaker.IsAuthor; updatesToProcess = true; } if (originalSpeaker.CustomProperties != null) { // parse custom properties for updates foreach (var property in originalSpeaker.CustomPropertiesObj) { if (speaker.CustomPropertiesObj.Any(p => p.Name == property.Name)) { // see if the existing property needs to be updated var prop = speaker.CustomPropertiesObj.FirstOrDefault(p => p.Name == property.Name); if (!string.Equals(prop.Value, property.Value)) { property.Value = prop.Value; updatesToProcess = true; } } else { // delete the property originalSpeaker.CustomPropertiesObj.Remove(property); updatesToProcess = true; } } } if (speaker.CustomPropertiesObj != null) { // add any new properties if (originalSpeaker.CustomProperties == null) { foreach (var property in speaker.CustomPropertiesObj) { originalSpeaker.CustomPropertiesObj.Add(property); updatesToProcess = true; } } else { foreach (var property in speaker.CustomPropertiesObj.Where(property => !originalSpeaker.CustomPropertiesObj.Contains(property))) { originalSpeaker.CustomPropertiesObj.Add(property); updatesToProcess = true; } } } if (updatesToProcess) { SpeakerDataAccess.UpdateItem(originalSpeaker); } var savedSpeaker = SpeakerDataAccess.GetItem(speaker.SpeakerId, speaker.CodeCampId); var response = new ServiceResponse <SpeakerInfo> { Content = savedSpeaker }; return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson())); } catch (Exception ex) { Exceptions.LogException(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ERROR_MESSAGE)); } }
public HttpResponseMessage UpdateSession(SessionInfo session) { try { var updatesToProcess = false; var originalSession = SessionDataAccess.GetItem(session.SessionId, session.CodeCampId); if (!string.Equals(session.Title, originalSession.Title)) { originalSession.Title = session.Title; updatesToProcess = true; } if (!string.Equals(session.Description, originalSession.Description)) { originalSession.Description = session.Description; updatesToProcess = true; } if (session.AudienceLevel != originalSession.AudienceLevel) { originalSession.AudienceLevel = session.AudienceLevel; updatesToProcess = true; } if (session.TrackId != originalSession.TrackId) { originalSession.TrackId = session.TrackId; updatesToProcess = true; } if (originalSession.CustomProperties != null) { // parse custom properties for updates foreach (var property in originalSession.CustomPropertiesObj) { if (session.CustomPropertiesObj.Any(p => p.Name == property.Name)) { // see if the existing property needs to be updated var prop = session.CustomPropertiesObj.FirstOrDefault(p => p.Name == property.Name); if (!string.Equals(prop.Value, property.Value)) { property.Value = prop.Value; updatesToProcess = true; } } else { // delete the property originalSession.CustomPropertiesObj.Remove(property); updatesToProcess = true; } } } if (session.CustomPropertiesObj != null) { // add any new properties if (originalSession.CustomProperties == null) { foreach (var property in session.CustomPropertiesObj) { originalSession.CustomPropertiesObj.Add(property); updatesToProcess = true; } } else { foreach (var property in session.CustomPropertiesObj.Where(property => !originalSession.CustomPropertiesObj.Contains(property))) { originalSession.CustomPropertiesObj.Add(property); updatesToProcess = true; } } } if (updatesToProcess) { originalSession.LastUpdatedByDate = DateTime.Now; originalSession.LastUpdatedByUserId = UserInfo.UserID; SessionDataAccess.UpdateItem(session); } var savedSession = SessionDataAccess.GetItem(session.SessionId, session.CodeCampId); var response = new ServiceResponse <SessionInfo> { Content = savedSession }; return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson())); } catch (Exception ex) { Exceptions.LogException(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ERROR_MESSAGE)); } }