public ProductoForCountingSpecification(ProductoSpecificationParams productoParams) : base(x => (string.IsNullOrEmpty(productoParams.Search) || x.Nombre.Contains(productoParams.Search)) && (!productoParams.Marca.HasValue || x.MarcaId == productoParams.Marca) && (!productoParams.Categoria.HasValue || x.CategoriaId == productoParams.Categoria)) { }
public ProductoWithCategoriaAndMarcaSpecification(ProductoSpecificationParams productoParams) : base(x => (string.IsNullOrEmpty(productoParams.Search) || x.Nombre.Contains(productoParams.Search)) && (!productoParams.Marca.HasValue || x.MarcaId == productoParams.Marca) && (!productoParams.Categoria.HasValue || x.CategoriaId == productoParams.Categoria)) { AddInclude(p => p.Categoria); AddInclude(p => p.Marca); ApplyPagin(productoParams.PageSize * (productoParams.PageIndex - 1), productoParams.PageSize); if (!string.IsNullOrEmpty(productoParams.Sort)) { switch (productoParams.Sort) { case "nombreAsc": AddOrderBy(p => p.Nombre); break; case "nombreDesc": AddOrderByDesc(p => p.Nombre); break; case "precioAsc": AddOrderBy(p => p.Precio); break; case "precioDesc": AddOrderByDesc(p => p.Precio); break; case "descripcionAsc": AddOrderBy(p => p.Descripcion); break; case "descripcionDesc": AddOrderByDesc(p => p.Descripcion); break; default: AddOrderBy(p => p.Nombre); break; } } }