Example #1
0
        public Order AddProductInOrder(int idOrder, AddOrderToProductModel item)
        {
            if (item == null)
            {
                throw new AppValidationException(MessageConstants.ADD_PRODUCT_MODEL_IS_EMPTY);
            }

            var order   = GetOrderFromRepository(idOrder);
            var product = GetProduct(item.SKU);

            if (product.PriceType == PriceType.PerEach && (item.QTY - Math.Floor(item.QTY)) != 0)
            {
                throw new AppValidationException(MessageConstants.FRACTIONAL_QTY_NOT_AVALIABLE_IN_ORDER_FOR_PRODUCT_WITH_LB_PRICE);
            }

            var orderToProduct = order.OrderToProducts.FirstOrDefault(p => p.IdProduct == product.Id);

            if (orderToProduct == null)
            {
                orderToProduct = new OrderToProduct()
                {
                    IdProduct = product.Id,
                };
                order.OrderToProducts.Add(orderToProduct);
            }
            orderToProduct.QTY += item.QTY;
            order = GetRecalculatedOrder(order);

            var result = _orderRepository.Update(order);

            return(result ? order : null);
        }
Example #2
0
 public Result <Order> AddProductInOrder(int id, [FromBody] AddOrderToProductModel model)
 {
     return(_orderService.AddProductInOrder(id, model));
 }