コード例 #1
0
        public OrderServiceResponse SendOrder(string orderXml)
        {
            var    orderServiceResponse = new OrderServiceResponse();
            string responseData         = string.Empty;
            var    fail    = new Fail();
            var    success = new Success();

            /*
             * XmlDocument doc = new XmlDocument();
             * doc.LoadXml(orderXml);
             *
             * string jsonData = JsonConvert.SerializeXmlNode(doc);
             * var json = new StringContent(orderXml, System.Text.Encoding.Default, mediaType: "application/json");
             */

            var xml = new StringContent(orderXml, System.Text.Encoding.Default, mediaType: "application/xml");

            using (var httpClient = new HttpClient {
                BaseAddress = baseAddress
            })
            {
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation(name: "authorization", value: this.authString);

                using (var response = httpClient.PostAsync(requestUri: this.createOrderRequestUri, content: xml).Result)
                //using (var response = await httpClient.PostAsync(requestUri: this.requestUri, content: json).ConfigureAwait(false))
                {
                    responseData = response.Content.ReadAsStringAsync().Result;
                    orderServiceResponse.Content         = responseData;
                    orderServiceResponse.ResponseMessage = response;

                    return(orderServiceResponse);
                }
            }
        }
コード例 #2
0
        public OrderServiceResponse <OrderLine> GetOrderLines(OrderLineRequest req, List <ServiceLogRecord> logRecords = null)
        {
            var response = new OrderServiceResponse <OrderLine>();

            var OrderLines = new List <OrderLine>();

            #region [ Envelope settings ]

            // Create the including fields according to the envelope
            var includes = new List <string>();

            #endregion

            #region [ Filters ]

            // Check for filters
            Expression <Func <OrderLine, bool> > filterPredicate = PredicateBuilder.New <OrderLine>(true);

            // Add the filters
            if (req.OrderLineIds.Any())
            {
                filterPredicate = filterPredicate.And(r => req.OrderLineIds.Contains(r.OrderLineID));
            }

            if (req.OrderIds.Any())
            {
                filterPredicate = filterPredicate.And(m => req.OrderIds.Contains(m.OrderID));
            }

            #endregion

            // Make the query
            if (filterPredicate.Parameters.Count > 0)
            {
                OrderLines = _OrderLineServiceBase.GetIncluding(filterPredicate, includes.ToArray()).Result;
            }
            else
            {
                OrderLines = _OrderLineServiceBase.GetAllIncluding(includes.ToArray()).Result;
            }

            response.Type   = Headstone.Common.ServiceResponseTypes.Success;
            response.Result = OrderLines;

            return(response);
        }
コード例 #3
0
        public OrderServiceResponse <OrderLine> DeleteOrderLine(OrderLineDeleted 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      = "OrderLine delete request received."
            });

            // Create a response object
            var response = new OrderServiceResponse <OrderLine>();

            #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
            List <string> dataErrors = new List <string>();

            if (ev.OrderLineID == default(int))
            {
                dataErrors.Add("No valid OrderLine id found!");
            }

            if (dataErrors.Count > 0)
            {
                // 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 = ((short)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 [ Load reseller application ]


            OrderLine OrderLine = _OrderLineServiceBase.Get(r => r.OrderLineID == ev.OrderLineID).Result.FirstOrDefault();

            if (OrderLine == null)
            {
                // Add log
                logRecords.Add(new ServiceLogRecord()
                {
                    Type      = "DEBUG",
                    TimeStamp = DateTime.Now,
                    Body      = "No OrderLine found with the given id!"
                });

                // Stop the sw
                sw.Stop();

                response.Type        = ServiceResponseTypes.Error;
                response.Code        = ((short)HeadstoneServiceResponseCodes.Invalid_Request).ToString();
                response.ServiceTook = sw.ElapsedMilliseconds;
                response.Message     = "No OrderLine found with the given id!";
                response.Errors.Add("No OrderLine found with the given id!");
                response.LogRecords = logRecords;

                return(response);
            }
            #endregion

            #region [ Delete reseller application ]

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

            // Delete the billing info
            var baseServiceResponse = _OrderLineServiceBase.Delete(OrderLine);

            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 deleting the OrderLine!"
                });

                // 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 deleting the OrderLine!";
                response.Errors.Add("There was an error while deleting the OrderLine!");
                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("OrderLine successfuly deleted. OrderLineId:{0}",
                                              OrderLine.OrderLineID)
                });

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

                // Set the role id
                response.OrderLineId = OrderLine.OrderLineID;
            }

            #endregion


            // 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("OrderLine successfuly deleted. OrderLineId:{0}",
                                                 OrderLine.OrderLineID);
            response.LogRecords = logRecords;

            return(response);
        }
コード例 #4
0
        public OrderServiceResponse <OrderLine> CreateOrderLine(OrderLineCreated 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 OrderLine request received."
            });

            var response = new OrderServiceResponse <OrderLine>();

            #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 OrderLine item(s)!");
            //}

            //if (String.IsNullOrEmpty(ev.Name))
            //{
            //    dataErrors.Add("No product name!");
            //}
            //if (ev.Items.Count == 0)
            //{
            //    dataErrors.Add("No OrderLine 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 OrderLine."
            });

            // Create the reseller application
            var command = new OrderLine()
            {
                OrderID    = ev.OrderID,
                ProductID  = ev.ProductID,
                Quantity   = ev.Quantity,
                BasePrice  = ev.BasePrice,
                TotalPrice = ev.TotalPrice,
                Status     = ev.Status,
                Created    = DateTime.Now
            };

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

            #region [ Save OrderLine ]

            var baseServiceResponse = _OrderLineServiceBase.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 OrderLine!"
                });

                // 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("OrderLine successfuly created. OrderLineId:{0}",
                                              command.OrderLineID)
                });

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

                // Set the object id
                response.OrderLineId = command.OrderLineID;
            }
            // 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("OrderLine successfuly created. OrderLineId:{0}",
                                                 command.OrderLineID);
            response.LogRecords = logRecords;

            #endregion

            return(response);
        }