예제 #1
0
        public CommandResult <PaginatedQueryResult <Contrato> > ObterPaginado(int pagina, int quantidade, ContratoSort sort, bool ascending)
        {
            var listaBase = ObterBase(sort, ascending);
            var total     = listaBase.Count();
            var skip      = Pagination.PagesToSkip(quantidade, total, pagina);

            var resultado = new PaginatedQueryResult <Contrato>()
            {
                Total = total,
                Data  = listaBase.Skip(skip).Take(quantidade).ToArray()
            };

            return(CommandResult <PaginatedQueryResult <Contrato> > .Valid(resultado));
        }
예제 #2
0
        private IQueryable <Contrato> ObterBase(ContratoSort sort, bool ascending)
        {
            IQueryable <Contrato> query = dataContext.Contrato.Include(c => c.Cliente).AsNoTracking();


            switch (sort)
            {
            case ContratoSort.ColetaContratada:
                if (ascending)
                {
                    query = query.OrderBy(a => a.ColetaContratada).ThenBy(a => a.ColetaContratada);
                }
                else
                {
                    query = query.OrderByDescending(a => a.ColetaContratada).ThenByDescending(a => a.ColetaContratada);
                }
                break;

            case ContratoSort.ValorLimite:
                if (ascending)
                {
                    query = query.OrderBy(a => a.ValorLimite).ThenBy(a => a.ValorLimite);
                }
                else
                {
                    query = query.OrderByDescending(a => a.ValorLimite).ThenByDescending(a => a.ValorLimite);
                }
                break;

            case ContratoSort.ValorUnidade:
                if (ascending)
                {
                    query = query.OrderBy(a => a.ValorUnidade).ThenBy(a => a.ValorUnidade);
                }
                else
                {
                    query = query.OrderByDescending(a => a.ValorUnidade).ThenByDescending(a => a.ValorUnidade);
                }
                break;

            case ContratoSort.FlagTermino:
                if (ascending)
                {
                    query = query.OrderBy(a => a.FlagTermino == null ? 0 : 1).ThenBy(a => a.FlagTermino);
                }
                else
                {
                    query = query.OrderByDescending(a => a.FlagTermino == null ? 0 : 1).ThenByDescending(a => a.FlagTermino);
                }
                break;

            case ContratoSort.DataInicio:
                if (ascending)
                {
                    query = query.OrderBy(a => a.DataInicio == null ? 0 : 1).ThenBy(a => a.DataInicio);
                }
                else
                {
                    query = query.OrderByDescending(a => a.DataInicio == null ? 0 : 1).ThenByDescending(a => a.DataInicio);
                }
                break;

            case ContratoSort.DataTermino:
                if (ascending)
                {
                    query = query.OrderBy(a => a.DataTermino == null ? 0 : 1).ThenBy(a => a.DataTermino);
                }
                else
                {
                    query = query.OrderByDescending(a => a.DataTermino == null ? 0 : 1).ThenByDescending(a => a.DataTermino);
                }
                break;


            case ContratoSort.ClienteNome:
            default:
                if (ascending)
                {
                    query = query.OrderBy(a => a.Cliente.NomeCompleto_RazaoSocial).ThenBy(a => a.Cliente.NomeCompleto_RazaoSocial);
                }
                else
                {
                    query = query.OrderByDescending(a => a.Cliente.NomeCompleto_RazaoSocial).ThenByDescending(a => a.Cliente.NomeCompleto_RazaoSocial);
                }
                break;
            }

            return(query);
        }
예제 #3
0
        public CommandResult <IReadOnlyCollection <Contrato> > Obter(ContratoSort sort, bool ascending)
        {
            var resultado = ObterBase(sort, ascending).ToArray();

            return(CommandResult <IReadOnlyCollection <Contrato> > .Valid(resultado));
        }