public IEnumerable <CandidatoViewModel> GetAll()
        {
            List <CandidatoViewModel> listaCandidatoViewModel = new List <CandidatoViewModel>();

            foreach (var candidato in _candidatoRepository.GetAll())
            {
                CandidatoViewModel candidatoViewModel = new CandidatoViewModel {
                    Nome    = candidato.Nome,
                    Apelido = candidato.Apelido,
                    CPF     = candidato.CPF
                };
                listaCandidatoViewModel.Add(candidatoViewModel);
            }
            return(listaCandidatoViewModel);
        }
        private IQueryable <Candidato> FilterString(IDictionary <string, string> customFilter)
        {
            var query = _candidatoRepository.GetAll();

            // Solo devolvemos candidatos activos.
            query = query.Where(x => x.IsActivo);

            if (customFilter.ContainsKey("Descartado"))
            {
                query = query.Where(x => !x.Candidaturas.Any(y => y.DescartarFuturasCandidaturas));
            }

            if (customFilter.ContainsKey("Nombre") && customFilter["Nombre"] != string.Empty)
            {
                var nombre = customFilter["Nombre"];
                query = query.Where(x => x.Nombre.Contains(nombre));
            }

            if (customFilter.ContainsKey("Apellidos") && customFilter["Apellidos"] != string.Empty)
            {
                var apellidos = customFilter["Apellidos"];
                query = query.Where(x => x.Apellidos.Contains(apellidos));
            }

            if (customFilter.ContainsKey("TipoTitulacion") && customFilter["TipoTitulacion"] != string.Empty)
            {
                var titulacionId = Convert.ToInt32(customFilter["TipoTitulacion"]);
                query = query.Where(x => x.TitulacionId == titulacionId);
            }

            if (customFilter.ContainsKey("TipoIdentificacion") && customFilter["TipoIdentificacion"] != string.Empty)
            {
                var tipoIdentificacionId = Convert.ToInt32(customFilter["TipoIdentificacion"]);
                query = query.Where(x => x.TipoIdentificacionId == tipoIdentificacionId);
            }

            if (customFilter.ContainsKey("NumeroIdentificacion") && customFilter["NumeroIdentificacion"] != string.Empty)
            {
                var numIdentificacion = customFilter["NumeroIdentificacion"];
                query = query.Where(x => string.Compare(x.NumeroIdentificacion, numIdentificacion, true) == 0);
            }


            //se filtra por el centro del usuario logado salvo cuando hay un Centro de busqueda que buscaria los del centro en cuestion (CentroSearch)
            if (customFilter.ContainsKey("CentroUsuarioId") && (customFilter["CentroUsuarioId"] != string.Empty || customFilter.ContainsKey("CentroSearch")))
            {
                if (customFilter.ContainsKey("CentroSearch"))
                {
                    if (customFilter["CentroSearch"] != string.Empty)
                    {
                        var CentroUsuarioId = Convert.ToInt32(customFilter["CentroSearch"]);
                        query = query.Where(x => x.Usuario.CentroId == CentroUsuarioId);
                    }
                    else
                    {
                        if (customFilter["CentroUsuarioId"] != string.Empty)
                        {
                            var CentroUsuarioId = Convert.ToInt32(customFilter["CentroUsuarioId"]);
                            query = query.Where(x => x.Usuario.CentroId == CentroUsuarioId);
                        }
                    }
                }
                else
                {
                    var CentroUsuarioId = Convert.ToInt32(customFilter["CentroUsuarioId"]);
                    query = query.Where(x => x.Usuario.CentroId == CentroUsuarioId);
                }
            }

            if (customFilter.ContainsKey("CentroSearch") && !customFilter.ContainsKey("CentroUsuarioId") && customFilter["CentroSearch"] != string.Empty)
            {
                var CentroUsuarioId = Convert.ToInt32(customFilter["CentroSearch"]);
                query = query.Where(x => x.Usuario.Centro.CentroId == CentroUsuarioId);
            }

            if (customFilter.ContainsKey("TipoTecnologia") && customFilter["TipoTecnologia"] != string.Empty)
            {
                var tipoTecnologiaId = Convert.ToInt32(customFilter["TipoTecnologia"]);
                query = query.Where(x => x.CandidatoExperiencias.Any(y => y.TipoTecnologiaId == tipoTecnologiaId));
            }

            if (customFilter.ContainsKey("Email") && customFilter["Email"] != string.Empty)
            {
                var email = customFilter["Email"].RemoveDiacritics();
                query = query.Where(x => x.CandidatoContactos.Any(y => y.IsActivo && y.Contacto.Contains(email) && y.TipoMedioContactoId == (int)TipoContactoEnum.Email));
            }

            if (customFilter.ContainsKey("Telefono") && customFilter["Telefono"] != string.Empty)
            {
                var telefono = customFilter["Telefono"].RemoveDiacritics().Replace(" ", "");
                query = query.Where(x => x.CandidatoContactos.Any(y => y.IsActivo && y.Contacto.Replace(" ", "").Contains(telefono) && y.TipoMedioContactoId == (int)TipoContactoEnum.Telefono));
            }

            if (customFilter.ContainsKey("CentroEducativoId") && customFilter["CentroEducativoId"] != string.Empty)
            {
                var centroEducativoId = Convert.ToInt32(customFilter["CentroEducativoId"]);
                query = query.Where(x => x.CandidatoCentroEducativoId == centroEducativoId);
            }

            if (customFilter.ContainsKey("AnioRegresado") && !string.IsNullOrEmpty(customFilter["AnioRegresado"]))
            {
                var anioRegresado = customFilter["AnioRegresado"];
                query = query.Where(x => x.AnioRegresado.Contains(anioRegresado));
            }

            if (customFilter.ContainsKey("NivelIdioma") && customFilter["NivelIdioma"] != string.Empty)
            {
                var nivelIdiomaId = Convert.ToInt32(customFilter["NivelIdioma"]);
                query = query.Where(x => x.CandidatoIdiomas.Any(y => y.NivelIdiomaId >= nivelIdiomaId && y.IdiomaId == 15));
            }

            return(query);
        }