Ejemplo n.º 1
0
        public void CreateCampaignProperty()
        {
            var campaignPropCommand = new CampaignPropertyCreated()
            {
                Key           = "testKey",
                Value         = "testValue",
                CampaignID    = 14,
                Environment   = "testEnvironment",
                ApplicationIP = "testAppId",
                UserToken     = "testUserToken",
                SessionId     = "testSessionId"
            };

            var response = campaingService.CreateCampaignProperty(campaignPropCommand);

            Assert.AreEqual(response.Type, Common.ServiceResponseTypes.Success);
        }
Ejemplo n.º 2
0
        public CampaignServiceResponse <CampaignProperty> CreateCampaignProperty(CampaignPropertyCreated ev, List <ServiceLogRecord> logRecords = null)
        {
            // Create the watch
            var sw = new Stopwatch();

            sw.Start();

            // Create a log record collection if necessary
            if (logRecords == null)
            {
                logRecords = new List <ServiceLogRecord>();
            }

            // Add log
            logRecords.Add(new ServiceLogRecord()
            {
                Type      = "DEBUG",
                TimeStamp = DateTime.Now,
                Body      = "Campaign property creation request received."
            });

            // Create a response object
            var response = new CampaignServiceResponse <CampaignProperty>();

            #region [ Validate request ]

            // Add log
            logRecords.Add(new ServiceLogRecord()
            {
                Type      = "DEBUG",
                TimeStamp = DateTime.Now,
                Body      = "User has the required permissions. Now validating the incoming data."
            });

            // Check required data

            CampaignPropertyCreatedValidator validator = new CampaignPropertyCreatedValidator();
            ValidationResult validationResult          = validator.Validate(ev);
            if (!validationResult.IsValid)
            {
                List <string> dataErrors = validationResult.Errors.Select(er => er.ErrorMessage).ToList();
                // Add log
                logRecords.Add(new ServiceLogRecord()
                {
                    Type      = "DEBUG",
                    TimeStamp = DateTime.Now,
                    Body      = dataErrors.Count + " error(s) found within the posted data! Terminating the process. Errors:" + String.Join(";", dataErrors)
                });

                // Stop the sw
                sw.Stop();

                response.Type = ServiceResponseTypes.Error;
                response.Code = HeadstoneServiceResponseCodes.Invalid_Request.ToString();
                response.PreProcessingTook = sw.ElapsedMilliseconds;
                response.Message           = "There are some errors with the incoming request data!";
                response.Errors.AddRange(dataErrors);
                response.LogRecords = logRecords;

                return(response);
            }

            #endregion

            #region [ Data manuplation ]

            #endregion

            // Stop the timer
            sw.Stop();

            // Set the pre-processing time and start the time
            response.PreProcessingTook = sw.ElapsedMilliseconds;
            sw.Start();

            #region [ Create Campaign product ]

            // Add log
            logRecords.Add(new ServiceLogRecord()
            {
                Type      = "DEBUG",
                TimeStamp = DateTime.Now,
                Body      = "Creating Campaign property."
            });

            //CampaignProperty CampaignProperty = ev.ToEntity<CampaignProperty>();

            CampaignProperty CampaignProperty = new CampaignProperty()
            {
                Key        = ev.Key,
                Value      = ev.Value,
                Created    = DateTime.Now,
                Extra      = ev.Extra,
                CampaignID = ev.CampaignID,
                Status     = ev.Status
            };

            // Add log
            logRecords.Add(new ServiceLogRecord()
            {
                Type      = "DEBUG",
                TimeStamp = DateTime.Now,
                Body      = string.Format("Campaign property created. UserToken:{0}; SessionId:{1}; ", ev.UserToken, ev.SessionId)
            });

            #endregion

            #region [ Find related Campaign ]

            Campaign Campaign = _CampaignServiceBase.Get(c => c.CampaignID == ev.CampaignID).Result.FirstOrDefault();

            if (Campaign == null)
            {
                // Add log
                logRecords.Add(new ServiceLogRecord()
                {
                    Type      = "DEBUG",
                    TimeStamp = DateTime.Now,
                    Body      = "Could not find the related Campaign to create the property from! Please use a valid Campaign reference number."
                });

                // Stop the sw
                sw.Stop();

                response.Type = ServiceResponseTypes.Error;
                response.Code = HeadstoneServiceResponseCodes.Invalid_Request.ToString();
                response.PreProcessingTook = sw.ElapsedMilliseconds;
                response.Message           = "Could not find the related Campaign to create the property from! Please use a valid Campaign reference number.";
                response.LogRecords        = logRecords;

                return(response);
            }

            // Add log
            logRecords.Add(new ServiceLogRecord()
            {
                Type      = "DEBUG",
                TimeStamp = DateTime.Now,
                Body      = "Related Campaign loaded."
            });

            #endregion

            #region [ Save Campaign property ]

            // Save the Campaign
            var baseServiceResponse = _propertyServiceBase.Create(CampaignProperty);

            if (baseServiceResponse.Type != Headstone.Framework.Models.ServiceResponseTypes.Success)
            {
                // Add log
                logRecords.Add(new ServiceLogRecord()
                {
                    Type      = "ERROR",
                    TimeStamp = DateTime.Now,
                    Body      = "There was an error while creting the Campaign property!"
                });

                // Stop the sw
                sw.Stop();

                response.Type        = ServiceResponseTypes.Error;
                response.Code        = HeadstoneServiceResponseCodes.General_Exception.ToString();
                response.ServiceTook = sw.ElapsedMilliseconds;
                response.Message     = "There was an error while creting the Campaign property!";
                response.Errors.Add("There was an error while creting the Campaign property!");
                response.Errors.AddRange(baseServiceResponse.Errors);
                response.LogRecords = logRecords;

                return(response);
            }
            else
            {
                // Add log
                logRecords.Add(new ServiceLogRecord()
                {
                    Type      = "DEBUG",
                    TimeStamp = DateTime.Now,
                    Body      = string.Format("Campaign property successfuly created. CampaignPropertyId:{0}; UserToken:{1}; SessionId:{2}",
                                              CampaignProperty.PropertyId, ev.UserToken, ev.SessionId)
                });

                // Add the new Campaign object to the result
                response.Result.Add(CampaignProperty);

                // Set the Campaign property id
                response.CampaignID = CampaignProperty.CampaignID;
                response.PropertyId = CampaignProperty.PropertyId;
            }


            #endregion

            // Stop the sw
            sw.Stop();

            response.Type        = ServiceResponseTypes.Success;
            response.Code        = HeadstoneServiceResponseCodes.Request_Successfuly_Completed.ToString();
            response.ServiceTook = sw.ElapsedMilliseconds;
            response.Message     = string.Format("Campaign property successfuly created. CampaignPropertyId:{0}; UserToken:{1}; SessionId:{2}",
                                                 CampaignProperty.PropertyId, ev.UserToken, ev.SessionId);
            response.LogRecords = logRecords;

            return(response);
        }