private void IniciarThreadGeral() { var manterSe = new ManterSolucaoEducacional(); var manterOferta = new ManterOferta(); var manterPr = new ManterPrograma(); var manterCp = new ManterCapacitacao(); var manterTr = new ManterTrilha(); var bmConfiguracaoSistema = new BMConfiguracaoSistema(); var bmLogSincronia = new BMLogSincronia(); var usuarioLogado = new ManterUsuario().ObterUsuarioLogado(); var somenteNaoSincronizados = ckbSomenteNaoSincronizados.Checked; var thread = new Thread(() => { EnviarSolucoes(manterSe, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); EnviarOfertas(manterOferta, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); EnviarProgramasCapacitacoes(manterPr, manterCp, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); EnviarTrilhas(manterTr, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); }) { IsBackground = true, Name = Guid.NewGuid().ToString() }; thread.Start(); }
public int?SalvaNodeDrupalRest(Trilha trilha, BMConfiguracaoSistema bmConfiguracaoSistema, BMLogSincronia bmLogSincronia, Usuario usuarioLogado, bool statusNivelTrilha = false) { var postParameters = DrupalUtil.InitPostParameters(trilha.ID, trilha.Nome, trilha.Descricao, "solucao", statusNivelTrilha); postParameters.Add("data[field_tipo_de_solucao]", "4"); DrupalUtil.PermissoesAreaTematica( trilha.ListaAreasTematicas.Where(p => p.AreaTematica != null).Select(x => x.AreaTematica.ID).ToList(), ref postParameters); var permissoesUfs = trilha.ObterUfsDasPermissoes(); var permissoesPerfis = trilha.ObterPerfisDasPermissoes(); var permissoesNiveisOcupacionais = trilha.ObterNiveisOcupacionaisDasPermissoes(); DrupalUtil.PermissoesUf(permissoesUfs.Select(x => x.ID).ToList(), ref postParameters); DrupalUtil.PermissoesPerfil(permissoesPerfis.Select(x => x.ID).ToList(), ref postParameters); DrupalUtil.PermissoesNivelOcupacional(permissoesNiveisOcupacionais.Select(x => x.ID).ToList(), ref postParameters); try { return(DrupalUtil.SalvaNodeDrupalRest(postParameters, true, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado)); } catch (Exception) { return(null); } }
private void EnviarTrilhas(ManterTrilha manterTr, BMConfiguracaoSistema bmConfiguracaoSistema, BMLogSincronia bmLogSincronia, Usuario usuarioLogado, bool somenteNaoSincronizados) { var trilhas = manterTr.ObterTodasTrilhas(); foreach (var trilha in trilhas) { try { if (somenteNaoSincronizados && trilha.IdNodePortal.HasValue) { continue; } trilha.IdNodePortal = null; manterTr.AtualizarNodeIdDrupal(trilha, manterTr, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); } catch (Exception) { // ignored; } } }
public int?SalvaNodeDrupalRest(Programa registro, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { var postParameters = DrupalUtil.InitPostParameters(registro.ID, registro.Nome, registro.Apresentacao, "solucao", registro.Ativo); postParameters.Add("data[field_tipo_de_solucao]", "5"); DrupalUtil.PermissoesAreaTematica( registro.ListaAreasTematicas.Where(p => p.AreaTematica != null).Select(x => x.AreaTematica.ID).ToList(), ref postParameters); DrupalUtil.PermissoesUf(registro.ListaPermissao.Where(p => p.Uf != null).Select(x => x.Uf.ID).ToList(), ref postParameters); DrupalUtil.PermissoesPerfil( registro.ListaPermissao.Where(p => p.Perfil != null).Select(x => x.Perfil.ID).ToList(), ref postParameters); DrupalUtil.PermissoesNivelOcupacional( registro.ListaPermissao.Where(p => p.NivelOcupacional != null) .Select(x => x.NivelOcupacional.ID) .ToList(), ref postParameters); try { return(DrupalUtil.SalvaNodeDrupalRest(postParameters, true, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado)); } catch (Exception) { return(null); } }
public int?SalvaNodeDrupalRest(SolucaoEducacional registro, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { var postParameters = DrupalUtil.InitPostParameters(registro.ID, registro.Nome, registro.Apresentacao, "solucao", registro.Ativo); /*1 - Cursos Online; 2 - Cursos Presenciais; 3 - Cursos Mistos; 4 - Trilhas; 5 - Programas*/ int tipoDeSolucao; switch (registro.FormaAquisicao.ID) { // Curso presencial. case 22: tipoDeSolucao = 2; break; // Curso misto. case 40: tipoDeSolucao = 3; break; // Jogo online, Jogo presencial e Jogo misto. case 43: case 44: case 45: case 113: tipoDeSolucao = 6; break; default: tipoDeSolucao = 1; break; } postParameters.Add("data[field_tipo_de_solucao]", tipoDeSolucao.ToString()); DrupalUtil.PermissoesAreaTematica(registro.ListaAreasTematicas.Select(x => x.AreaTematica.ID).ToList(), ref postParameters); DrupalUtil.PermissoesUf(registro.ListaPermissao.Where(p => p.Uf != null).Select(x => x.Uf.ID).ToList(), ref postParameters); DrupalUtil.PermissoesPerfil( registro.ListaPermissao.Where(p => p.Perfil != null).Select(x => x.Perfil.ID).ToList(), ref postParameters); DrupalUtil.PermissoesNivelOcupacional( registro.ListaPermissao.Where(p => p.NivelOcupacional != null) .Select(x => x.NivelOcupacional.ID) .ToList(), ref postParameters); try { return(DrupalUtil.SalvaNodeDrupalRest(postParameters, true, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado)); } catch (Exception) { throw new AlertException("Erro na sincronização. Tente salvar novamente."); } }
public int?SalvaNodeDrupalRest(Oferta oferta, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { var postParameters = DrupalUtil.InitPostParameters(oferta.ID, oferta.Nome, null, "oferta"); postParameters.Add("data[field_data_inicio_inscricao]", oferta.DataInicioInscricoes.HasValue ? DataUtil.ToUnix(oferta.DataInicioInscricoes.Value).ToString() : ""); postParameters.Add("data[field_data_fim_inscricao]", oferta.DataFimInscricoes.HasValue ? DataUtil.ToUnix(oferta.DataFimInscricoes.Value).ToString() : ""); postParameters.Add("data[field_carga_horaria]", oferta.CargaHoraria.ToString()); postParameters.Add("data[field_solucao_sgus_id]", (oferta.SolucaoEducacional != null ? oferta.SolucaoEducacional.ID : 0).ToString()); /*1 - Cursos Online; 2 - Cursos Presenciais; 3 - Cursos Mistos; 4 - Trilhas; 5 - Programas*/ var tipoDeSolucao = 1; if (oferta.SolucaoEducacional != null) { switch (oferta.SolucaoEducacional.FormaAquisicao.ID) { // Curso presencial. case 22: tipoDeSolucao = 2; break; // Curso misto. case 40: tipoDeSolucao = 3; break; // Jogo online, Jogo presencial e Jogo misto. case 43: case 44: case 45: case 113: tipoDeSolucao = 6; break; default: tipoDeSolucao = 1; break; } } postParameters.Add("data[field_tipo_de_solucao]", tipoDeSolucao.ToString()); DrupalUtil.PermissoesUf(oferta.ListaPermissao.Where(p => p.Uf != null).Select(x => x.Uf.ID).ToList(), ref postParameters); DrupalUtil.PermissoesPerfil(oferta.ListaPermissao.Where(p => p.Perfil != null).Select(x => x.Perfil.ID).ToList(), ref postParameters); DrupalUtil.PermissoesNivelOcupacional(oferta.ListaPermissao.Where(p => p.NivelOcupacional != null).Select(x => x.NivelOcupacional.ID).ToList(), ref postParameters); try { return(DrupalUtil.SalvaNodeDrupalRest(postParameters, true, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado)); } catch (Exception) { return(null); } }
public void AtualizarNodeIdDrupal(Programa pPrograma, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { var id = SalvaNodeDrupalRest(pPrograma, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); if (!id.HasValue) { return; } pPrograma.IdNodePortal = id.Value; bmPrograma.Salvar(pPrograma); }
public static int?NodeDrupalRest(LogSincronia logSincronia, BMConfiguracaoSistema bmConfiguracaoSistema = null) { var postParameters = logSincronia.GetDictionaryPostParameters(); var result = JsonUtil.DrupalRestRequest(logSincronia.Url, logSincronia.Action, logSincronia.Method, postParameters, false, bmConfiguracaoSistema); if (!result.HasValue) { throw new Exception("DrupalRestRequest retornou false."); } return(result); }
public void AtualizarNodeIdDrupal(Capacitacao capacitacao, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { var id = SalvaNodeDrupalRest(capacitacao, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); if (!id.HasValue) { return; } capacitacao.IdNodePortal = id.Value; bmCapacitacao.Salvar(capacitacao); }
public void AtualizarNodeIdDrupal(SolucaoEducacional solucao, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { if (solucao.FormaAquisicao == null || !solucao.FormaAquisicao.EnviarPortal) { return; } var id = SalvaNodeDrupalRest(solucao, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); if (!id.HasValue) { return; } solucao.IdNodePortal = id.Value; bmSolucaoEducacional.Salvar(solucao, false); }
public int?SalvaNodeDrupalRest(Capacitacao capacitacao, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { var postParameters = DrupalUtil.InitPostParameters(capacitacao.ID, capacitacao.Nome, null, "oferta"); postParameters.Add("data[field_data_inicio_inscricao]", capacitacao.DataInicioInscricao.HasValue ? DataUtil.ToUnix(capacitacao.DataInicioInscricao.Value).ToString() : ""); postParameters.Add("data[field_data_fim_inscricao]", capacitacao.DataFimInscricao.HasValue ? DataUtil.ToUnix(capacitacao.DataFimInscricao.Value).ToString() : ""); postParameters.Add("data[field_carga_horaria]", "0"); postParameters.Add("data[field_solucao_sgus_id]", (capacitacao.Programa != null ? capacitacao.Programa.ID : 0).ToString()); postParameters.Add("data[field_tipo_de_solucao]", "5"); if (capacitacao.Programa != null) { DrupalUtil.PermissoesUf( capacitacao.Programa.ListaPermissao.Where(p => p.Uf != null).Select(x => x.Uf.ID).ToList(), ref postParameters); } if (capacitacao.Programa != null) { DrupalUtil.PermissoesPerfil( capacitacao.Programa.ListaPermissao.Where(p => p.Perfil != null).Select(x => x.Perfil.ID).ToList(), ref postParameters); } if (capacitacao.Programa != null) { DrupalUtil.PermissoesNivelOcupacional( capacitacao.Programa.ListaPermissao.Where(p => p.NivelOcupacional != null) .Select(x => x.NivelOcupacional.ID) .ToList(), ref postParameters); } try { return(DrupalUtil.SalvaNodeDrupalRest(postParameters, true, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado)); } catch (Exception) { return(null); } }
private void IniciarThreadSolucoes() { var manterSe = new ManterSolucaoEducacional(); var bmConfiguracaoSistema = new BMConfiguracaoSistema(); var bmLogSincronia = new BMLogSincronia(); var usuarioLogado = new ManterUsuario().ObterUsuarioLogado(); var somenteNaoSincronizados = ckbSomenteNaoSincronizados.Checked; var thread = new Thread( () => EnviarSolucoes(manterSe, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados)) { IsBackground = true, Name = Guid.NewGuid().ToString() }; thread.Start(); }
private void EnviarProgramasCapacitacoes(ManterPrograma manterPr, ManterCapacitacao manterCp, BMConfiguracaoSistema bmConfiguracaoSistema, BMLogSincronia bmLogSincronia, Usuario usuarioLogado, bool somenteNaoSincronizados) { var programas = manterPr.ObterTodosProgramas(); foreach (var programa in programas) { try { if (somenteNaoSincronizados && programa.IdNodePortal.HasValue) { continue; } programa.IdNodePortal = null; manterPr.AtualizarNodeIdDrupal(programa, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); } catch { // ignored; } } var capacitacoes = manterCp.ObterTodasCapacitacoes(); foreach (var capacitacao in capacitacoes) { try { if (somenteNaoSincronizados && capacitacao.IdNodePortal.HasValue) { continue; } manterCp.AtualizarNodeIdDrupal(capacitacao, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); } catch (Exception) { // ignored; } } }
private void EnviarSolucoes(ManterSolucaoEducacional manterSe, BMConfiguracaoSistema bmConfiguracaoSistema, BMLogSincronia bmLogSincronia, Usuario usuarioLogado, bool somenteNaoSincronizados) { try { var solucoes = manterSe.ObterTodosSolucaoEducacional() .Where( x => x.ListaAreasTematicas.Any() && x.FormaAquisicao != null && x.FormaAquisicao.EnviarPortal && (somenteNaoSincronizados == false || !x.IdNodePortal.HasValue)).ToList(); foreach (var solucao in solucoes) { try { if (somenteNaoSincronizados && solucao.IdNodePortal.HasValue) { continue; } solucao.IdNodePortal = null; manterSe.AtualizarNodeIdDrupal(solucao, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); } catch (Exception) { // ignored; } } } catch (Exception) { throw; } }
private void EnviarOfertas(ManterOferta manterOferta, BMConfiguracaoSistema bmConfiguracaoSistema, BMLogSincronia bmLogSincronia, Usuario usuarioLogado, bool somenteNaoSincronizados) { try { var ofertas = manterOferta.ObterTodasOfertas() .Where( x => x.DataInicioInscricoes.HasValue && x.DataFimInscricoes.HasValue && x.SolucaoEducacional.Ativo && x.SolucaoEducacional.FormaAquisicao != null && x.SolucaoEducacional.FormaAquisicao.EnviarPortal && x.SolucaoEducacional.ListaAreasTematicas.Any() && (somenteNaoSincronizados == false || !x.IdNodePortal.HasValue)) .OrderBy(x => x.Nome).ToList(); foreach (var oferta in ofertas) { try { oferta.IdNodePortal = null; manterOferta.AtualizarNodeIdDrupal(oferta, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); } catch (Exception) { // ignored; } } } catch (Exception) { throw; } }
public void AtualizarNodeIdDrupal(Oferta oferta, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null) { if (oferta.SolucaoEducacional.FormaAquisicao == null || !oferta.SolucaoEducacional.FormaAquisicao.EnviarPortal) { return; } if (oferta.InscricaoOnline != null && oferta.IdNodePortal != null && !oferta.InscricaoOnline.Value) { DrupalUtil.RemoverNodeDrupalRest(oferta.IdNodePortal.Value); return; } var id = SalvaNodeDrupalRest(oferta, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); if (!id.HasValue) { return; } oferta.IdNodePortal = id.Value; bmOferta.Salvar(oferta, false); }
public string GerarUrlLogginUsuario(string cpf, string senha) { if (autenticacao == null || !(segurancaAutenticacao.AutenticaFornecedor(autenticacao))) { throw new Exception("Fornecedor não autenticado. verifique o Login e a Senha informada"); } string url = ""; if (new BMUsuario().AutenticarUsuario(cpf, senha)) { var tokenAcesso = new TokenAcesso(); tokenAcesso.Usuario = new BMUsuario().ObterPorCPF(cpf); tokenAcesso.Token = Guid.NewGuid(); tokenAcesso.DataCriacao = DateTime.Now; tokenAcesso.Fornecedor = new BMFornecedor().ObterPorID(10); tokenAcesso.TokenMD5 = CriptografiaHelper.ObterHashMD5(tokenAcesso.Usuario.CPF + "/" + tokenAcesso.Token); new BMTokenAcesso().Salvar(tokenAcesso); url += new BMConfiguracaoSistema().ObterPorID((int)enumConfiguracaoSistema.EnderecoPortal).Registro + "token/" + tokenAcesso.TokenMD5; } return(url); }
public static DataTable GerarDataTableComCertificado(int pIdMatriculaPrograma, int pIdMatriculaOferta, int pIdUsuarioTrilha, CertificadoTemplate certificadoTemplate, string jwtToken = null) { if (certificadoTemplate == null) { throw new Exception("Não existem certificados disponíveis para emissão."); } var dt = new DataTable(); dt.Columns.Add(new DataColumn("TX_Certificado")); dt.Columns.Add(new DataColumn("OB_Imagem", typeof(byte[]))); var dr = dt.NewRow(); dr["TX_Certificado"] = FormatarTextoCertificadoTrilhaTurma(certificadoTemplate.TextoDoCertificado, pIdMatriculaPrograma, pIdMatriculaOferta, pIdUsuarioTrilha); dr["OB_Imagem"] = ObterImagemBase64(certificadoTemplate.Imagem); if (certificadoTemplate.CertificadoTrilhas == true || (!string.IsNullOrEmpty(certificadoTemplate.TextoCertificado2) && !string.IsNullOrEmpty(certificadoTemplate.Imagem2))) { dt.Columns.Add(new DataColumn("TX_Certificado2")); dt.Columns.Add(new DataColumn("OB_Image2", typeof(byte[]))); // Se for certificado de trilhas, obtém o progresso do trilheiro e joga no verso. // Caso contrário, joga o texto do verso normalmente. if (certificadoTemplate.CertificadoTrilhas == true && jwtToken != null) { // Semelhantemente ao relatório de questionários, existe um .aspx que gera // o HTML, que será lido pelo reader e escrito no verso do certificado. var requestUrl = new BMConfiguracaoSistema().ObterPorID( (int)enumConfiguracaoSistema.EnderecoSGUS).Registro + "/Relatorios/CertificadoTemplate/VersoCertificadoTrilhas.aspx?token=" + jwtToken; // Ler requisição a partir de uma URL informada. var webRequest = (HttpWebRequest)WebRequest.Create(requestUrl); webRequest.Method = "GET"; var myResp = webRequest.GetResponse(); var sr = new StreamReader(myResp.GetResponseStream(), System.Text.Encoding.UTF8); var result = sr.ReadToEnd(); sr.Close(); myResp.Close(); // Escrever o verso do certificado. Em resumo, pega tudo entre o <start> e o </start>. // Tem que forçar a remoção de toda a sujeira que o WebForms coloca no output, então // foi criada a tag fictícia <start> só pra esse código abaixo. // É bem feio, mas funciona bem. var startTag = "<start>"; var endTag = "</start>"; var indexStart = result.IndexOf(startTag) + startTag.Length; var indexEnd = result.IndexOf(endTag); var verso = result.Substring(indexStart, indexEnd - indexStart); // Substituir \r\n. while (verso.Contains("\r\n")) { verso = verso.Replace("\r\n", ""); } // Substituir espaços duplos. while (verso.Contains(" ")) { verso = verso.Replace(" ", " "); } dr["TX_Certificado2"] = verso; } else { dr["TX_Certificado2"] = FormatarTextoCertificadoTrilhaTurma(certificadoTemplate.TextoCertificado2, pIdMatriculaPrograma, pIdMatriculaOferta, pIdUsuarioTrilha); } if (certificadoTemplate.Imagem2 != null) { dr["OB_Image2"] = ObterImagemBase64(certificadoTemplate.Imagem2); } } dt.Rows.Add(dr); return(dt); }
/// <summary> /// Obtém informações de uma configuração do Sistema de acordo com a enumeração informada. /// </summary> /// <param name="pConfiguracaoSistema">enumeração referente a configuração do sistema, sobre o qual se deseja obter informações</param> /// <param name="bmConfiguracaoSistema">Caso queira passar um objeto BMConfiguracaoSistema existente.</param> /// <returns>Objeto da classe ConfiguracaoSistema, com informações sobre configurações do Sistema</returns> public static ConfiguracaoSistema ObterInformacoes(enumConfiguracaoSistema pConfiguracaoSistema, BMConfiguracaoSistema bmConfiguracaoSistema = null) { try { return((bmConfiguracaoSistema ?? new BMConfiguracaoSistema()).ObterPorID((int)pConfiguracaoSistema)); } catch (Exception ex) { throw ex; } }
public ManterConfiguracaoSistema() : base() { bmConfiguracaoSistema = new BMConfiguracaoSistema(); }
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 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 void AtualizarNodeIdDrupal(Trilha trilha, ManterTrilha manterTr = null, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null, bool statusTrilhaNivel = false) { var id = SalvaNodeDrupalRest(trilha, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, statusTrilhaNivel); if (!id.HasValue) { return; } trilha.IdNodePortal = id; (manterTr ?? new ManterTrilha()).Salvar(trilha); }