Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Request.QueryString["demanda"] == null)
                {
                    Response.Redirect("HistoricoDemandas.aspx");
                    return;
                }

                Id = int.Parse(Request.QueryString["demanda"]);

                processo = new BMProcessoResposta().ObterPorId(Id);

                var analisarEtapasProcesso = new ManterProcesso().AnalisarEtapasProcesso(Id, processo.Usuario.CPF);
                //lblJustificativaCancelamentoRodape.Text = "";


                lblProcesso.Text      = processo.Processo.Nome;
                lblDemandante.Text    = processo.Usuario.Nome;
                lblNumeroDemanda.Text = processo.ID.ToString();

                if (!string.IsNullOrEmpty(processo.JustificativaCancelamento))
                {
                    pnlJustificativa.Visible = true;
                    txtCancelamento          = lblJustificativaCancelamento.Text = processo.JustificativaCancelamento;
                }

                ViewState["larguraCampo"] = 0;

                //Reapeat Abas
                rptEtapasTab.DataSource = analisarEtapasProcesso.ListaEtapas;
                rptEtapasTab.DataBind();

                //Repeat Content
                rptEtapas.DataSource = analisarEtapasProcesso.ListaEtapas;
                rptEtapas.DataBind();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// TODO: Separa função de PDF em helper de Demandas
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnPdf_Click(object sender, EventArgs e)
        {
            var linkButton = sender as LinkButton;

            if (linkButton == null)
            {
                return;
            }

            var idProcessoResposta = int.Parse(linkButton.CommandArgument);

            var listaProcesso = new Sebrae.Academico.BP.Services.SgusWebService.ManterProcesso().ObterDetalhamentoProcesso(idProcessoResposta);

            // Create a new PDF document
            var document = new PdfDocument();

            var qtdEtapa                = 0;
            var alturaLinha             = 20;
            var margin                  = 30;
            var tamanhoTituloEtapa      = 70;
            var posicaoInicialEtapa     = 100;
            var padding                 = margin + 5;
            var alturaMaximaBlocoCampos = 700;

            foreach (var etapa in listaProcesso.Etapas)
            {
                // Create an empty page
                var page = document.AddPage();
                page.Size        = PdfSharp.PageSize.A4;
                page.Orientation = PdfSharp.PageOrientation.Portrait;

                // Get an XGraphics object for drawing
                var gfx = XGraphics.FromPdfPage(page);

                // Create a font
                var font          = new XFont("Verdana", 10);
                var textFormatter = new XTextFormatter(gfx);

                var gruposCampos = new List <DTOBlocoCampo>();

                var grupoIndex  = 0;
                var alturaBloco = 0;

                foreach (var campo in etapa.ListaCampos)
                {
                    var alturaCampo =
                        CalcularAlturaCampo(gfx.MeasureString(campo.Titulo + ": " + campo.Resposta, font).Width,
                                            (int)page.Width, alturaLinha);

                    alturaBloco += alturaCampo;

                    // Atualizar a altura do bloco.
                    if (gruposCampos.Any() && gruposCampos[grupoIndex] != null)
                    {
                        var altura     = gruposCampos[grupoIndex].AlturaBloco;
                        var novaAltura = alturaBloco + (gruposCampos[grupoIndex].PossuiEspacoAntes ? tamanhoTituloEtapa : 0);

                        gruposCampos[grupoIndex].AlturaBloco = altura > novaAltura ? altura : novaAltura;
                    }

                    // Verificar se o bloco possui espaço antes, para as informações da Etapa.
                    var possuiEspacoAntes = true;

                    // Se os campos atingirem o limite da exibição, pular para a próxima página.
                    // Dá um espaço em cima de 3 linhas para o conteúdo da etapa.
                    if (alturaBloco > (alturaMaximaBlocoCampos - (alturaLinha * 3)))
                    {
                        alturaBloco = 0;
                        grupoIndex++;
                        possuiEspacoAntes = false;
                    }

                    if (gruposCampos.Count() != grupoIndex + 1)
                    {
                        gruposCampos.Add(new DTOBlocoCampo(possuiEspacoAntes, tamanhoTituloEtapa + alturaBloco));
                    }

                    gruposCampos[grupoIndex].Campos.Add(campo);
                }

                foreach (var grupoCampos in gruposCampos)
                {
                    gfx.DrawRectangle(XPens.Black, XBrushes.White,
                                      new XRect(alturaLinha, grupoCampos.PossuiEspacoAntes ? posicaoInicialEtapa : 20, page.Width - 45,
                                                grupoCampos.AlturaBloco));

                    if (gruposCampos.IndexOf(grupoCampos) == 0)
                    {
                        EscreverHeaderEtapa(textFormatter, idProcessoResposta, listaProcesso, page, font, qtdEtapa,
                                            etapa, padding, grupoCampos.PossuiEspacoAntes ? posicaoInicialEtapa : 20, alturaLinha, gfx);
                    }

                    //Campos
                    var qtdCampos = 0;

                    foreach (var campo in grupoCampos.Campos)
                    {
                        // Escrever dados do Campo.
                        EscreverCampo(campo, gfx, font, page, alturaLinha, textFormatter, padding, posicaoInicialEtapa,
                                      qtdCampos, tamanhoTituloEtapa, grupoCampos.PossuiEspacoAntes);

                        qtdCampos++;
                    }

                    // Se não for a última página, adiciona mais uma página ao PDF.
                    if (gruposCampos.IndexOf(grupoCampos) != gruposCampos.Count() - 1)
                    {
                        page          = document.AddPage();
                        gfx           = XGraphics.FromPdfPage(page);
                        textFormatter = new XTextFormatter(gfx);
                    }
                }

                // Dar continuidade ao número da etapa.
                qtdEtapa++;
            }

            var streamOutput = new MemoryStream();

            document.Save(streamOutput, false);

            Response.AddHeader("Content-Disposition",
                               "attachment; filename=historicoDemanda_" + idProcessoResposta + ".pdf");
            Response.ContentType = "application/pdf";
            Response.BinaryWrite(streamOutput.ToArray());
            Response.Flush();
        }