public static byte[] RetornarCertificado(CertificadoTemplate cf, DataTable dt)
        {
            try
            {
                string caminhoReport;
                if (cf.CertificadoTrilhas == true)
                {
                    caminhoReport = "EmitirCertificado.rptCertificadoTemplate2paginas.rdlc";
                }
                else if (string.IsNullOrWhiteSpace(cf.Imagem2) && string.IsNullOrWhiteSpace(cf.TextoCertificado2))
                {
                    caminhoReport = "EmitirCertificado.rptCertificadoTemplate.rdlc";
                }
                else
                {
                    caminhoReport = "EmitirCertificado.rptCertificadoTemplate2paginas.rdlc";
                }

                var binPath  = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin");
                var assembly = Assembly.LoadFrom(binPath + "\\Sebrae.Academico.Reports.dll");
                var stream   = assembly.GetManifestResourceStream("Sebrae.Academico.Reports." + caminhoReport);
                var rv       = new ReportViewer();
                rv.LocalReport.LoadReportDefinition(stream);
                rv.LocalReport.DataSources.Clear();
                rv.LocalReport.DataSources.Add(new ReportDataSource("dsCertificadoTemplate", dt));
                return(rv.LocalReport.Render("PDF"));
            }
            catch (Exception e)
            {
                throw new ResponseException(enumResponseStatusCode.CertificadoInexistente, "Erro ao gerar o certificado");
            }
        }
        public static DataTable GerarDataTableComCertificadoTutor(int pIdOferta, int pIdTurma, int pIdUsuario,
                                                                  CertificadoTemplate cf)
        {
            if (cf == 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"] = FormatarTextoCertificadoTutor(cf.TextoDoCertificado, pIdOferta, pIdTurma, pIdUsuario);
            dr["OB_Imagem"]      = ObterImagemBase64(cf.Imagem);

            if (!string.IsNullOrEmpty(cf.TextoDoCertificado) && !string.IsNullOrEmpty(cf.Imagem2))
            {
                dt.Columns.Add(new DataColumn("TX_Certificado2"));
                dt.Columns.Add(new DataColumn("OB_Image2", typeof(byte[])));
                dr["TX_Certificado2"] = FormatarTextoCertificadoTutor(cf.TextoCertificado2, pIdOferta, pIdTurma,
                                                                      pIdUsuario);
                dr["OB_Image2"] = ObterImagemBase64(cf.Imagem2);
            }

            dt.Rows.Add(dr);

            return(dt);
        }
Exemple #3
0
        protected void lkbEmitirCertificado_Click(object sender, EventArgs e)
        {
            CertificadoTemplate cf = CertificadoTemplateUtil.ConsultarCertificado(0, 0, this.IdUsuarioTrilha);
            //DataTable dt = CertificadoTemplateUtil.GerarDataTableComCertificado(0, this.IdUsuarioTrilha, cf);

            //byte[] resultado = CommonHelper.GerarArrayDeBytesParaORelatorioCertificadoTemplate(cf, dt, "PDF");
            //CommonHelper.GerarArquivoParaDowload(resultado);
        }
Exemple #4
0
        public void Excluir(CertificadoTemplate pCertificadoTemplate)
        {
            if (this.ValidarDependencias(pCertificadoTemplate))
            {
                throw new AcademicoException("Exclusão de registro negada. Existem intens que utilizam este certificado.");
            }

            repositorio.Excluir(pCertificadoTemplate);
        }
Exemple #5
0
        public IList <CertificadoTemplate> ObterPorFiltro(CertificadoTemplate pCertificadoTemplate)
        {
            var query = repositorio.session.Query <CertificadoTemplate>();

            if (pCertificadoTemplate != null)
            {
                if (!string.IsNullOrWhiteSpace(pCertificadoTemplate.Nome))
                {
                    query = query.Where(x => x.Nome.ToLower().Contains(pCertificadoTemplate.Nome.ToLower()));
                }
            }

            return(query.ToList <CertificadoTemplate>());
        }
        public void AlterarCertificadoTemplate(CertificadoTemplate pCertificadoTemplate)
        {
            try
            {
                PreencherInformacoesDeAuditoria(pCertificadoTemplate);

                bmCertificadoTemplate.Salvar(pCertificadoTemplate);
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
Exemple #7
0
        private void ValidarCertificadoTemplateInformado(CertificadoTemplate pCertificadoTemplate)
        {
            ValidarInstancia(pCertificadoTemplate);

            if (string.IsNullOrWhiteSpace(pCertificadoTemplate.Nome))
            {
                throw new AcademicoException("Nome. Campo Obrigatório");
            }

            if (string.IsNullOrWhiteSpace(pCertificadoTemplate.TextoDoCertificado))
            {
                throw new AcademicoException("Texto do Certificado. Campo Obrigatório");
            }

            if (string.IsNullOrWhiteSpace(pCertificadoTemplate.Imagem) && string.IsNullOrEmpty(pCertificadoTemplate.Imagem2))
            {
                throw new AcademicoException("Imagem. Campo Obrigatório");
            }
        }
        public CertificadoTemplate ObterCertificadoTemplatePorID(int pId)
        {
            CertificadoTemplate certificadoTemplate = null;

            try
            {
                certificadoTemplate = bmCertificadoTemplate.ObterPorID(pId);
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }

            return(certificadoTemplate);
        }
        public IList <CertificadoTemplate> ObterCertificadoTemplatePorFiltro(CertificadoTemplate pCertificadoTemplate)
        {
            IList <CertificadoTemplate> listaCertificadoTemplate = null;

            try
            {
                listaCertificadoTemplate = bmCertificadoTemplate.ObterPorFiltro(pCertificadoTemplate);
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }

            return(listaCertificadoTemplate);
        }
        public void IncluirCertificadoTemplate(CertificadoTemplate certificadoTemplate)
        {
            try
            {
                PreencherInformacoesDeAuditoria(certificadoTemplate);

                if (NomeExiste(certificadoTemplate.Nome))
                {
                    throw new AcademicoException("Já existe um template de certificado com o nome informado.");
                }

                bmCertificadoTemplate.Salvar(certificadoTemplate);
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
        public void ExcluirCertificadoTemplate(int idCertificadoTemplate)
        {
            try
            {
                CertificadoTemplate certificadoTemplate = null;

                if (idCertificadoTemplate <= 0)
                {
                    return;
                }
                certificadoTemplate = bmCertificadoTemplate.ObterPorID(idCertificadoTemplate);
                bmCertificadoTemplate.Excluir(certificadoTemplate);
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
Exemple #12
0
 public void Salvar(CertificadoTemplate pCertificadoTemplate)
 {
     ValidarCertificadoTemplateInformado(pCertificadoTemplate);
     repositorio.Salvar(pCertificadoTemplate);
 }
        public CertificadoTemplate ObterCertificado(int pIdMatriculaOferta, int pIdUsuarioTrilha)
        {
            CertificadoTemplate certificadoTemplate = null;

            try
            {
                if (pIdMatriculaOferta > 0)
                {
                    MatriculaOferta mo = new BMMatriculaOferta().ObterPorID(pIdMatriculaOferta);

                    if (!(mo != null && mo.Oferta.CertificadoTemplate != null && mo.Oferta.CertificadoTemplate.ID > 0))
                    {
                        return(certificadoTemplate);
                    }

                    if (mo.StatusMatricula == enumStatusMatricula.Concluido)
                    {
                        if (string.IsNullOrEmpty(mo.CDCertificado))
                        {
                            mo.CDCertificado          = InfraEstrutura.Core.Helper.WebFormHelper.ObterStringAleatoria();
                            mo.DataGeracaoCertificado = DateTime.Now;
                            new BMMatriculaOferta().Salvar(mo);
                        }

                        certificadoTemplate = new BMCertificadoTemplate().ObterPorID(mo.Oferta.CertificadoTemplate.ID);
                    }
                    else
                    {
                        return(null);
                    }
                }

                else if (pIdUsuarioTrilha > 0)
                {
                    UsuarioTrilha ut = new BMUsuarioTrilha().ObterPorId(pIdUsuarioTrilha);

                    if (!(ut != null && ut.TrilhaNivel.CertificadoTemplate != null && ut.TrilhaNivel.CertificadoTemplate.ID > 0))
                    {
                        return(certificadoTemplate);
                    }

                    if (ut.StatusMatricula == enumStatusMatricula.Aprovado)
                    {
                        if (string.IsNullOrEmpty(ut.CDCertificado))
                        {
                            ut.CDCertificado          = InfraEstrutura.Core.Helper.WebFormHelper.ObterStringAleatoria();
                            ut.DataGeracaoCertificado = DateTime.Now;
                            new BMUsuarioTrilha().Salvar(ut);
                        }

                        return(new BMCertificadoTemplate().ObterPorID(ut.TrilhaNivel.CertificadoTemplate.ID));
                    }
                    else
                    {
                        return(certificadoTemplate);
                    }
                }

                else
                {
                    return(certificadoTemplate);
                }
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }

            return(certificadoTemplate);
        }
Exemple #14
0
        public void EmitirCertificado(MatriculaOferta matriculaOferta)
        {
            if (matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.ID != (int)enumFornecedor.FGVOCW)
            {
                CertificadoTemplate cf = CertificadoTemplateUtil.ConsultarCertificado(0, matriculaOferta.ID, 0);
                DataTable           dt = CertificadoTemplateUtil.GerarDataTableComCertificado(0, matriculaOferta.ID, 0, cf);

                string caminhoReport = string.Empty;
                if (string.IsNullOrWhiteSpace(cf.Imagem2) && string.IsNullOrWhiteSpace(cf.TextoCertificado2))
                {
                    caminhoReport = "EmitirCertificado.rptCertificadoTemplate.rdlc";
                }
                else
                {
                    caminhoReport = "EmitirCertificado.rptCertificadoTemplate2paginas.rdlc";
                }

                string   binPath  = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin");
                Assembly assembly = Assembly.LoadFrom(binPath + "\\Sebrae.Academico.Reports.dll");
                Stream   stream   = assembly.GetManifestResourceStream("Sebrae.Academico.Reports." + caminhoReport);


                ReportViewer rv = new ReportViewer();
                rv.LocalReport.LoadReportDefinition(stream);
                rv.LocalReport.DataSources.Clear();
                rv.LocalReport.DataSources.Add(new ReportDataSource("dsCertificadoTemplate", dt));

                var fileBytes = rv.LocalReport.Render("PDF");

                System.Web.HttpContext context = System.Web.HttpContext.Current;
                context.Response.Clear();
                context.Response.ClearHeaders();
                context.Response.ClearContent();
                context.Response.AppendHeader("content-length", fileBytes.Length.ToString());
                context.Response.ContentType = "application/pdf";
                context.Response.AppendHeader("content-disposition", "attachment; filename=Certificado.pdf");
                context.Response.BinaryWrite(fileBytes);

                context.ApplicationInstance.CompleteRequest();
            }
            else
            {
                var link = new HistoricoAcademicoServices().ConsultarHistorico(matriculaOferta.Usuario.ID).FirstOrDefault(x => x.IdMatricula == matriculaOferta.ID);

                if (link != null && !string.IsNullOrEmpty(link.LKCertificado))
                {
                    try
                    {
                        HttpWebRequest myReq   = (HttpWebRequest)WebRequest.Create(link.LKCertificado);
                        WebResponse    myResp  = myReq.GetResponse();
                        HttpContext    context = HttpContext.Current;

                        byte[] b = null;
                        using (Stream stream = myResp.GetResponseStream())
                            using (MemoryStream ms = new MemoryStream())
                            {
                                int count = 0;
                                do
                                {
                                    byte[] buf = new byte[1024];
                                    count = stream.Read(buf, 0, 1024);
                                    ms.Write(buf, 0, count);
                                } while (stream.CanRead && count > 0);
                                b = ms.ToArray();

                                context.Response.ContentType = "application/pdf";
                                context.Response.AppendHeader("content-disposition", "attachment; filename=Certificado.pdf");
                                context.Response.BinaryWrite(ms.ToArray());
                                context.Response.Flush();
                            }
                    }
                    catch
                    {
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Erro ao Baixar Certificado do Servidor Remoto FGV");
                    }
                }
                else
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Certificado do OCW não encontrado");
                }
            }
        }
        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);
        }