private void btConfirmar_Click(object sender, RoutedEventArgs e)
        {
            Tipo_produto_filtro_validade tipo = (Tipo_produto_filtro_validade)cbTipo.SelectedValue;
            EstoqueController            ec   = new EstoqueController();
            List <Estoque> list = ec.ProdutosVencendo(int.Parse(txDias.Text), tipo);

            DataTable dtProds = new DsProdutosVencendoValidade().Tables["Produtos"];

            list.ForEach(es => dtProds.Rows.Add(
                             es.Produtos.Referencia,
                             es.Produtos.Ean,
                             (string.IsNullOrEmpty(es.Lote) ? "" : (es.Lote + "SL" + es.Sublote)),
                             es.Produtos.Descricao,
                             es.Quant,
                             es.Data_validade,
                             es.Produtos.Localizacao
                             ));

            IControllerReport cr = ReportController.GetInstance();

            cr.AddDataSource("Produtos", dtProds);
            cr.AddDataSource("Loja", new List <Lojas>()
            {
                UsuariosController.LojaAtual
            });
            cr.AddDataSource("Usuario", new List <Usuarios>()
            {
                UsuariosController.UsuarioAtual
            });

            ReportViewWindow rv = new ReportViewWindow("Produtos vencidos e vencendo", cr.GetReportDocument("SLD003"));
        }
        internal List <Estoque> ProdutosVencendo(int diasApartirDaDataAtual, Tipo_produto_filtro_validade tipo)
        {
            DateTime data = DateTime.Now.AddDays(diasApartirDaDataAtual);
            Expression <Func <Estoque, bool> > query = (e => e.Data_validade <= data);

            query = query.And(e => e.Loja_id == UsuariosController.LojaAtual.Id);
            query = query.And(e => e.Quant > 0);

            switch (tipo)
            {
            case Tipo_produto_filtro_validade.APENAS_COM_LOTE:
                query = query.And(e => e.Lote != "");
                break;

            case Tipo_produto_filtro_validade.APENAS_SEM_LOTE:
                query = query.And(e => e.Lote == "");
                break;
            }

            return(Where(query).ToList());
        }
 public List <Estoque> ProdutosVencendo(int diasApartirDaDataAtual, Tipo_produto_filtro_validade tipo)
 {
     return(db.ProdutosVencendo(diasApartirDaDataAtual, tipo));
 }