Ejemplo n.º 1
0
        public void CreateCoupon()
        {
            var couponCommand = new CouponCreated()
            {
                CouponCode = "TESTCOUPON",
                OwnerID    = 1010,
                CampaignID = 8,
                FromDate   = DateTime.Now
            };
            var response = couponService.CreateCoupon(couponCommand);

            Assert.AreEqual(response.Type, Common.ServiceResponseTypes.Success);
        }
Ejemplo n.º 2
0
        public CouponServiceResponse <Coupon> CreateCoupon(CouponCreated 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      = "Create Coupon request received."
            });

            var response = new CouponServiceResponse <Coupon>();

            #region [ Validate Request ]

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

            // Check required data
            List <string> dataErrors = new List <string>();

            //if (ev.ResellerId == default(int) || String.IsNullOrEmpty(ev.ResellerName))
            //{
            //    dataErrors.Add("No reseller!");
            //}

            //if (ev.Items == null || ev.Items.Count == 0)
            //{
            //    dataErrors.Add("No Coupon item(s)!");
            //}

            //if (String.IsNullOrEmpty(ev.Name))
            //{
            //    dataErrors.Add("No product name!");
            //}
            //if (ev.Items.Count == 0)
            //{
            //    dataErrors.Add("No Coupon item");
            //}

            if (dataErrors.Count > 0)
            {
                // Add log
                logRecords.Add(new ServiceLogRecord()
                {
                    Type      = "DEBUG",
                    TimeStamp = DateTime.Now,
                    Body      = dataErrors.Count + " error(s) found within the event data! Terminating the process. Errors:" + String.Join(";", dataErrors)
                });

                // Stop the sw
                sw.Stop();

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

                return(response);
            }

            #endregion

            #region [ Data manuplation ]

            // Stop the timer
            sw.Stop();

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

            #region [ Create Object ]
            logRecords.Add(new ServiceLogRecord()
            {
                Type      = "DEBUG",
                TimeStamp = DateTime.Now,
                Body      = "Creating Coupon."
            });

            // Create the reseller application
            var command = new Coupon()
            {
                CouponCode = ev.CouponCode,
                OwnerID    = ev.OwnerID,
                CampaignID = ev.CampaignID,
                FromDate   = ev.FromDate,
                ToDate     = ev.ToDate,
                Status     = ev.Status,
                Created    = DateTime.Now
            };

            // Add log
            logRecords.Add(new ServiceLogRecord()
            {
                Type      = "DEBUG",
                TimeStamp = DateTime.Now,
                Body      = string.Format("Coupon created", ev.UserToken, ev.SessionId)
            });
            #endregion

            #region [ Save Coupon ]

            var baseServiceResponse = _couponServiceBase.Create(command);
            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 saving Coupon!"
                });

                // Stop the sw
                sw.Stop();

                response.Type        = ServiceResponseTypes.Error;
                response.Code        = ((short)HeadstoneServiceResponseCodes.General_Exception).ToString();
                response.ServiceTook = sw.ElapsedMilliseconds;
                response.Message     = "There was an error while saving the request!";
                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("Coupon successfuly created. CouponId:{0}",
                                              command.CouponID)
                });

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

                // Set the object id
                response.CouponID = command.CouponID;
            }
            // Stop the sw
            sw.Stop();

            response.Type        = ServiceResponseTypes.Success;
            response.Code        = ((short)HeadstoneServiceResponseCodes.Request_Successfuly_Completed).ToString();
            response.ServiceTook = sw.ElapsedMilliseconds;
            response.Message     = string.Format("Coupon successfuly created. CouponId:{0}",
                                                 command.CouponID);
            response.LogRecords = logRecords;

            #endregion

            return(response);
        }