/// <summary>
        /// Este método retorna uma Escolar conforme o código do parâmetro
        /// </summary>
        /// <param name="codigoEscolar"> Representa o código de Escolar</param>
        /// <returns></returns>

        public Escolar SalvarEscolar(Escolar objEscolar)
        {
            EscolarDados objEscolarDados = new EscolarDados();

            objEscolar = objEscolarDados.Salvar(objEscolar);

            return objEscolar;
        }
        /// <summary>
        /// Consulta os assistido pelos dados contidos no ConsultarAssistidoDTO
        /// </summary>
        /// <param name="filtro"></param>
        /// <returns></returns>
        public List<Assistido> Consultar(ConsultarAssistidoDTO filtro)
        {
            SqlCommand comando = new SqlCommand();
            comando.Connection = base.Conectar();

            SqlDataReader leitorDados;

            String sql = "select * from Assistido A inner join Pessoa P on A.CodigoAssistido = P.CodigoPessoa where ";

            SqlParameter paramCodigoAssistido = new SqlParameter("@codigoAssistido", System.Data.DbType.Int32);
            if (filtro.CodigoAssisitoValor.HasValue)
            {
                paramCodigoAssistido.Value = filtro.CodigoAssisitoValor.Value;
                sql += @"A.CodigoAssistido = @codigoAssistido and ";
            }
            else
                paramCodigoAssistido.Value = DBNull.Value;

            SqlParameter paramNome = new SqlParameter("@nome", System.Data.DbType.String);
            if (!String.IsNullOrEmpty(filtro.NomeAssistidoValor))
            {
                paramNome.Value = "%" + filtro.NomeAssistidoValor + "%";
                sql += @"P.Nome like @nome and ";
            }
            else
                paramNome.Value = DBNull.Value;

            SqlParameter paramStatusAssistido = new SqlParameter("@statusAssistido", System.Data.DbType.String);
            if (!String.IsNullOrEmpty(filtro.StatusAssistidoValor))
            {
                paramStatusAssistido.Value = filtro.StatusAssistidoValor;
                sql += "A.StatusAssistido = @statusAssistido and ";
            }
            else
                paramStatusAssistido.Value = DBNull.Value;

            SqlParameter paramStatusCadastro = new SqlParameter("@statusCadastro", System.Data.DbType.Boolean);
            if (filtro.StatusCadastroValor.HasValue)
            {
                paramStatusCadastro.Value = filtro.StatusCadastroValor.Value;
                sql += "P.Ativo = @statusCadastro and ";
            }
            else
                paramStatusCadastro.Value = DBNull.Value;

            SqlParameter paramEstadoSaude = new SqlParameter("@estadoSaude", System.Data.DbType.String);
            if (!String.IsNullOrEmpty(filtro.EstadoSaudeValor))
            {
                paramEstadoSaude.Value = filtro.EstadoSaudeValor;
                sql += "EstadoSaude = @estadoSaude and ";
            }
            else
                paramEstadoSaude.Value = DBNull.Value;

            SqlParameter paramDataEntrada = new SqlParameter("@dataEntrada", System.Data.DbType.DateTime);
            if (filtro.DataEntradaValor.HasValue)
            {
                paramDataEntrada.Value = filtro.DataEntradaValor.Value;
                sql += "DataEntrada >= @dataEntrada and "; 
            }
            else
                paramDataEntrada.Value = DBNull.Value;

            SqlParameter paramDataSaida = new SqlParameter("@dataSaida", System.Data.DbType.DateTime);
            if (filtro.DataSaidaValor.HasValue)
            {
                paramDataSaida.Value = filtro.DataSaidaValor.Value;
                sql += "(DataSaida <= @dataSaida or DataSaida is null) and ";
            }
            else
                paramDataSaida.Value = DBNull.Value;

            
            if (sql.EndsWith("where "))
                sql = sql.Replace("where ", "");
            else if (sql.EndsWith("and "))
                sql = sql.Remove(sql.Length - 4);
            
            comando.CommandText = sql;
            comando.CommandType = System.Data.CommandType.Text;

            comando.Parameters.Add(paramCodigoAssistido);
            comando.Parameters.Add(paramNome);
            comando.Parameters.Add(paramStatusAssistido);
            comando.Parameters.Add(paramStatusCadastro);
            comando.Parameters.Add(paramEstadoSaude);
            comando.Parameters.Add(paramDataEntrada);
            comando.Parameters.Add(paramDataSaida);

            leitorDados = comando.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

            List<Assistido> assistidoLista = new List<Assistido>();
            Assistido objAssistido;
            ContatoDados objContatoDados = new ContatoDados();

            while (leitorDados.Read())
            {
                objAssistido = new Assistido();

                //Dados Tabela Pessoa
                objAssistido.CodigoPessoa = Convert.ToInt32(leitorDados["CodigoPessoa"]);
                if (leitorDados["CodigoContato"] != DBNull.Value)
                    objAssistido.Contato_CodigoContato = Convert.ToInt32(leitorDados["CodigoContato"]);
                if (objAssistido.Contato_CodigoContato.HasValue)
                    objAssistido.Contato = objContatoDados.Obter(objAssistido.Contato_CodigoContato.Value);
                objAssistido.CodigoCasaLar = Convert.ToInt32(leitorDados["CodigoCasaLar"]);
                objAssistido.Nome = leitorDados["Nome"].ToString();
                objAssistido.Sexo = leitorDados["Sexo"].ToString();
                objAssistido.CPF = leitorDados["CPF"].ToString();
                objAssistido.RG = leitorDados["RG"].ToString();
                objAssistido.TituloEleitor = leitorDados["TituloEleitor"].ToString();
                objAssistido.DataNascimento = Convert.ToDateTime(leitorDados["DataNascimento"]);
                objAssistido.Nacionalidade = leitorDados["Nacionalidade"].ToString();
                objAssistido.Naturalidade = leitorDados["Naturalidade"].ToString();
                objAssistido.Foto = leitorDados["Foto"].ToString();
                objAssistido.TipoPessoa = leitorDados["TipoPessoa"].ToString();
                objAssistido.Ativo = Convert.ToBoolean(leitorDados["Ativo"]);

                //Dados Tabela Assistido
                objAssistido.CodigoAssistido = Convert.ToInt32(leitorDados["CodigoAssistido"]);
                objAssistido.StatusAssistido = leitorDados["StatusAssistido"].ToString();
                if (leitorDados["CertidaoNascimento"] != DBNull.Value)
                    objAssistido.CertidaoNascimento = leitorDados["CertidaoNascimento"].ToString();
                objAssistido.DataEntrada = Convert.ToDateTime(leitorDados["DataEntrada"]);
                if (leitorDados["DataSaida"] != DBNull.Value)
                    objAssistido.DataSaida = Convert.ToDateTime(leitorDados["DataSaida"]); ;
                objAssistido.EstadoSaude = leitorDados["EstadoSaude"].ToString();
                objAssistido.Peso = Convert.ToDecimal(leitorDados["Peso"]);
                objAssistido.Etnia = leitorDados["Etnia"].ToString();
                objAssistido.Altura = Convert.ToDecimal(leitorDados["Altura"]);
                objAssistido.TamanhoCamisa = leitorDados["TamCamisa"].ToString();
                objAssistido.TamanhoCalca = leitorDados["TamCalca"].ToString();
                objAssistido.TamanhoCalcado = leitorDados["TamCalcado"].ToString();
                objAssistido.Dormitorio = leitorDados["Dormitorio"].ToString(); ;
                objAssistido.Deficiente = leitorDados["Deficiente"].ToString();
                objAssistido.Hobby = leitorDados["Hobby"].ToString();
                objAssistido.HistoricoVida = leitorDados["HistoricoVida"].ToString();
                objAssistido.Pai = leitorDados["NomePai"].ToString();
                objAssistido.Mae = leitorDados["NomeMae"].ToString();
                objAssistido.PaiVivo = leitorDados["PaiVivo"].ToString();
                objAssistido.MaeViva = leitorDados["MaeViva"].ToString();
                objAssistido.CPFPai = leitorDados["CPFPai"].ToString();
                objAssistido.CPFMae = leitorDados["CPFMae"].ToString();
                objAssistido.RGPai = leitorDados["RGPai"].ToString();
                objAssistido.RGMae = leitorDados["RGMae"].ToString();
                objAssistido.TelefonePai = leitorDados["TelefonePai"].ToString();
                objAssistido.TelefoneMae = leitorDados["TelefoneMae"].ToString();
                if (leitorDados["QtdIrmaos"] != DBNull.Value)
                    objAssistido.QtdIrmaos = Convert.ToInt32(leitorDados["QtdIrmaos"]);
                objAssistido.ResponsavelLegal = leitorDados["NomeResponsavel"].ToString();
                objAssistido.CPFResponsavel = leitorDados["CpfResponsavel"].ToString();

                if (leitorDados["CodigoContatoResponsavel"] != DBNull.Value)
                    objAssistido.CodigoContatoResponsavel = Convert.ToInt32(leitorDados["CodigoContatoResponsavel"]);
                else
                    objAssistido.CodigoContatoResponsavel = null;

                //Obtém dados de Contato do Responsável
                if (objAssistido.CodigoContatoResponsavel.HasValue)
                {
                    objAssistido.ContatoResponsavel = objContatoDados.Obter(objAssistido.CodigoContatoResponsavel.Value);
                }
                EscolarDados objEscolarDados = new EscolarDados();
                //objAssistido.Escolar = objEscolarDados.Ob

                assistidoLista.Add(objAssistido);
            }
            
            return assistidoLista;
        }
 /// <summary>
 /// Consulta a tabela Escolar e retorna resultados de acordo com o preenchimento do filtro 
 /// </summary>
 public List<GradeConsultarEscolarDTO> ConsultarEscolar(ParametroConsultarEscolarDTO objParametroConsultarEscolarDTO)
 {
     EscolarDados objEscolarDados = new EscolarDados();
     
     return objEscolarDados.Consultar(objParametroConsultarEscolarDTO);
 }
        /// <summary>
        /// Este método exclui a Escolar e o seu respectivo contato.
        /// </summary>
        /// <param name="codigoEscolar"></param>
        /// <param name="codigoContato"></param>
        /// <returns></returns>
        public bool ExcluirEscolar(int codigoEscolar, int codigoContato)
        {
            EscolarDados objEscolarDados = new EscolarDados();

            return objEscolarDados.Excluir(codigoEscolar, codigoContato);
        }
        /// <summary>
        /// Este método obtém uma Escolar pelo seu código
        /// </summary>
        /// <param name="codigoEscolar"></param>
        /// <returns></returns>
        public Escolar ObterEscolar(int codigoEscolar)
        {
            EscolarDados objEscolarDados = new EscolarDados();

            return objEscolarDados.Obter(codigoEscolar);
        }