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)); }
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)); }
public BalanceValidateTests() { zero = new BalanceValidation(0); negative = new BalanceValidation(-3); positive = new BalanceValidation(1); }