Пример #1
0
        /// <summary>
        /// Registra o acesso ao uma rota URL informando os dados de acesso do usuário.
        /// </summary>
        /// <param name="model">Informações dos dados de acesso a Rota URL para estatística.</param>
        public void RegistrarAcesso(AcessoRotaUrlModelApi model)
        {
            try
            {
                string baseURL = _configuration.GetSection("AcessoRotaUrlAPI:BaseURL").Value;
                string key     = _configuration.GetSection("AcessoRotaUrlAPI:Key").Value;
                if (!string.IsNullOrEmpty(key))
                {
                    baseURL += $"?api_key={key}";
                }

                StringContent content = new StringContent(JsonConvert.SerializeObject(model), System.Text.Encoding.UTF8, "application/json");

                HttpResponseMessage response = _client.PostAsync(baseURL, content).Result;
                response.EnsureSuccessStatusCode();
            }
            catch (Exception erro)
            {
                throw new HttpRequestException("Erro ao registrar acesso a rota URL.", erro);
            }
        }
Пример #2
0
        public IActionResult Rota(string chave)
        {
            if (string.IsNullOrEmpty(chave))
            {
                return(View("Error", new ErrorViewModel {
                    Descricao = "Nenhuma chave de rota foi informada para verificação."
                }));
            }

            RotaUrlModelApi rotaUrlModel = _urlRouterApiClient.Obter(chave);

            if (rotaUrlModel == null)
            {
                return(View("Error", new ErrorViewModel {
                    Descricao = $"Chave da rota [{chave}] não encontrada, infelizmente não conseguimos realizar o roteamento."
                }));
            }
            if (!rotaUrlModel.HasRotaVigente)
            {
                return(View("Error", new ErrorViewModel {
                    Descricao = $"Url com chave da rota [{chave}] não encontrada-se vigente, infelizmente não conseguimos realizar o roteamento."
                }));
            }

            string userAgent           = Request.Headers["User-Agent"].ToString();
            bool   hasDispositivoMovel = Helper.UtilHelper.HasDeviceMobile(userAgent);
            string sistemaOperacional  = Helper.UtilHelper.ObterSistemaOperacional(userAgent);

            string urlDestino = rotaUrlModel.UrlDestino;

            if (hasDispositivoMovel &&
                (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoIOS) ||
                 !string.IsNullOrEmpty(rotaUrlModel.UrlDestinoAndroid) ||
                 !string.IsNullOrEmpty(rotaUrlModel.UrlDestinoWindowsPhone)))
            {//Direcionar para urls, conforme o tipo de sistema operacional.
                if (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoIOS) && sistemaOperacional.ToUpper().Contains("IOS"))
                {
                    urlDestino = rotaUrlModel.UrlDestinoIOS;
                }
                if (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoAndroid) && sistemaOperacional.ToUpper().Contains("ANDROID"))
                {
                    urlDestino = rotaUrlModel.UrlDestinoAndroid;
                }
                if (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoWindowsPhone) && sistemaOperacional.ToUpper().Contains("WINDOWS PHONE"))
                {
                    urlDestino = rotaUrlModel.UrlDestinoWindowsPhone;
                }
            }

            if (rotaUrlModel.HasControleAcesso)
            {//Registrar acesso a Url...
                AcessoRotaUrlModelApi acessoRotaModel = new AcessoRotaUrlModelApi();
                acessoRotaModel.ChaveRota               = chave;
                acessoRotaModel.DataHoraAcesso          = DateTime.Now;
                acessoRotaModel.InformacoesOrigemAcesso = userAgent;
                acessoRotaModel.HasDispositivoMovel     = hasDispositivoMovel;
                if (hasDispositivoMovel)
                {
                    Helper.DeviceMobile deviceMobile = Helper.UtilHelper.ObterDeviceMobile(userAgent);
                    acessoRotaModel.TipoDispositivoMovel   = deviceMobile.Device;
                    acessoRotaModel.ModeloDispositivoMovel = deviceMobile.Model;
                }
                acessoRotaModel.IpOrigemAcesso           = Helper.UtilHelper.ObterIpMaquinaCliente(Request);
                acessoRotaModel.SistemaOperacionalAcesso = sistemaOperacional;
                _urlRouterApiClient.RegistrarAcesso(acessoRotaModel);
            }

            return(Redirect(urlDestino));
        }