private async Task <AccountResponse> ExecutarTrasferencia(Guid trasnferenciaID, TransferenciaEntity transferenciaEntity) { _notification.ClearNotifications(); var accountResponse = new AccountResponse(); var account = await ValidarConta(transferenciaEntity.Conta); account.Validate(account); if (!account.Valid) { _notification.AddNotifications(account.ValidationResult); accountResponse.Success = false; } if (transferenciaEntity.TipoTransacao == Common.Enums.Transacao.ETipoTransacao.Debito) { if (account.Balance < transferenciaEntity.Valor) { _notification.AddNotification("Conta", "Conta sem saldo para transferencia"); accountResponse.Success = false; } } if (!_notification.HasNotifications) { var request = new AccountRequest() { AccountNumber = transferenciaEntity.Conta, Type = transferenciaEntity.TipoTransacao == Common.Enums.Transacao.ETipoTransacao.Debito ? Common.Enums.Transacao.AccountTransactionType.Debit : Common.Enums.Transacao.AccountTransactionType.Credit, Value = transferenciaEntity.Valor }; accountResponse = await _accountHttpClient.InserirTrasactionAccount(request); } transferenciaEntity.AtribuirIdTransferencia(trasnferenciaID); await InserirTransferencia(transferenciaEntity); return(accountResponse); }