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); } } }
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); }
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); }
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); }