コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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));
            }
        }
コード例 #7
0
        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));
            }
        }
コード例 #8
0
        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));
            }
        }