Exemplo n.º 1
0
        public async Task <RedeemDeliveryCommandResult> Handle(RedeemDeliveryCommand request, CancellationToken cancellationToken)
        {
            var deliveryToRedeem = await _activeDeliveryRepository.FindByIdAsync(request.Id);

            if (deliveryToRedeem is null)
            {
                return(new RedeemDeliveryCommandResult(false,
                                                       new List <string> {
                    $"Active Delivery: {request.Id} not found"
                }));
            }

            // if (deliveryToRedeem.RedeemDelivery(out string error))
            //     return new RedeemDeliveryCommandResult(false, new List<string> {error});

            if (!_activeDeliveryRepository.RedeemDelivery(deliveryToRedeem, out string error))
            {
                return(new RedeemDeliveryCommandResult(false, new List <string> {
                    error
                }));
            }

            var createdStocks = new List <BookStock>();

            foreach (var item in deliveryToRedeem.Items)
            {
                for (var i = 0; i < item.ItemsCount; i++)
                {
                    var stockToAdd = new BookStock(deliveryToRedeem, item);
                    _bookStockRepository.Add(stockToAdd);
                    createdStocks.Add(stockToAdd);
                }
            }

            var completedDelivery = new CompletedDelivery(deliveryToRedeem, createdStocks);

            if (_completedDeliveryRepository.Add(completedDelivery) is null)
            {
                return(new RedeemDeliveryCommandResult(false,
                                                       new List <string> {
                    "Something wend wrong during adding Completed Delivery"
                }));
            }

            if (await _activeDeliveryRepository.UnitOfWork.SaveChangesAsync() < 1)
            {
                return(new RedeemDeliveryCommandResult(false, new List <string>()
                {
                    "Error occured during saving to DB"
                }));
            }

            return(new RedeemDeliveryCommandResult(true));
        }
Exemplo n.º 2
0
 public CompletedDelivery Add(CompletedDelivery completedDelivery)
 {
     return(_context.CompletedDeliveries.Add(completedDelivery).Entity);
 }