/// <summary> /// Grava as informações de uma rota de Url. /// </summary> /// <param name="model">Informações da rota URL para gravação.</param> public void Gravar(RotaUrlModelApi model) { try { string baseURL = _configuration.GetSection("RotaUrlAPI:BaseURL").Value; string key = _configuration.GetSection("RotaUrlAPI: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; if (string.IsNullOrEmpty(model.Id)) { response = _client.PostAsync(baseURL, content).Result; } else { response = _client.PutAsync(baseURL, content).Result; } response.EnsureSuccessStatusCode(); } catch (Exception erro) { throw new HttpRequestException("Erro ao gravar rota URL.", erro); } }
internal static RotaUrlViewModel ConvertToModel(RotaUrlModelApi modelApi) { var model = new RotaUrlViewModel(); model.ChaveRota = modelApi.Chave; model.NomeRota = modelApi.Nome; model.DescricaoRota = modelApi.Descricao; model.UrlDestino = modelApi.UrlDestino; model.UrlDestinoIOS = modelApi.UrlDestinoIOS; model.UrlDestinoAndroid = modelApi.UrlDestinoAndroid; model.UrlDestinoWindowsPhone = modelApi.UrlDestinoWindowsPhone; model.HasControleAcesso = modelApi.HasControleAcesso; model.HasRotaVigente = modelApi.HasRotaVigente; return(model); }
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)); }