public HttpResponseMessage UpdateEvent(CodeCampInfo codeCamp)
        {
            try
            {
                var originalEvent    = CodeCampDataAccess.GetItem(codeCamp.CodeCampId, codeCamp.ModuleId);
                var updatesToProcess = EventHasUpdates(ref originalEvent, ref codeCamp);

                if (updatesToProcess)
                {
                    originalEvent.LastUpdatedByDate   = DateTime.Now;
                    originalEvent.LastUpdatedByUserId = UserInfo.UserID;

                    CodeCampDataAccess.UpdateItem(originalEvent);
                }

                var savedEvent = CodeCampDataAccess.GetItem(originalEvent.CodeCampId, originalEvent.ModuleId);

                var response = new ServiceResponse <CodeCampInfo> {
                    Content = savedEvent
                };

                return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson()));
            }
            catch (Exception ex)
            {
                Exceptions.LogException(ex);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ERROR_MESSAGE));
            }
        }
Ejemplo n.º 2
0
        public void CodeCamp_CreateFindDeleteEvent_Test()
        {
            var service = new ServiceProxy(ApiBaseUrl);

            var newEvent = new CodeCampInfo()
            {
                Title               = "New Test Code Camp",
                Description         = "Test code camp description.",
                CreatedByDate       = DateTime.Now,
                CreatedByUserId     = 1,
                LastUpdatedByDate   = DateTime.Now,
                LastUpdatedByUserId = 1,
                BeginDate           = DateTime.Now.AddDays(30),
                EndDate             = DateTime.Now.AddDays(32),
                ModuleId            = ModuleId
            };

            var createResponse = service.CreateEvent(newEvent);

            CheckErrors(createResponse);

            var findResponse = service.GetEvents(ModuleId);

            CheckErrors(findResponse);

            var actualEvent = findResponse.Content.FirstOrDefault(e => e.Title == "New Test Code Camp");

            Assert.AreEqual(newEvent.BeginDate, actualEvent.BeginDate);
            Assert.AreEqual(newEvent.EndDate, actualEvent.EndDate);
            Assert.AreEqual(newEvent.ModuleId, actualEvent.ModuleId);

            var deleteResponse = service.DeleteEvent(newEvent.CodeCampId);

            CheckErrors(deleteResponse);
        }
Ejemplo n.º 3
0
        public ServiceResponse <string> UpdateEvent(CodeCampInfo codeCamp)
        {
            var result = new ServiceResponse <string>();

            result = ServiceHelper.PostRequest <ServiceResponse <string> >(fullApiUri + "UpdateEvent", codeCamp.ObjectToJson());

            return(result);
        }
        public HttpResponseMessage CreateEvent(CodeCampInfo newEvent)
        {
            try
            {
                newEvent.CreatedByDate       = DateTime.Now;
                newEvent.CreatedByUserId     = UserInfo.UserID;
                newEvent.LastUpdatedByDate   = DateTime.Now;
                newEvent.LastUpdatedByUserId = UserInfo.UserID;
                newEvent.ModuleId            = ActiveModule.ModuleID;

                CodeCampDataAccess.CreateItem(newEvent);

                var response = new ServiceResponse <string> {
                    Content = Globals.RESPONSE_SUCCESS
                };

                return(Request.CreateResponse(HttpStatusCode.OK, response.ObjectToJson()));
            }
            catch (Exception ex)
            {
                Exceptions.LogException(ex);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ERROR_MESSAGE));
            }
        }
        private bool EventHasUpdates(ref CodeCampInfo originalCodeCamp, ref CodeCampInfo newCodeCamp)
        {
            var updatesToProcess = false;

            if (!string.Equals(newCodeCamp.Title, originalCodeCamp.Title))
            {
                originalCodeCamp.Title = newCodeCamp.Title;
                updatesToProcess       = true;
            }

            if (!string.Equals(newCodeCamp.Description, originalCodeCamp.Description))
            {
                originalCodeCamp.Description = newCodeCamp.Description;
                updatesToProcess             = true;
            }

            if (newCodeCamp.MaximumCapacity != originalCodeCamp.MaximumCapacity)
            {
                originalCodeCamp.MaximumCapacity = newCodeCamp.MaximumCapacity;
                updatesToProcess = true;
            }

            if (newCodeCamp.BeginDate != originalCodeCamp.BeginDate)
            {
                originalCodeCamp.BeginDate = newCodeCamp.BeginDate;
                updatesToProcess           = true;
            }

            if (newCodeCamp.EndDate != originalCodeCamp.EndDate)
            {
                originalCodeCamp.EndDate = newCodeCamp.EndDate;
                updatesToProcess         = true;
            }

            if (newCodeCamp.EndDate != originalCodeCamp.EndDate)
            {
                originalCodeCamp.EndDate = newCodeCamp.EndDate;
                updatesToProcess         = true;
            }

            if (newCodeCamp.ShowShirtSize != originalCodeCamp.ShowShirtSize)
            {
                originalCodeCamp.ShowShirtSize = newCodeCamp.ShowShirtSize;
                updatesToProcess = true;
            }

            if (newCodeCamp.ShowAuthor != originalCodeCamp.ShowAuthor)
            {
                originalCodeCamp.ShowAuthor = newCodeCamp.ShowAuthor;
                updatesToProcess            = true;
            }

            if (newCodeCamp.RegistrationActive != originalCodeCamp.RegistrationActive)
            {
                originalCodeCamp.RegistrationActive = newCodeCamp.RegistrationActive;
                updatesToProcess = true;
            }

            if (originalCodeCamp.CustomProperties != null)
            {
                // parse custom properties for updates
                foreach (var property in originalCodeCamp.CustomPropertiesObj)
                {
                    if (newCodeCamp.CustomPropertiesObj.Any(p => p.Name == property.Name))
                    {
                        // see if the existing property needs to be updated
                        var prop = newCodeCamp.CustomPropertiesObj.FirstOrDefault(p => p.Name == property.Name);
                        if (!string.Equals(prop.Value, property.Value))
                        {
                            property.Value   = prop.Value;
                            updatesToProcess = true;
                        }
                    }
                    else
                    {
                        // delete the property
                        originalCodeCamp.CustomPropertiesObj.Remove(property);
                        updatesToProcess = true;
                    }
                }
            }

            if (newCodeCamp.CustomPropertiesObj != null)
            {
                // add any new properties
                if (originalCodeCamp.CustomProperties == null)
                {
                    foreach (var property in newCodeCamp.CustomPropertiesObj)
                    {
                        originalCodeCamp.CustomPropertiesObj.Add(property);
                        updatesToProcess = true;
                    }
                }
                else
                {
                    var camp = originalCodeCamp;
                    foreach (var property in newCodeCamp.CustomPropertiesObj.Where(property => !camp.CustomPropertiesObj.Contains(property)))
                    {
                        camp.CustomPropertiesObj.Add(property);
                        updatesToProcess = true;
                    }
                }
            }

            return(updatesToProcess);
        }