Exemple #1
0
        public TransactionDto Withdrawal(TransactionDto transactionDto)
        {
            var card            = _cardRepository.GetCardByNumberAndSecurityCode(transactionDto.Number, transactionDto.SecurityCode);
            var cardDto         = HydrateCardDto(card);
            var transaction     = HydrateTransaction(transactionDto, cardDto);
            var balanceValidate = new BalanceValidation(card.Balance);


            if (card == null)
            {
                return(HydrateTransactionDto(transaction, ExceptionConstants.CARD_NOT_EXISTS));
            }

            if (!card.Active)
            {
                return(HydrateTransactionDto(transaction, ExceptionConstants.CARD_BLOCKED));
            }

            if (balanceValidate.negative)
            {
                return(HydrateTransactionDto(transaction, ExceptionConstants.INSUFFICIENT_BALANCE));
            }



            if ((card.Number.Equals(transactionDto.Number)))
            {
                _cardRepository.UpdateBalance(card, (-transaction.Amount));
                _repository.Add(transaction);
            }

            return(HydrateTransactionDto(transaction, ExceptionConstants.CREATE_SUCCESS));
        }
Exemple #2
0
        public TransactionDto Deposit(TransactionDto transactionDto)
        {
            var card        = _cardRepository.GetCardByNumberAndSecurityCode(transactionDto.Number, transactionDto.SecurityCode);
            var cardDto     = HydrateCardDto(card);
            var transaction = HydrateTransaction(transactionDto, cardDto);


            var balanceValidate = new BalanceValidation(card.Balance);


            if (!card.Active)
            {
                return(HydrateTransactionDto(transaction, ExceptionConstants.CARD_BLOCKED));
            }


            if ((card.Number.Equals(transactionDto.Number)))
            {
                _cardRepository.UpdateBalance(card, transaction.Amount);
                _repository.Add(transaction);
            }

            return(HydrateTransactionDto(transaction, ExceptionConstants.CREATE_SUCCESS));
        }
Exemple #3
0
 public BalanceValidateTests()
 {
     zero     = new BalanceValidation(0);
     negative = new BalanceValidation(-3);
     positive = new BalanceValidation(1);
 }