Ejemplo n.º 1
0
        public void AddTransfer(TransferCommand command)
        {
            var barrelFrom = _barrelRepository.GetById(command.BarrelFromId);
            var barrelTo   = _barrelRepository.GetById(command.BarrelToId);

            var transfer = new Transfer(command);

            if ((barrelFrom.CurrentCapacity >= command.Amount) &&
                (barrelTo.Capacity >= barrelTo.CurrentCapacity + command.Amount))
            {
                barrelFrom.RemoveAmount(command.Amount);
                barrelTo.AddAmount(command.Amount);
            }
            else
            {
                throw new Exception("Specified amount can't fit into the barrels");
            }

            using (var scope = new TransactionScope())
            {
                _barrelRepository.UpdateBarrel(command.BarrelFromId, barrelFrom);
                _barrelRepository.UpdateBarrel(command.BarrelToId, barrelTo);
                _transferRepository.AddTransfer(transfer);

                scope.Complete();
            }
        }
Ejemplo n.º 2
0
        public Task Handle(TransferCreatedEvent @event)
        {
            _transferRepository.AddTransfer(new TransferLog()
            {
                FromAccount    = @event.From,
                ToAccount      = @event.To,
                TransferAmount = @event.Amount
            });

            return(Task.CompletedTask);
        }