public ObservableCollection <mLegislacaoConsulta> Legislacao_C(List <object> obj)
        {
            try
            {
                var _list      = new ObservableCollection <mLegislacaoConsulta>();
                var dataAccess = Data.Factory.Connecting(DataBase.Base.Governo);
                var TipoClass  = new mTipoClassificacao();

                string sqlAcoes = @"SELECT * FROM  Leg_Acoes";
                string sqlLeg   = @"SELECT * FROM Legislacao WHERE 
                                (Tipo LIKE @Tipo) AND (Data BETWEEN @Data1 AND @Data2) AND
                                (Classificado LIKE @Classificado) AND
                                (Resumo LIKE '%' +  @Resumo + '%') AND 
                                (Situacao LIKE @Situacao) AND (Origem LIKE @Origem) AND 
                                (Autor LIKE '%' + @Autor + '%') AND (Excluido = 0)
                                ORDER BY Numero DESC";

                var Acoes = dataAccess.Read(sqlAcoes);

                #region Leis

                if ((bool)obj[0])
                {
                    dataAccess.ClearParameters();
                    dataAccess.AddParameters("@Tipo", "LEI");
                    dataAccess.AddParameters("@Data1", (string)obj[3]);
                    dataAccess.AddParameters("@Data2", (string)obj[4]);
                    dataAccess.AddParameters("@Classificado", (string)obj[9]);
                    dataAccess.AddParameters("@Resumo", (string)obj[5]);
                    dataAccess.AddParameters("@Situacao", (string)obj[6]);
                    dataAccess.AddParameters("@Origem", (string)obj[7]);
                    dataAccess.AddParameters("@Autor", (string)obj[8]);

                    foreach (DataRow leis in dataAccess.Read(sqlLeg).Rows)
                    {
                        var legislacao = new mLegislacaoConsulta();

                        legislacao.Indice = (int)leis["Indice"];
                        legislacao.Tipo   = leis["Tipo"].ToString();

                        legislacao.Numero      = (int)leis["Numero"];
                        legislacao.Complemento = leis["Complemento"].ToString();
                        legislacao.Data        = (DateTime)leis["Data"];
                        legislacao.Publicado   = leis["Publicado"].ToString();
                        legislacao.Resumo      = leis["Resumo"].ToString();

                        legislacao.Classificacao = TipoClass.ToName(legislacao.Tipo, (int)leis["Classificado"]).ToUpper();

                        legislacao.Link = mLink.Create(legislacao.Tipo, legislacao.Data.Year.ToString(), legislacao.Numero);

                        legislacao.Situacao = new mTipoSituacao().Autal((int)leis["Situacao"]);

                        legislacao.Origem     = new mTipoOrigem().Autal((int)leis["Origem"]);
                        legislacao.Autor      = leis["Autor"].ToString();
                        legislacao.Cadastro   = (DateTime)leis["Cadastro"];
                        legislacao.Atualizado = (DateTime)leis["Atualizado"];
                        legislacao.Excluido   = (bool)leis["Excluido"];

                        //var listaAcoes = new Model.ViewAcoesCollections();
                        var listaAcoesExercidas = new List <mAcoesConsulta>();
                        var listaAcoesRecebidas = new List <mAcoesConsulta>();

                        foreach (DataRow aed in Acoes.Rows)
                        {
                            if ((int)aed["NumeroAlvo"] == legislacao.Numero &&
                                aed["TipoAlvo"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                                aed["ComplementoAlvo"].ToString().ToLower() == legislacao.Complemento.ToLower())
                            {
                                var acoes = new mAcoesConsulta();
                                acoes.TipoAlvo        = aed["TipoOrigem"].ToString().ToUpper();
                                acoes.NumeroAlvo      = (int)aed["NumeroOrigem"];
                                acoes.ComplementoAlvo = aed["ComplementoOrigem"].ToString();
                                acoes.DataAlvo        = (DateTime)aed["DataOrigem"];
                                acoes.Acao            = new mAcoesRecebidas().Recebidas((int)(aed["AcaoExecutada"]));
                                acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                                listaAcoesRecebidas.Add(acoes);
                            }

                            if ((int)aed["NumeroOrigem"] == legislacao.Numero &&
                                aed["TipoOrigem"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                                aed["ComplementoOrigem"].ToString().ToLower() == legislacao.Complemento.ToLower())
                            {
                                var acoes = new mAcoesConsulta();
                                acoes.TipoAlvo        = aed["TipoAlvo"].ToString().ToUpper();
                                acoes.NumeroAlvo      = (int)aed["NumeroAlvo"];
                                acoes.ComplementoAlvo = aed["ComplementoAlvo"].ToString();
                                acoes.DataAlvo        = (DateTime)aed["DataAlvo"];
                                acoes.Acao            = new mAcoesExercidas().Exercidas((int)(aed["AcaoExecutada"]));
                                acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                                listaAcoesExercidas.Add(acoes);
                            }
                        }

                        legislacao.ListaAcoesExercidas = listaAcoesExercidas;
                        legislacao.ListaAcoesRecebidas = listaAcoesRecebidas;

                        _list.Add(legislacao);
                    }
                }

                #endregion

                #region Leis Complementares

                if ((bool)obj[1])
                {
                    dataAccess.ClearParameters();
                    dataAccess.AddParameters("@Tipo", "LEI COMPLEMENTAR");
                    dataAccess.AddParameters("@Data1", (string)obj[3]);
                    dataAccess.AddParameters("@Data2", (string)obj[4]);
                    dataAccess.AddParameters("@Classificado", (string)obj[9]);
                    dataAccess.AddParameters("@Resumo", (string)obj[5]);
                    dataAccess.AddParameters("@Situacao", (string)obj[6]);
                    dataAccess.AddParameters("@Origem", (string)obj[7]);
                    dataAccess.AddParameters("@Autor", (string)obj[8]);

                    foreach (DataRow leis in dataAccess.Read(sqlLeg).Rows)
                    {
                        var legislacao = new mLegislacaoConsulta();

                        legislacao.Indice = (int)leis["Indice"];
                        legislacao.Tipo   = leis["Tipo"].ToString();

                        legislacao.Numero      = (int)leis["Numero"];
                        legislacao.Complemento = leis["Complemento"].ToString();
                        legislacao.Data        = (DateTime)leis["Data"];
                        legislacao.Publicado   = leis["Publicado"].ToString();
                        legislacao.Resumo      = leis["Resumo"].ToString();

                        legislacao.Classificacao = TipoClass.ToName(legislacao.Tipo, (int)leis["Classificado"]).ToUpper();

                        legislacao.Link = mLink.Create(legislacao.Tipo, legislacao.Data.Year.ToString(), legislacao.Numero);

                        legislacao.Situacao = new mTipoSituacao().Autal((int)leis["Situacao"]);

                        legislacao.Origem     = new mTipoOrigem().Autal((int)leis["Origem"]);
                        legislacao.Autor      = leis["Autor"].ToString();
                        legislacao.Cadastro   = (DateTime)leis["Cadastro"];
                        legislacao.Atualizado = (DateTime)leis["Atualizado"];
                        legislacao.Excluido   = (bool)leis["Excluido"];

                        //var listaAcoes = new Model.ViewAcoesCollections();
                        var listaAcoesExercidas = new List <mAcoesConsulta>();
                        var listaAcoesRecebidas = new List <mAcoesConsulta>();

                        foreach (DataRow aed in Acoes.Rows)
                        {
                            if ((int)aed["NumeroAlvo"] == legislacao.Numero &&
                                aed["TipoAlvo"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                                aed["ComplementoAlvo"].ToString().ToLower() == legislacao.Complemento.ToLower())
                            {
                                var acoes = new mAcoesConsulta();
                                acoes.TipoAlvo        = aed["TipoOrigem"].ToString().ToUpper();
                                acoes.NumeroAlvo      = (int)aed["NumeroOrigem"];
                                acoes.ComplementoAlvo = aed["ComplementoOrigem"].ToString();
                                acoes.DataAlvo        = (DateTime)aed["DataOrigem"];
                                acoes.Acao            = new mAcoesRecebidas().Recebidas((int)(aed["AcaoExecutada"]));
                                acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                                listaAcoesRecebidas.Add(acoes);
                            }

                            if ((int)aed["NumeroOrigem"] == legislacao.Numero &&
                                aed["TipoOrigem"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                                aed["ComplementoOrigem"].ToString().ToLower() == legislacao.Complemento.ToLower())
                            {
                                var acoes = new mAcoesConsulta();
                                acoes.TipoAlvo        = aed["TipoAlvo"].ToString().ToUpper();
                                acoes.NumeroAlvo      = (int)aed["NumeroAlvo"];
                                acoes.ComplementoAlvo = aed["ComplementoAlvo"].ToString();
                                acoes.DataAlvo        = (DateTime)aed["DataAlvo"];
                                acoes.Acao            = new mAcoesExercidas().Exercidas((int)(aed["AcaoExecutada"]));
                                acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                                listaAcoesExercidas.Add(acoes);
                            }
                        }

                        legislacao.ListaAcoesExercidas = listaAcoesExercidas;
                        legislacao.ListaAcoesRecebidas = listaAcoesRecebidas;

                        _list.Add(legislacao);
                    }
                }

                #endregion

                #region Decretos

                if ((bool)obj[2])
                {
                    dataAccess.ClearParameters();
                    dataAccess.AddParameters("@Tipo", "DECRETO");
                    dataAccess.AddParameters("@Data1", (string)obj[3]);
                    dataAccess.AddParameters("@Data2", (string)obj[4]);
                    dataAccess.AddParameters("@Classificado", (string)obj[10]);
                    dataAccess.AddParameters("@Resumo", (string)obj[5]);
                    dataAccess.AddParameters("@Situacao", (string)obj[6]);
                    dataAccess.AddParameters("@Origem", (string)obj[7]);
                    dataAccess.AddParameters("@Autor", (string)obj[8]);

                    foreach (DataRow leis in dataAccess.Read(sqlLeg).Rows)
                    {
                        var legislacao = new mLegislacaoConsulta();

                        legislacao.Indice = (int)leis["Indice"];
                        legislacao.Tipo   = leis["Tipo"].ToString();

                        legislacao.Numero      = (int)leis["Numero"];
                        legislacao.Complemento = leis["Complemento"].ToString();
                        legislacao.Data        = (DateTime)leis["Data"];
                        legislacao.Publicado   = leis["Publicado"].ToString();
                        legislacao.Resumo      = leis["Resumo"].ToString();

                        legislacao.Classificacao = TipoClass.ToName(legislacao.Tipo, (int)leis["Classificado"]).ToUpper();

                        legislacao.Link = mLink.Create(legislacao.Tipo, legislacao.Data.Year.ToString(), legislacao.Numero);

                        legislacao.Situacao = new mTipoSituacao().Autal((int)leis["Situacao"]);

                        legislacao.Origem     = new mTipoOrigem().Autal((int)leis["Origem"]);
                        legislacao.Autor      = leis["Autor"].ToString();
                        legislacao.Cadastro   = (DateTime)leis["Cadastro"];
                        legislacao.Atualizado = (DateTime)leis["Atualizado"];
                        legislacao.Excluido   = (bool)leis["Excluido"];

                        //var listaAcoes = new Model.ViewAcoesCollections();
                        var listaAcoesExercidas = new List <mAcoesConsulta>();
                        var listaAcoesRecebidas = new List <mAcoesConsulta>();

                        foreach (DataRow aed in Acoes.Rows)
                        {
                            if ((int)aed["NumeroAlvo"] == legislacao.Numero &&
                                aed["TipoAlvo"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                                aed["ComplementoAlvo"].ToString().ToLower() == legislacao.Complemento.ToLower())
                            {
                                var acoes = new mAcoesConsulta();
                                acoes.TipoAlvo        = aed["TipoOrigem"].ToString().ToUpper();
                                acoes.NumeroAlvo      = (int)aed["NumeroOrigem"];
                                acoes.ComplementoAlvo = aed["ComplementoOrigem"].ToString();
                                acoes.DataAlvo        = (DateTime)aed["DataOrigem"];
                                acoes.Acao            = new mAcoesRecebidas().Recebidas((int)(aed["AcaoExecutada"]));
                                acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                                listaAcoesRecebidas.Add(acoes);
                            }

                            if ((int)aed["NumeroOrigem"] == legislacao.Numero &&
                                aed["TipoOrigem"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                                aed["ComplementoOrigem"].ToString().ToLower() == legislacao.Complemento.ToLower())
                            {
                                var acoes = new mAcoesConsulta();
                                acoes.TipoAlvo        = aed["TipoAlvo"].ToString().ToUpper();
                                acoes.NumeroAlvo      = (int)aed["NumeroAlvo"];
                                acoes.ComplementoAlvo = aed["ComplementoAlvo"].ToString();
                                acoes.DataAlvo        = (DateTime)aed["DataAlvo"];
                                acoes.Acao            = new mAcoesExercidas().Exercidas((int)(aed["AcaoExecutada"]));
                                acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                                listaAcoesExercidas.Add(acoes);
                            }
                        }

                        legislacao.ListaAcoesExercidas = listaAcoesExercidas;
                        legislacao.ListaAcoesRecebidas = listaAcoesRecebidas;

                        _list.Add(legislacao);
                    }
                }

                #endregion

                return(_list);
            }
            catch
            {
                return(null);
            }
        }
        public void GoSearch(TypeSearch searchtype, List <object> obj, BackgroundWorker bgk)
        {
            ObservableCollection <mLegislacaoConsulta> listdoc = new ObservableCollection <mLegislacaoConsulta>();

            var dataAccess = Data.Factory.Connecting(DataBase.Base.Governo);

            //System.Windows.MessageBox.Show(searchtype.ToString());

            string tipo          = (string)obj[0];
            int    numero        = (int)obj[1];
            string classificacao = (string)obj[2];
            string origem        = (string)obj[3];
            string situacao      = (string)obj[4];
            string autor         = (string)obj[5];
            string resumo        = (string)obj[6];
            string dataI         = obj[7].ToString();
            string dataF         = obj[8].ToString();

            if (tipo == "...")
            {
                tipo = "%";
            }

            if (resumo == null || resumo == string.Empty)
            {
                resumo = "%";
            }

            if (classificacao == "0" || classificacao == null)
            {
                classificacao = "%";
            }

            if (situacao == "0" || situacao == null)
            {
                situacao = "%";
            }

            if (origem == "0" || origem == null)
            {
                origem = "%";
            }

            if (autor == null || autor == string.Empty)
            {
                autor = "%";
            }

            try
            {
                string SqlCommand = string.Empty;

                switch (searchtype)
                {
                case TypeSearch.Simple:
                    dataAccess.ClearParameters();
                    dataAccess.AddParameters("@Tipo", tipo);
                    dataAccess.AddParameters("@Numero", numero);
                    dataAccess.AddParameters("@Complemento", "%");
                    SqlCommand = SqlCollections.SelectSimples;
                    break;

                case TypeSearch.Detailed:
                    dataAccess.ClearParameters();
                    dataAccess.AddParameters("@Tipo", tipo);
                    dataAccess.AddParameters("@Data1", dataI);
                    dataAccess.AddParameters("@Data2", dataF);
                    dataAccess.AddParameters("@Resumo", resumo);
                    dataAccess.AddParameters("@Classificado", classificacao);
                    dataAccess.AddParameters("@Situacao", situacao);
                    dataAccess.AddParameters("@Origem", origem);
                    dataAccess.AddParameters("@Autor", autor);
                    SqlCommand = SqlCollections.SelectDetalhado;
                    break;
                }

                var Acoes = dataAccess.Read(SqlCollections.AcoesSemFiltro);

                int vreg = dataAccess.Read(SqlCommand).Rows.Count;

                mTipoClassificacao TipoClass = new mTipoClassificacao();

                int progresso = 0;
                int cont_reg  = 0;

                foreach (DataRow leg in dataAccess.Read(SqlCommand).Rows)
                {
                    cont_reg += 1;

                    var legislacao = new mLegislacaoConsulta();

                    legislacao.Indice = (int)leg["Indice"];
                    legislacao.Tipo   = leg["Tipo"].ToString();

                    legislacao.Numero      = (int)leg["Numero"];
                    legislacao.Complemento = leg["Complemento"].ToString();
                    legislacao.Data        = (DateTime)leg["Data"];
                    legislacao.Publicado   = leg["Publicado"].ToString();
                    legislacao.Resumo      = leg["Resumo"].ToString();

                    legislacao.Classificacao = TipoClass.ToName(legislacao.Tipo, (int)leg["Classificado"]).ToUpper();

                    legislacao.Link = mLink.Create(legislacao.Tipo, legislacao.Data.Year.ToString(), legislacao.Numero);

                    legislacao.Situacao = new mTipoSituacao().Autal((int)leg["Situacao"]);

                    legislacao.Origem     = new mTipoOrigem().Autal((int)leg["Origem"]);
                    legislacao.Autor      = leg["Autor"].ToString();
                    legislacao.Cadastro   = (DateTime)leg["Cadastro"];
                    legislacao.Atualizado = (DateTime)leg["Atualizado"];
                    legislacao.Excluido   = (bool)leg["Excluido"];

                    //var listaAcoes = new Model.ViewAcoesCollections();
                    var listaAcoesExercidas = new List <mAcoesConsulta>();
                    var listaAcoesRecebidas = new List <mAcoesConsulta>();

                    foreach (DataRow aed in Acoes.Rows)
                    {
                        if ((int)aed["NumeroAlvo"] == legislacao.Numero &&
                            aed["TipoAlvo"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                            aed["ComplementoAlvo"].ToString().ToLower() == legislacao.Complemento.ToLower())
                        {
                            var acoes = new mAcoesConsulta();
                            acoes.TipoAlvo        = aed["TipoOrigem"].ToString().ToUpper();
                            acoes.NumeroAlvo      = (int)aed["NumeroOrigem"];
                            acoes.ComplementoAlvo = aed["ComplementoOrigem"].ToString();
                            acoes.DataAlvo        = (DateTime)aed["DataOrigem"];
                            acoes.Acao            = new mAcoesRecebidas().Recebidas((int)(aed["AcaoExecutada"]));
                            acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                            listaAcoesRecebidas.Add(acoes);
                        }

                        if ((int)aed["NumeroOrigem"] == legislacao.Numero &&
                            aed["TipoOrigem"].ToString().ToLower() == legislacao.Tipo.ToLower() &&
                            aed["ComplementoOrigem"].ToString().ToLower() == legislacao.Complemento.ToLower())
                        {
                            var acoes = new mAcoesConsulta();
                            acoes.TipoAlvo        = aed["TipoAlvo"].ToString().ToUpper();
                            acoes.NumeroAlvo      = (int)aed["NumeroAlvo"];
                            acoes.ComplementoAlvo = aed["ComplementoAlvo"].ToString();
                            acoes.DataAlvo        = (DateTime)aed["DataAlvo"];
                            acoes.Acao            = new mAcoesExercidas().Exercidas((int)(aed["AcaoExecutada"]));
                            acoes.Link            = mLink.Create(acoes.TipoAlvo, acoes.DataAlvo.Year.ToString(), acoes.NumeroAlvo);
                            listaAcoesExercidas.Add(acoes);
                        }
                    }


                    progresso = ((cont_reg + 1) * 100) / vreg;
                    bgk.ReportProgress(progresso);


                    if (bgk.CancellationPending == true)
                    {
                        break;
                    }

                    legislacao.ListaAcoesExercidas = listaAcoesExercidas;
                    legislacao.ListaAcoesRecebidas = listaAcoesRecebidas;

                    listdoc.Add(legislacao);
                }

                Lista = listdoc;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                dataAccess = null;
            }
        }