public IEnumerable <NotaCompra> Filtrar(string dataInicial, string dataFinal, Usuario usuario)
        {
            IQueryOver <NotaCompra, NotaCompra>      query          = Session.QueryOver <NotaCompra>();
            IQueryOver <HistoricoAprovacao, Usuario> joinHistoricos = Session.QueryOver <HistoricoAprovacao>()
                                                                      .JoinQueryOver(x => x.Usuario)
                                                                      .Where(x => x.Id == usuario.Id);

            query = query.Where(x => x.ValorTotal >= usuario.ValorMinVistoAprovacao &&
                                x.ValorTotal <= usuario.ValorMaxVistoAprovacao &&
                                //x.StatusOperacao == usuario.Papel &&
                                x.Status == (byte)TipoStatus.Pendente);


            int[] ids = joinHistoricos.List().Select(x => x.NotaCompra.Id).ToArray();

            query.WhereNot(x => x.Id.IsIn(ids));

            if (!string.IsNullOrEmpty(dataInicial) && !string.IsNullOrEmpty(dataFinal))
            {
                var dtInicial = DateTime.Parse(dataInicial);
                var dtFinal   = DateTime.Parse(dataFinal);
                query = query.Where(x => x.DataEmissao >= dtInicial.Date && x.DataEmissao.Date <= dtFinal);
            }

            if (!string.IsNullOrEmpty(dataInicial))
            {
                var dtInicial = DateTime.Parse(dataInicial);
                query = query.Where(x => x.DataEmissao >= dtInicial.Date && x.DataEmissao.Date <= DateTime.Now.Date);
            }

            if (!string.IsNullOrEmpty(dataFinal))
            {
                var dtFinal = DateTime.Parse(dataFinal);
                query = query.Where(x => x.DataEmissao.Date <= dtFinal);
            }

            return(query.List());
        }
 public IQueryOver <TRoot, TSubType> WhereNot(Expression <Func <TSubType, bool> > expression)
 {
     MainQuery.WhereNot(expression);
     return(this);
 }
示例#3
0
 public static IQueryOver <TRoot, TSub> AddWhereNot <TRoot, TSub>(this IQueryOver <TRoot, TSub> queryOver,
                                                                  Expression <Func <TSub, bool> > expr)
 {
     return(queryOver.WhereNot(expr));
 }