public void BuscarFuncionarios(int quantidadePorPagina, ref PaginacaoGenericaViewModel paginacao, ref List <Funcionario> funcionarios, BuscarGridControlePontoFeriasFuncionarioViewModel busca, int pagina = 1) { if (!busca.UnidadeId.HasValue && !busca.SupervisorId.HasValue && !busca.FuncionarioId.HasValue && string.IsNullOrEmpty(busca.ColunaUnidade) && string.IsNullOrEmpty(busca.ColunaSupervisor) && string.IsNullOrEmpty(busca.ColunaFuncionario)) { var quantidadeFuncionarios = _controleFeriasServico.BuscarPor(x => x.AutorizadoTrabalhar).Count; paginacao = new PaginacaoGenericaViewModel(quantidadePorPagina, pagina, quantidadeFuncionarios); var controleferias = _controleFeriasServico.BuscarPor(x => x.AutorizadoTrabalhar && x.ListaPeriodoPermitido.Any()).ToList(); funcionarios = controleferias.Select(x => x.Funcionario).Distinct().ToList(); funcionarios = funcionarios.OrderBy(x => x.Pessoa.Nome)?.ItensDaPagina(paginacao.RegistroInicial, paginacao.RegistrosPorPagina)?.ToList(); } else { var predicate = PredicateBuilder.True <ControleFerias>(); predicate = predicate.And(x => x.AutorizadoTrabalhar && x.ListaPeriodoPermitido.Any()); if (busca.UnidadeId.HasValue) { predicate = predicate.And(x => x.Funcionario.Unidade.Id == busca.UnidadeId.Value); } if (busca.SupervisorId.HasValue) { predicate = predicate.And(x => x.Funcionario.Supervisor.Id == busca.SupervisorId.Value); } if (busca.FuncionarioId.HasValue) { predicate = predicate.And(x => x.Funcionario.Id == busca.FuncionarioId.Value); } if (!string.IsNullOrEmpty(busca.ColunaUnidade)) { predicate = predicate.And(x => x.Funcionario.Unidade.Nome.ToLower().Contains(busca.ColunaUnidade.ToLower())); } if (!string.IsNullOrEmpty(busca.ColunaSupervisor)) { predicate = predicate.And(x => x.Funcionario.Supervisor.Pessoa.Nome.ToLower().Contains(busca.ColunaSupervisor.ToLower())); } if (!string.IsNullOrEmpty(busca.ColunaFuncionario)) { predicate = predicate.And(x => x.Funcionario.Pessoa.Nome.ToLower().Contains(busca.ColunaFuncionario.ToLower())); } funcionarios = _controleFeriasServico.BuscarPor(predicate)?.Select(x => x.Funcionario)?.ToList(); paginacao = new PaginacaoGenericaViewModel(quantidadePorPagina, pagina, funcionarios.Count); funcionarios = funcionarios.Distinct().OrderBy(x => x.Pessoa.Nome)?.ItensDaPagina(paginacao.RegistroInicial, paginacao.RegistrosPorPagina)?.ToList(); } }
public void BuscarFuncionarios(int quantidadePorPagina, ref PaginacaoGenericaViewModel paginacao, ref List <Funcionario> funcionarios, BuscarGridControlePontoFuncionarioViewModel busca, int pagina = 1) { if (!busca.UnidadeId.HasValue && !busca.SupervisorId.HasValue && !busca.FuncionarioId.HasValue && string.IsNullOrEmpty(busca.ColunaUnidade) && string.IsNullOrEmpty(busca.ColunaSupervisor) && string.IsNullOrEmpty(busca.ColunaFuncionario)) { var quantidadeFuncionarios = _funcionarioServico.Contar(); paginacao = new PaginacaoGenericaViewModel(quantidadePorPagina, pagina, quantidadeFuncionarios); funcionarios = _funcionarioServico.BuscarPorIntervaloOrdernadoPorAlias(paginacao.RegistroInicial, paginacao.RegistrosPorPagina, "Pessoa.Nome").ToList(); } else { var predicate = PredicateBuilder.True <Funcionario>(); if (busca.UnidadeId.HasValue) { predicate = predicate.And(x => x.Unidade.Id == busca.UnidadeId.Value); } if (busca.SupervisorId.HasValue) { predicate = predicate.And(x => x.Supervisor.Id == busca.SupervisorId.Value); } if (busca.FuncionarioId.HasValue) { predicate = predicate.And(x => x.Id == busca.FuncionarioId.Value); } if (!string.IsNullOrEmpty(busca.ColunaUnidade)) { predicate = predicate.And(x => x.Unidade.Nome.ToLower().Contains(busca.ColunaUnidade.ToLower())); } if (!string.IsNullOrEmpty(busca.ColunaSupervisor)) { predicate = predicate.And(x => x.Supervisor.Pessoa.Nome.ToLower().Contains(busca.ColunaSupervisor.ToLower())); } if (!string.IsNullOrEmpty(busca.ColunaFuncionario)) { predicate = predicate.And(x => x.Pessoa.Nome.ToLower().Contains(busca.ColunaFuncionario.ToLower())); } funcionarios = _funcionarioServico.BuscarPor(predicate).ToList(); paginacao = new PaginacaoGenericaViewModel(quantidadePorPagina, pagina, funcionarios.Count); funcionarios = funcionarios.OrderBy(x => x.Pessoa.Nome).ToList(); funcionarios = funcionarios.ItensDaPagina(paginacao.RegistroInicial, paginacao.RegistrosPorPagina).ToList(); } }