public string GereRelatorio(OrdenacaoRelatorioGeralPatente ordenacaoRelatorio) { var nomeDoArquivoDeSaida = GereInformacoesUteisParaOArquivoDeSaidaDoRelatorio(); _documento.Open(); MonteDocumentoDoRelatorio(ordenacaoRelatorio); _documento.Close(); return nomeDoArquivoDeSaida; }
private void MonteDocumentoDoRelatorio(OrdenacaoRelatorioGeralPatente ordenacaoRelatorio) { var corBackgroudHeader = Color.GRAY; var tabela = new PdfPTable(1); tabela.WidthPercentage = 100; tabela.DefaultCell.Border = Rectangle.NO_BORDER; _processosDePatentes = ordenacaoRelatorio.Equals(OrdenacaoRelatorioGeralPatente.Cliente) ? _processosDePatentes.OrderBy(processo => processo.Patente.Clientes[0].Pessoa.Nome).ToList() : _processosDePatentes.OrderBy(processo => processo.Processo).ToList(); if (ordenacaoRelatorio.Equals(OrdenacaoRelatorioGeralPatente.Cliente)) { var dicionarioDeClientesEPatentes = new Dictionary<long, List<IProcessoDePatente>>(); foreach (IProcessoDePatente processo in _processosDePatentes) { var cliente = processo.Patente.Clientes[0]; if(cliente.Pessoa != null && cliente.Pessoa.ID.HasValue && !dicionarioDeClientesEPatentes.ContainsKey(cliente.Pessoa.ID.Value)) dicionarioDeClientesEPatentes.Add(cliente.Pessoa.ID.Value, new List<IProcessoDePatente>()); if(cliente.Pessoa != null && cliente.Pessoa.ID.HasValue) dicionarioDeClientesEPatentes[cliente.Pessoa.ID.Value].Add(processo); } tabela.AddCell(ObtenhaTabelaTituloColuna()); foreach (long chave in dicionarioDeClientesEPatentes.Keys) { string nomeDoCliente = dicionarioDeClientesEPatentes[chave][0].Patente.Clientes[0].Pessoa.Nome; foreach (IProcessoDePatente processoDePatente in dicionarioDeClientesEPatentes[chave]) tabela.AddCell(ObtenhaTabelaDadosDoCliente(processoDePatente, nomeDoCliente)); } } else { tabela.AddCell(ObtenhaTabelaTituloPatente()); foreach (IProcessoDePatente processo in _processosDePatentes) tabela.AddCell(ObtenhaTabelaDadosDaPatente(processo)); } _documento.Add(tabela); }