示例#1
0
        public FiltroAprovarRepasseDto FiltrarAprovar(FiltroAprovarRepasseDto filtro)
        {
            var query = DbSet.Include(x => x.ServicoContratadoDestino)
                        .ThenInclude(x => x.EscopoServico)
                        .Include(x => x.ServicoContratadoDestino)
                        .Include(x => x.ServicoContratadoOrigem)
                        .ThenInclude(x => x.EscopoServico)
                        .AsNoTracking();

            if (!filtro.AvaliarTodos)
            {
                query = query.Where(x => x.ServicoContratadoDestino.IdCelula == filtro.Celula);
            }

            if (filtro.AvaliarTodos)
            {
                query = FiltrarPelaCelula(filtro, query);
            }

            query = FiltrarPeloPeriodo(filtro, query);

            query = FiltrarPeloTipoDeConsulta(filtro, query);

            filtro.Total = query.Count();
            var dados = query.Select(p => new GridRepasseAprovarDto
            {
                Usuario       = p.Usuario,
                DataAlteracao = p.DataAlteracao,
                Id            = p.Id,
                Data          = p.DtRepasse,
                Destino       = p.ServicoContratadoDestino.IdCelula,
                Origem        = p.ServicoContratadoOrigem.IdCelula,
                Projeto       = filtro.TpRepasse == 1 ? p.ServicoContratadoDestino.EscopoServico.NmEscopoServico : p.ServicoContratadoOrigem.EscopoServico.NmEscopoServico,
                Cliente       = "",
                VlUnitario    = p.VlUnitario,
                VlRepasse     = p.VlTotal,
                Horas         = p.QtdRepasse,
                Aprovado      = p.FlStatus
            });

            filtro.CampoOrdenacao = filtro.CampoOrdenacao.First().ToString().ToUpper() + filtro.CampoOrdenacao.Substring(1);
            if (filtro.OrdemOrdenacao == "asc")
            {
                dados = dados.OrderBy(x => x.GetType().GetProperty(filtro.CampoOrdenacao).GetValue(x));
            }
            else if (filtro.OrdemOrdenacao == "desc")
            {
                dados = dados.OrderByDescending(x => x.GetType().GetProperty(filtro.CampoOrdenacao).GetValue(x));
            }
            else
            {
                dados = dados.OrderBy(x => x.Aprovado.ElementAt(1)).ThenBy(x => x.Id);
            }

            filtro.Valores = dados.Skip((filtro.Pagina) * filtro.QuantidadePorPagina).Take(filtro.QuantidadePorPagina).ToList();;

            return(filtro);
        }
示例#2
0
        private static IQueryable <Repasse> FiltrarPeloPeriodo(FiltroAprovarRepasseDto filtro, IQueryable <Repasse> query)
        {
            if (filtro.DtInicial.HasValue && filtro.DtFinal.HasValue)
            {
                query = query.Where(x => x.DtRepasse >= filtro.DtInicial && x.DtRepasse <= filtro.DtFinal);
            }

            return(query);
        }
示例#3
0
        private static IQueryable <Repasse> FiltrarPelaCelula(FiltroAprovarRepasseDto filtro, IQueryable <Repasse> query)
        {
            if (!filtro.AvaliarTodos)
            {
                query = query.Where(x => x.ServicoContratadoDestino.IdCelula == filtro.Celula);
            }

            if (filtro.CelulasInteresse.Any())
            {
                query = filtro.TpRepasse == 1 ? query.Where(x => filtro.CelulasInteresse.Contains(x.ServicoContratadoDestino.IdCelula)) : query.Where(x => filtro.CelulasInteresse.Contains(x.ServicoContratadoOrigem.IdCelula));
            }

            return(query);
        }
示例#4
0
        private static IQueryable <Repasse> FiltrarPeloTipoDeConsulta(FiltroAprovarRepasseDto filtro, IQueryable <Repasse> query)
        {
            switch (filtro.TpConsulta)
            {
            case 1:
                query = query.Where(x => x.FlStatus == "NA");
                break;

            case 2:
                query = query.Where(x => x.FlStatus == "AP");
                break;

            case 3:
                query = query.Where(x => x.FlStatus == "NG");
                break;
            }

            return(query);
        }
示例#5
0
        public FiltroAprovarRepasseDto FiltrarAprovar(FiltroAprovarRepasseDto filtro)
        {
            var result = _repasseRepository.FiltrarAprovar(filtro);

            return(result);
        }