/// <summary> /// Add new order. /// </summary> /// <param name="request"> /// The add new order request. /// </param> /// <returns> /// The add order response. /// </returns> public AddOrderResponse AddOrder(AddOrderRequest request) { var retailer = new Retailer(request.RetailerUrl); var newOrder = new Order(OrderStatus.New) { CreatedDate = DateTime.UtcNow, Retailer = retailer }; var response = new AddOrderResponse { BrokenRules = retailer.GetBrokenRules().ToList() }; response.BrokenRules.AddRange(newOrder.GetBrokenRules().ToList()); if (response.BrokenRules.Any()) { response.MessageType = MessageType.Warning; return response; } try { var orderResult = this.orderRepository.AddOrder(request.IdentityToken, newOrder); response = orderResult.ConvertToAddOrderResponse(); response.Message = CommonResources.OrderAddSuccessMessage; } catch (Exception ex) { response.MessageType = MessageType.Error; response.ErrorCode = ex.Message; this.Logger.Error(CommonResources.OrderAddErrorMessage, ex); } return response; }