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); }
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); }
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); }
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); } }
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); } }
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); }
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); }