コード例 #1
0
        private async Task <Result> IsOrderValid(Order order)
        {
            //  var isCustomerExist = await _customerRepository.IsExists(order.CustomerId);
            // if (!isCustomerExist)
            //  {
            //     return Result.Fail(CustomErrors.CustomerByGivenIdNotExists);
            // }

            foreach (var orderItem in order.OrderItems)
            {
                var product = await _productRepository.FindById(orderItem.ProductId);

                if (product == null)
                {
                    return(Result.Fail(CustomErrors.NotExistByGivenId));
                }

                if (orderItem.Quantity >= product.AvailableQuantity)
                {
                    return(Result.Fail(new Error(CustomErrors.NotEnoughProductsInStore(
                                                     product.Name,
                                                     orderItem.Quantity,
                                                     product.AvailableQuantity))));
                }
            }

            return(Result.Ok());
        }