internal List <TituloAssociadoEsp> ObterTitulosAssociados(int motosserraId, BancoDeDados banco = null)
        {
            List <TituloAssociadoEsp> titulos = new List <TituloAssociadoEsp>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select t.id, tn.numero, tn.ano, t.situacao, ls.texto situacao_texto, tm.sigla, t.modelo, ttm.codigo, t.empreendimento
															from {0}tab_titulo t, {0}tab_titulo_modelo ttm, {0}tab_titulo_numero tn, tab_titulo_modelo tm, {0}lov_titulo_situacao ls
															where t.modelo = ttm.id and tm.id = t.modelo and tn.titulo(+) = t.id and ls.id = t.situacao and t.id in 
															(select t.id from tab_titulo t, esp_licenca_motosserra e, tab_motosserra m where t.id = e.titulo and m.id = e.motosserra 
															and m.situacao = 1/*Ativo*/ and e.motosserra = :motosserra) and t.situacao <> 5 /*Encerrado*/"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("motosserra", motosserraId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        TituloAssociadoEsp titulo = new TituloAssociadoEsp();
                        titulo.Id            = Convert.ToInt32(reader["id"]);
                        titulo.ModeloId      = Convert.ToInt32(reader["modelo"]);
                        titulo.ModeloSigla   = reader["sigla"].ToString();
                        titulo.ModeloCodigo  = Convert.ToInt32(reader["codigo"]);
                        titulo.Situacao      = Convert.ToInt32(reader["situacao"]);
                        titulo.SituacaoTexto = reader["situacao_texto"].ToString();

                        if (reader["empreendimento"] != null && !Convert.IsDBNull(reader["empreendimento"]))
                        {
                            titulo.EmpreendimentoId = Convert.ToInt32(reader["empreendimento"]);
                        }

                        if (reader["numero"] != null && !Convert.IsDBNull(reader["numero"]))
                        {
                            titulo.TituloNumero = reader["numero"].ToString() + "/" + reader["ano"].ToString();
                        }

                        titulos.Add(titulo);
                    }

                    reader.Close();
                }
            }

            return(titulos);
        }
        public static Especificidade ToEspecificidade(this Titulo titulo)
        {
            if (titulo.Modelo == null || titulo.Modelo.Id == 0)
            {
                return(null);
            }

            if (titulo.Especificidade == null)
            {
                throw new Exception("Objeto da especificidade é nulo");
            }

            Especificidade especificidade = titulo.Especificidade;

            especificidade.RequerimentoId              = titulo.RequerimetoId.GetValueOrDefault();
            especificidade.Titulo.Id                   = titulo.Id;
            especificidade.Titulo.SetorId              = titulo.Setor.Id;
            especificidade.Titulo.SituacaoId           = (titulo.Situacao != null) ? titulo.Situacao.Id : 0;
            especificidade.Titulo.ExisteAnexos         = (titulo.Anexos != null && titulo.Anexos.Count > 0);
            especificidade.Titulo.EmpreendimentoId     = titulo.EmpreendimentoId;
            especificidade.Titulo.Modelo               = titulo.Modelo.Id.ToString();
            especificidade.Titulo.Protocolo.Id         = titulo.Protocolo.Id ?? 0;
            especificidade.Titulo.Protocolo.IsProcesso = titulo.Protocolo.IsProcesso;
            especificidade.Titulo.Protocolo.Numero     = titulo.Protocolo.Numero;
            especificidade.Titulo.RepresentanteId      = titulo.Representante.Id;

            if (!string.IsNullOrEmpty(titulo.LocalEmissao.Texto))
            {
                especificidade.Titulo.LocalEmissao = titulo.LocalEmissao.Texto;
            }

            if (!string.IsNullOrEmpty(titulo.Modelo.Sigla))
            {
                especificidade.Titulo.ModeloSigla = titulo.Modelo.Sigla;
            }

            especificidade.Titulo.RequerimentoAtividades = titulo.RequerimentoAtividades;
            if (especificidade.ProtocoloReq.RequerimentoId == 0)
            {
                especificidade.ProtocoloReq.RequerimentoId = titulo.RequerimentoAtividades ?? 0;
            }

            foreach (var item in titulo.Atividades)
            {
                item.Protocolo = item.Protocolo ?? new Protocolo();
                especificidade.ProtocoloReq.Id         = item.Protocolo.Id.GetValueOrDefault();
                especificidade.ProtocoloReq.IsProcesso = item.Protocolo.IsProcesso;
                especificidade.ProtocoloReq.Numero     = item.Protocolo.Numero;

                ProcessoAtividadeEsp atividade = new ProcessoAtividadeEsp();
                atividade.Id = item.Id;
                especificidade.Atividades.Add(atividade);
            }

            foreach (var item in titulo.Associados)
            {
                TituloAssociadoEsp tituloAssociado = new TituloAssociadoEsp();

                tituloAssociado.Id = item.Id;
                tituloAssociado.IdRelacionamento = item.IdRelacionamento;
                tituloAssociado.TituloNumero     = item.Numero.Texto;
                tituloAssociado.ModeloSigla      = item.Modelo.Sigla;

                especificidade.TitulosAssociado.Add(tituloAssociado);
            }

            return(especificidade);
        }