Exemple #1
0
        private void Credit(AtmWithdraw atmWithdraw, Movement movement)
        {
            MovementHelpers.Credit(HistoricMovementRepository, movement.Amount, atmWithdraw.Id, ObjectType.AtmWithdraw, atmWithdraw.CurrentAmount);

            atmWithdraw.CurrentAmount += movement.Amount;
            AtmWithdrawRepository.Update(atmWithdraw);
        }
Exemple #2
0
 public override void Credit()
 {
     if (CurrentMovement?.AtmWithdrawId != null)
     {
         var atmWithdraw = AtmWithdrawRepository.GetById(CurrentMovement.AtmWithdrawId.Value);
         Credit(atmWithdraw, CurrentMovement);
     }
     else
     {
         throw new ArgumentException("ATM Withdraw can't be null.");
     }
 }
Exemple #3
0
        public override void UpdateDebit(Movement newMovement)
        {
            if (CurrentMovement.AtmWithdrawId.HasValue)
            {
                var atmWithdraw = AtmWithdrawRepository.GetById(CurrentMovement.AtmWithdrawId.Value);

                if (CurrentMovement.PaymentMethod != newMovement.PaymentMethod)
                {
                    Credit(atmWithdraw, CurrentMovement);

                    var strategy = ContextMovementStrategy.GetMovementStrategy(newMovement, BankAccountRepository, HistoricMovementRepository, IncomeRepository, AtmWithdrawRepository);
                    strategy.Debit();
                }
                else
                {
                    if (!newMovement.AtmWithdrawId.HasValue)
                    {
                        throw new ArgumentException("New Target account can't be null.");
                    }

                    if (CurrentMovement.AtmWithdrawId.Value != newMovement.AtmWithdrawId.Value)
                    {
                        var newAtmWithdraw = AtmWithdrawRepository.GetById(newMovement.AtmWithdrawId.Value);
                        Credit(atmWithdraw, CurrentMovement);
                        Debit(newAtmWithdraw, newMovement);
                    }
                    else if (CurrentMovement.Amount != newMovement.Amount)
                    {
                        Credit(atmWithdraw, CurrentMovement);
                        Debit(atmWithdraw, newMovement);
                    }
                }
            }
            else
            {
                throw new ArgumentException("Current Source account & Target ATM can't be null.");
            }
        }