public Task <IEnumerable <dynamic> > GetDataTable(string SearchText = null, int NrRegistros = 50, bool TodosRegistros = false, string Ordem = "Ascendente", bool Inativos = true, bool Servicos = false) { var search = "%" + SearchText + "%"; var query = new Model.Item().Query(); query.LeftJoin("categoria", "categoria.id", "item.categoriaid") .Select("item.id", "item.nome", "item.referencia", "item.codebarras", "item.valorcompra", "item.valorvenda", "item.estoqueatual", "item.medida", "categoria.nome as categoria") .Where("item.excluir", 0) //.Where("item.tipo", "Produtos") .Where ( q => q.WhereLike("item.nome", search, true).OrWhere("item.referencia", "like", search).OrWhere("item.codebarras", "like", search).OrWhere("categoria.nome", "like", search) ); if (!Servicos) { query.Where("item.tipo", "Produtos"); } switch (Ordem) { case "Z-A": query.OrderByDesc("item.nome"); break; case "A-Z": query.OrderByRaw("item.nome ASC"); break; case "Aleatório": query.OrderByRaw("RAND()"); break; } if (!TodosRegistros) { query.Limit(NrRegistros); } if (!Inativos) { query.Where ( q => q.Where("item.ativo", "0").OrWhereNull("item.ativo") ); } return(query.GetAsync <dynamic>()); }