Ejemplo n.º 1
0
        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);
            }
        }