public async Task <OrderCreationResult> CreateOrderAsync(Customer customer, int numberOfOrderedCups) { if (customer == null) { throw new ArgumentNullException(nameof(customer), $"{nameof(customer)} must not be null"); } if (numberOfOrderedCups < 1) { throw new ArgumentOutOfRangeException(nameof(numberOfOrderedCups), $"{nameof(numberOfOrderedCups)} must be greater than zero!"); } OrderCreationResult result; var numberOfCupsInStock = await _coffeeCupRepository.GetCoffeeCupsInStockCountAsync(); var areEnoughCupsInStock = numberOfOrderedCups <= numberOfCupsInStock; if (areEnoughCupsInStock) { Order createdOrder = await CreateOrderInternalAsync(customer, numberOfOrderedCups); result = new OrderCreationResult { ResultCode = OrderCreationResultCode.Success, CreatedOrder = createdOrder, RemainingCupsInStock = numberOfCupsInStock - numberOfOrderedCups }; } else { result = new OrderCreationResult { ResultCode = OrderCreationResultCode.StockExceeded, RemainingCupsInStock = numberOfCupsInStock, }; } return(result); }
public async Task <OrderCreationResult> CreateOrderAsync(Customer customer, int numberOfOrderedCups) { // TODO: Throw ArgumentOutOfRangeException if number of ordered cups is less than 1 OrderCreationResult result; // TODO: Return StockExceeded result code if not enough cups in stock Order createdOrder = await CreateOrderInternalAsync(customer, numberOfOrderedCups); result = new OrderCreationResult { ResultCode = OrderCreationResultCode.Success, CreatedOrder = null, // TODO: Store created order in CreatedOrder property RemainingCupsInStock = 0 // TODO: Store remaining cups in stock in OrderCreationResult }; return(result); }