public static byte[] ConsultarBoletimCertame(int certificadoId, string cpf, DateTime horaAtual) { var usuario = new BMUsuario().ObterPorCPF(cpf); var certificadoUsuario = usuario?.ListaUsuarioCertificadoCertame.FirstOrDefault(x => x.CertificadoCertame.ID == certificadoId); if (certificadoUsuario == null) { return(null); } var repositorioArquivos = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro; var boletimPath = string.IsNullOrWhiteSpace(certificadoUsuario.ArquivoBoletim) ? null : Path.Combine(repositorioArquivos, "BoletinsCertame", certificadoUsuario.ArquivoBoletim); // Para certificados de 2014 para trás, gera o certificado na hora. // Para 2015 em diante, busca do repositório de PDFs. // Também gera o boletim caso não exista ou o arquivo não seja encontrado. if (certificadoUsuario.CertificadoCertame.Ano <= 2014 || string.IsNullOrWhiteSpace(certificadoUsuario.ArquivoBoletim) || (boletimPath != null && File.Exists(boletimPath) == false)) { return(GerarBoletim(certificadoUsuario, repositorioArquivos, horaAtual)); } return(File.ReadAllBytes(boletimPath)); }
public static int?SalvaNodeDrupalRest(Dictionary <string, string> postParameters, bool salvarLog = true, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { var basePath = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UrlRestPortal, bmConfiguracaoSistema).Registro; var pathRestPortal = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.PathRestPortal, bmConfiguracaoSistema).Registro; var logSincronia = new LogSincronia { Usuario = usuarioLogado ?? new BMUsuario().ObterUsuarioLogado(), Sincronizado = false, Url = basePath + pathRestPortal, Action = "import", Method = "POST", Acao = enumAcao.Atualizar }; logSincronia.ListaPostParameters = postParameters.Select( p => new LogSincroniaPostParameters { LogSincronia = logSincronia, Descricao = p.Value, Registro = p.Key }).ToList(); logSincronia.Hash = logSincronia.HashObj(); try { return(NodeDrupalRest(logSincronia, bmConfiguracaoSistema)); } catch { if (!salvarLog) { throw; } //dll UTIL não tem acesso a camada "BP" Para Evitar "referencing loop detected" bmLogSincronia = bmLogSincronia ?? new BMLogSincronia(); var tmpLogSincronia = bmLogSincronia.ObterPorFiltro(logSincronia); if (tmpLogSincronia != null && tmpLogSincronia.Sincronizado) { return(null); } bmLogSincronia.Salvar(logSincronia); return(null); } }
public static void RemoverNodeDrupalRest(int id, bool salvarLog = true) { var basePath = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UrlRestPortal).Registro; var pathRestPortal = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.PathRestPortal).Registro; var logSincronia = new LogSincronia { Usuario = (new BMUsuario()).ObterUsuarioLogado(), Sincronizado = false, Url = basePath + pathRestPortal, Action = "delete", Method = "POST", Acao = enumAcao.Remover }; var postParameters = new Dictionary <string, string> { { "node_id", id.ToString() } }; logSincronia.ListaPostParameters = postParameters.Select( p => new LogSincroniaPostParameters { LogSincronia = logSincronia, Descricao = p.Value, Registro = p.Key }).ToList(); logSincronia.Hash = logSincronia.HashObj(); try { NodeDrupalRest(logSincronia); } catch (Exception) { if (!salvarLog) { throw; } //dll UTIL não tem acesso a camada "BP" Para Evitar "referencing loop detected" var bmLogSincronia = new BMLogSincronia(); var tmpLogSincronia = bmLogSincronia.ObterPorFiltro(logSincronia); if (tmpLogSincronia != null && tmpLogSincronia.Sincronizado) { return; } bmLogSincronia.Salvar(logSincronia); } }
public static int?DrupalRestRequest(string baseUrl, string action, string method = "GET", Dictionary <string, string> postParameters = null, bool isRetry = false, BMConfiguracaoSistema bmConfiguracaoSistema = null) { var session = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.SessionRestPortal, bmConfiguracaoSistema).Registro.Split('='); var csrfConfig = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.CSRFRestPortal, bmConfiguracaoSistema); var csrf = csrfConfig.Registro.Split('='); // Header Parameters var headerParameters = new Dictionary <string, string> { { csrf[0], csrf[1] }, { "Cookie", session[0] + "=" + session[1] } }; // Importa o tipo de conteúdo para o Drupal try { var result = GetJson <DTOJsonResultDrupalImportNode>(baseUrl + action, method, postParameters, headerParameters); if (result.error_msg != null) { throw new AcademicoException(result.error_msg); } return(result.node_id); } catch (WebException ex) { // Se for a segunda tentativa e ocorreu algum erro desiste if (isRetry) { throw new AcademicoException( "Não foi possível salvar/atualizar a categoria entre em contato com o suporte técnico." + ex.Message); } var url = baseUrl; var statusCode = (int)((HttpWebResponse)ex.Response).StatusCode; // A sessão caiu ou CSRF não é mais válido refaz amabas if (statusCode != 403 && statusCode != 401) { throw new AcademicoException("Código de erro " + statusCode + " não tratado. Favor entrar em contato com o suporte."); } bmConfiguracaoSistema = bmConfiguracaoSistema ?? new BMConfiguracaoSistema(); // Pega um token válido para usuários anonimos var token = requestNewDrupalAnonymousCSRF(baseUrl); // Pega a configuração do Cookie de sessão no banco var confSession = bmConfiguracaoSistema.ObterPorID((int)enumConfiguracaoSistema.SessionRestPortal); var postUserLoginParameters = new Dictionary <string, string> { { "username", ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UsuarioRestPortal, bmConfiguracaoSistema).Registro }, { "password", ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.PasswordRestPortal, bmConfiguracaoSistema).Registro } }; var headerLoginParameters = new Dictionary <string, string> { { "X-CSRF-Token", token } }; var sessionUrl = baseUrl + "user/login"; // Pega o Cookie de login try { // Realiza o login e pega session id, session name e token logado var sessionJson = GetJson <DTOJsonResultDrupalSession>(sessionUrl, "POST", postUserLoginParameters, headerLoginParameters); confSession.Registro = sessionJson.session_name + "=" + sessionJson.sessid; bmConfiguracaoSistema.Salvar(confSession); // Atualiza o CSRF com o token de login csrfConfig.Registro = "X-CSRF-Token=" + sessionJson.token; bmConfiguracaoSistema.Salvar(csrfConfig); } catch (WebException t) { throw new AcademicoException( "Falha no login no portal. Verifique se as configurações do sistema Usuario e Senha Rest Portal. Endpoint: " + sessionUrl + "\n" + t.Message); } // Chama o método original novamente flaged as isRetry return(DrupalRestRequest(url, action, method, postParameters, true, bmConfiguracaoSistema)); } }
public static byte[] ConsultarCertificadoCertame(int certificadoId, string cpf) { var usuario = new BMUsuario().ObterPorCPF(cpf); if (usuario == null) { return(null); } var certificadoUsuario = usuario.ListaUsuarioCertificadoCertame.FirstOrDefault(x => x.CertificadoCertame.ID == certificadoId); if (certificadoUsuario == null) { return(null); } var certificado = certificadoUsuario.CertificadoCertame; // Removendo caracteres especiais que travam no chrome. certificado.Certificado.NomeDoArquivoOriginal = RemoverCaracterEspecial(certificado.Certificado.NomeDoArquivoOriginal); // Create the output document var outputDocument = new PdfDocument { PageLayout = PdfPageLayout.TwoPageLeft }; var font = new XFont("Verdana", 13); var format = new XStringFormat { Alignment = XStringAlignment.Center, LineAlignment = XLineAlignment.Center }; try { var repositorioUpload = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro; var filePath = string.Concat(repositorioUpload, @"\", certificado.Certificado.NomeDoArquivoNoServidor); using (var ms = new MemoryStream()) { using ( var file = new FileStream( filePath, FileMode.Open, FileAccess.Read ) ) { var bytes = new byte[file.Length]; file.Read(bytes, 0, (int)file.Length); ms.Write(bytes, 0, (int)file.Length); } // Por alguma bizarrice, tem que recriar o Stream. var form = XPdfForm.FromStream(new MemoryStream(ms.ToArray())); // Escrever FRENTE do certificado. EscreverFrente(outputDocument, form, certificadoUsuario, font, format); // Escrever VERSO do certificado. EscreverVerso(outputDocument, form, certificadoUsuario, font, format); var streamOutput = new MemoryStream(); outputDocument.Save(streamOutput, false); return(streamOutput.ToArray()); } } catch { return(null); } }