public async Task <bool> InternalTransfer(TransferDTO internalTransferDTO) { try { var sender = await transferRepository.GetBankAccount(internalTransferDTO.SenderBranch, internalTransferDTO.SenderNumber, internalTransferDTO.SenderDigit); var receiver = await transferRepository.GetBankAccount(internalTransferDTO.ReceiverBranch, internalTransferDTO.ReceiverNumber, internalTransferDTO.ReceiverDigit); if (!SenderHasFunds(sender, internalTransferDTO.Value)) { return(UserDoesNotHaveFunds(sender)); } if (receiver == null) { return(ReceiverAccountNotFound()); } var result = await transferRepository.Transfer(internalTransferDTO); NotifyConsumers(internalTransferDTO); return(true); } catch (Exception ex) { NotifyErrorToConsumers(ex); return(false); } }