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();
        }
Esempio n. 2
0
        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;
                }
            }
        }
Esempio n. 4
0
        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.");
            }
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 11
0
        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;
            }
        }
Esempio n. 16
0
        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;
     }
 }
Esempio n. 20
0
 public ManterConfiguracaoSistema()
     : base()
 {
     bmConfiguracaoSistema = new BMConfiguracaoSistema();
 }
Esempio n. 21
0
        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);
            }
        }
Esempio n. 22
0
        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));
            }
        }
Esempio n. 23
0
        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);
        }