public IActionResult GetSummaryForUserOptionProductSelection(CarOrderDetails carOrderDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new ApiBadRequestResponse(ModelState)));
            }

            if (carOrderDetails == null)
            {
                return(BadRequest(new ApiResponse(400, "The order details are missing.")));
            }

            var order = _orderService.AddOrder(carOrderDetails);

            return(Ok(new ApiOkResponse(order)));
        }
Ejemplo n.º 2
0
        public CarOrderDetails AddOrder(CarOrderDetails carOrderDetails)
        {
            var carModelProduct = _productRepository.GetByEAN(carOrderDetails.CarModelEAN);

            if (carModelProduct == null)
            {
                throw new Exception("The product is unknown.");
            }

            var order = new Order(carOrderDetails.Code);

            order.AddPosition(new OrderPosition(
                                  carModelProduct.EAN,
                                  carModelProduct.NetPrice,
                                  carModelProduct.VATRate,
                                  "Basis-Modell: " + carModelProduct.Name));

            foreach (var(optionId, carModelOptionProduct) in carOrderDetails.CarOptionProducts)
            {
                var option = _productOptionRepository.GetById(optionId, carModelProduct.Id);
                if (option == null)
                {
                    throw new Exception("The option with ID " + optionId + " is unknown.");
                }

                var optionProduct = _productRepository.GetByEAN(carModelOptionProduct.EAN);
                if (optionProduct == null)
                {
                    throw new Exception("The product with EAN " + carModelOptionProduct.EAN + " is unknown.");
                }

                order.AddPosition(new OrderPosition(
                                      optionProduct.EAN,
                                      optionProduct.NetPrice,
                                      optionProduct.VATRate,
                                      "Option " + option.Name + ": " + optionProduct.Name));
            }

            order = _orderRepository.AddOrder(order);

            carOrderDetails.OrderNo = order.Id.ToString();

            return(carOrderDetails);
        }