public HttpResponseMessage CreateSpeaker(SpeakerInfo speaker) { try { var timeStamp = DateTime.Now; speaker.CreatedByDate = timeStamp; speaker.CreatedByUserId = UserInfo.UserID; speaker.LastUpdatedByDate = timeStamp; speaker.LastUpdatedByUserId = UserInfo.UserID; if (speaker.RegistrationId == 0) { speaker.RegistrationId = null; } SpeakerDataAccess.CreateItem(speaker); var speakers = SpeakerDataAccess.GetItems(speaker.CodeCampId); var savedSpeaker = speakers.OrderByDescending(s => s.CreatedByDate).FirstOrDefault(s => s.Email == speaker.Email); 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 UpdateSpeakerAvatar(int codeCampId, int speakerId) { try { var result = NO_FILES; var httpRequest = HttpContext.Current.Request; if (httpRequest.Files.Count > 0) { var folderPath = string.Format("~/Portals/{0}/CodeCamps/{1}/SpeakerAvatars/", PortalSettings.PortalId, codeCampId); foreach (string file in httpRequest.Files) { var postedFile = httpRequest.Files[file]; var filePath = HttpContext.Current.Server.MapPath(string.Concat(folderPath, postedFile.FileName)); // TODO: append "-ORIGINAL" to the file name // TODO: parse the image and resize as required // TODO: allow avatars to be cropepd and saved // TODO: update speaker profile with file id postedFile.SaveAs(filePath); // NOTE: To store in memory use postedFile.InputStream var folderInfo = DotNetNuke.Services.FileSystem.FolderManager.Instance.GetFolder(PortalSettings.PortalId, folderPath); var fileExists = DotNetNuke.Services.FileSystem.FileManager.Instance.FileExists(folderInfo, postedFile.FileName); if (fileExists) { result = DotNetNuke.Services.FileSystem.FileManager.Instance.GetFile(folderInfo, postedFile.FileName).FileId.ToString(); if (!string.IsNullOrEmpty(result)) { var speaker = SpeakerDataAccess.GetItem(speakerId, codeCampId); if (speaker != null) { speaker.IconFile = result; SpeakerDataAccess.UpdateItem(speaker); } } } } } var response = new ServiceResponse <string> { Content = result }; return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson())); } catch (Exception ex) { Exceptions.LogException(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.GetBaseException().Message)); } }
public HttpResponseMessage DeleteSpeaker(int itemId, int codeCampId) { try { SpeakerDataAccess.DeleteItem(itemId, codeCampId); var response = new ServiceResponse <string> { Content = SUCCESS_MESSAGE }; return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson())); } catch (Exception ex) { Exceptions.LogException(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ERROR_MESSAGE)); } }
public HttpResponseMessage GetSpeaker(int itemId, int codeCampId) { try { var speaker = SpeakerDataAccess.GetItem(itemId, codeCampId); var response = new ServiceResponse <SpeakerInfo> { Content = speaker }; if (speaker == null) { ServiceResponseHelper <SpeakerInfo> .AddNoneFoundError("speaker", ref response); } return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson())); } catch (Exception ex) { Exceptions.LogException(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ERROR_MESSAGE)); } }
public HttpResponseMessage GetAgenda(int codeCampId) { try { var agenda = new AgendaInfo(); agenda.CodeCamp = CodeCampDataAccess.GetItem(codeCampId, ActiveModule.ModuleID); if (agenda.CodeCamp != null) { var slotsToOrder = TimeSlotDataAccess.GetItems(codeCampId); var timeSlots = TimeSlotInfoController.SortTimeSlots(slotsToOrder); var timeSlotCount = timeSlots.Count(); // determine how many days the event lasts for agenda.NumberOfDays = (int)(agenda.CodeCamp.EndDate - agenda.CodeCamp.BeginDate).TotalDays + 1; // iterate through each day agenda.EventDays = new List <EventDayInfo>(); var dayCount = 0; while (dayCount <= agenda.NumberOfDays - 1) { var eventDate = agenda.CodeCamp.BeginDate.AddDays(dayCount); var eventDay = new EventDayInfo() { Index = dayCount, Day = eventDate.Day, Month = eventDate.Month, Year = eventDate.Year, TimeStamp = eventDate }; eventDay.TimeSlots = new List <AgendaTimeSlotInfo>(); // iterate through each timeslot foreach (var timeSlot in timeSlots) { var slot = new AgendaTimeSlotInfo(timeSlot); if (!timeSlot.SpanAllTracks) { // iterate through each session slot.Sessions = SessionDataAccess.GetItemsByTimeSlotIdByPage(slot.TimeSlotId, codeCampId, dayCount + 1, timeSlotCount).ToList(); // iterate through each speaker foreach (var session in slot.Sessions) { session.Speakers = SpeakerDataAccess.GetSpeakersForCollection(session.SessionId, codeCampId); } } else { // add the full span session item // TODO: allow for items to be added to full span timeslots } eventDay.TimeSlots.Add(slot); } agenda.EventDays.Add(eventDay); dayCount++; } } var response = new ServiceResponse <AgendaInfo> { Content = agenda }; if (agenda.CodeCamp == null) { ServiceResponseHelper <AgendaInfo> .AddNoneFoundError("AgendaInfo", ref response); } return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson())); } catch (Exception ex) { Exceptions.LogException(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ERROR_MESSAGE)); } }
public HttpResponseMessage UpdateSpeaker(SpeakerInfo speaker) { try { var portalId = PortalSettings.PortalId; 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 (!string.IsNullOrEmpty(speaker.AvatarDataURIData)) { var fileData = Convert.FromBase64String(speaker.AvatarDataURIData); // get the folder from the API var folderInfo = FolderManager.Instance.GetFolder( portalId: portalId, folderPath: string.Format(Globals.SPEAKER_AVATAR_FOLDER_PATH_FORMAT, speaker.CodeCampId)); if (folderInfo == null) { // add the folder since it doesn't yet exist folderInfo = FolderManager.Instance.AddFolder( portalId: portalId, folderPath: string.Format(Globals.SPEAKER_AVATAR_FOLDER_PATH_FORMAT, speaker.CodeCampId)); } IFileInfo fileInfo = null; using (var reader = new MemoryStream(fileData)) { var filename = string.Format(Globals.SPEAKER_AVATAR_FILENAME_FORMAT, speaker.SpeakerId, DateTime.Now.ToString(Globals.SPEAKER_AVATAR_FILENAME_STAMP_FORMAT), Globals.SPEAKER_AVATAR_FILEEXTENSION); fileInfo = FileManager.Instance.AddFile(folderInfo, filename, reader, true); speaker.IconFile = string.Format(Globals.SPEAKER_ICON_FILE_PATH, portalId, fileInfo.RelativePath); originalSpeaker.IconFile = speaker.IconFile; } updatesToProcess = true; } if (speaker.RemoveAvatar) { speaker.IconFile = string.Empty; originalSpeaker.IconFile = speaker.IconFile; 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 CreateSpeaker(SpeakerInfo speaker) { try { var portalId = PortalSettings.PortalId; var timeStamp = DateTime.Now; speaker.CreatedByDate = timeStamp; speaker.CreatedByUserId = UserInfo.UserID; speaker.LastUpdatedByDate = timeStamp; speaker.LastUpdatedByUserId = UserInfo.UserID; if (speaker.RegistrationId == 0) { speaker.RegistrationId = null; } SpeakerDataAccess.CreateItem(speaker); if (!string.IsNullOrEmpty(speaker.AvatarDataURIData)) { // NOTE: This is super slow for some reason? // var decodedAvatar = B64Decode(speaker.AvatarDataURIData); var fileData = Convert.FromBase64String(speaker.AvatarDataURIData); // get the folder from the API var folderInfo = FolderManager.Instance.GetFolder( portalId: portalId, folderPath: string.Format(Globals.SPEAKER_AVATAR_FOLDER_PATH_FORMAT, speaker.CodeCampId)); if (folderInfo == null) { // add the folder since it doesn't yet exist folderInfo = FolderManager.Instance.AddFolder( portalId: portalId, folderPath: string.Format(Globals.SPEAKER_AVATAR_FOLDER_PATH_FORMAT, speaker.CodeCampId)); } IFileInfo fileInfo = null; using (var reader = new MemoryStream(fileData)) { var filename = string.Format(Globals.SPEAKER_AVATAR_FILENAME_FORMAT, speaker.SpeakerId, DateTime.Now.ToString(Globals.SPEAKER_AVATAR_FILENAME_STAMP_FORMAT), Globals.SPEAKER_AVATAR_FILEEXTENSION); fileInfo = FileManager.Instance.AddFile(folderInfo, filename, reader, true); speaker.IconFile = string.Format(Globals.SPEAKER_ICON_FILE_PATH, portalId, fileInfo.RelativePath); } SpeakerDataAccess.UpdateItem(speaker); } var speakers = SpeakerDataAccess.GetItems(speaker.CodeCampId); var savedSpeaker = speakers.OrderByDescending(s => s.CreatedByDate).FirstOrDefault(s => s.Email == speaker.Email); 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 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)); } }