示例#1
0
 protected void NotificarValidacoesErro(ValidationResult validationResult)
 {
     foreach (var error in validationResult.Errors)
     {
         _notifications.AddNotification(new Notification(error.PropertyName, error.ErrorMessage));
     }
 }
示例#2
0
        public async Task <ApplicationResponseViewModel> InsertAsync(ApplicationRequestViewModel applicationViewModel)
        {
            var applicationModel = _mapper.Map <ApplicationRequestModel>(applicationViewModel);
            var trackCode        = Guid.NewGuid().ToString("N");
            var responseSso      = await _ssoService.RegisterClient(new RegisterClientRequest()
            {
                ClientId  = $"Like{trackCode}",
                GrantType = "client_credentials",
                Scopes    = new string[1] {
                    "like-api"
                }
            });

            if (responseSso is SsoError ssoError)
            {
                _domainNotification.AddNotification("SsoError", ssoError.ErrorMessage);
                return(null);
            }
            var registerClientResponse = responseSso as RegisterClientResponse;

            await _applicationRepository.InsertAsync(new ApplicationInsertDapper()
            {
                Id      = trackCode,
                Secret  = registerClientResponse.ClientSecret,
                Domains = applicationModel.Domains
            });

            return(new ApplicationResponseViewModel()
            {
                TrackCode = trackCode
            });
        }
        public async Task <ExchangeRateResponse> GetQuoteForeignCurrencyAsync(QuoteForeignCurrencyRequest request)
        {
            var foreignExchangeRate = await _foreignExchangeRatesService.GetLatestExchangeRateAsync(request.Currency);

            if (foreignExchangeRate == null)
            {
                _domainNotification.AddNotification("QuoteForeignCurrency", "Foreign Exchange Rates API request error");

                return(null);
            }

            var exchangeRate = new ExchangeRate(request.Amount, foreignExchangeRate.Rates.BrazilianReal);
            var calculateQuoteForeignCurrency = exchangeRate.CalculateQuoteForeignCurrency();

            return(new ExchangeRateResponse(calculateQuoteForeignCurrency));
        }
示例#4
0
        public async Task <CourseViewModel> UpdateAsync(CourseViewModel courseViewModel)
        {
            var model = _mapper.Map <Course>(courseViewModel);

            model.Category = null;

            var validation = new UpdateCourseValidation().Validate(model);

            if (!validation.IsValid)
            {
                _domainNotification.AddNotifications(validation);
                return(courseViewModel);
            }

            if (await _categoryRepository.GetByIdAsync(courseViewModel.CategoryId) != null)
            {
                await ValidateBusinessRulesAsync(courseViewModel);

                if (!_domainNotification.HasNotifications)
                {
                    _courseRepository.Update(model);
                    _unitOfWork.Commit();

                    var viewModel = _mapper.Map <CourseViewModel>(model);

                    return(viewModel);
                }
            }
            else
            {
                _domainNotification.AddNotification("CourseNotFound", "O Curso nao foi encontrado!");
            }

            return(courseViewModel);
        }
示例#5
0
        public async Task DebitAccount(Transaction transaction)
        {
            var account = await _accountRepository.GetAccountById(transaction.AccountId);

            if (account == null)
            {
                _notification.AddNotification("DebitAccount", "Não foi possível encontrar sua conta.");
                return;
            }

            if (!account.HasBalance(transaction.Value))
            {
                _notification.AddNotification("DebitAccount", "Saldo insuficiente para saque.");
                return;
            }

            account.Debit(transaction.Value);

            _accountRepository.AddTransaction(transaction);
            _accountRepository.UpdateAccount(account);
            await _unitOfWork.Commit();
        }
        public async Task <ViaCep> GetByCEPAsync(int cep)
        {
            var response = await _httpClient.GetAsync($"{cep}/json");

            var stringResponse = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <ViaCep>(stringResponse));
            }

            _domainNotification.AddNotification(HttpStatusCode.BadRequest.ToString(), "Cep não encontrado!", true);
            return(null);
        }
示例#7
0
        public async Task <Directions> GetAsync(string origin, string destination)
        {
            var response = await _httpClient.GetAsync($"json?origin={origin}&destination={destination}&key={keygoogle}");

            var stringResponse = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <Directions>(stringResponse));
            }
            else
            {
                _domainNotification.AddNotification(JsonConvert.DeserializeObject <ResponseService>(stringResponse));
                return(null);
            }
        }
示例#8
0
        public async Task <TransactionViewModel> Transaction(TransactionInputViewModel transactionVM)
        {
            TransactionViewModel viewModel = null;
            var transaction = _mapper.Map <Transaction>(transactionVM);
            var validation  = await new TransactionInsertValidation().ValidateAsync(transaction);

            if (!validation.IsValid)
            {
                _notification.AddNotifications(validation);
                return(viewModel);
            }

            switch (transaction.TransactionType)
            {
            case ETransactionType.Debit:
                await _transactionService.DebitAccount(transaction);

                break;

            case ETransactionType.Deposit:
            case ETransactionType.BankIncome:
            {
                await _transactionService.DepositAccount(transaction);

                break;
            }

            case ETransactionType.Transfer:
                await _transactionService.TransferAccount(transaction);

                break;

            default:
                _notification.AddNotification("transaction", "Tipo de transação não disponível.");
                return(null);
            }

            viewModel = _mapper.Map <TransactionViewModel>(transaction);
            return(viewModel);
        }