public SortMaterialsViewModel(MaterialsSortState sortOrder) { NameMaterialAscSort = sortOrder == MaterialsSortState.NameMaterialAsc ? MaterialsSortState.NameMaterialDesc : MaterialsSortState.NameMaterialAsc; MassMaterialAscSort = sortOrder == MaterialsSortState.MassMaterialAsc ? MaterialsSortState.MassMaterialDesc : MaterialsSortState.MassMaterialAsc; UnitssAscSort = sortOrder == MaterialsSortState.UnitsAsc ? MaterialsSortState.UnitsDesc : MaterialsSortState.UnitsAsc; PropertyAscSort = sortOrder == MaterialsSortState.PropertyAsc ? MaterialsSortState.PropertyDesc : MaterialsSortState.PropertyAsc; Current = sortOrder; }
// GET: Materials public IActionResult Index(string namematerial, double?massmaterial, string units, string property, int page = 1, MaterialsSortState sortOrder = MaterialsSortState.NameMaterialAsc) { int pageSize = 10; IQueryable <Materials> source = _context.Materials; if (namematerial != null) { source = source.Where(x => x.NameMaterial == namematerial); } if (massmaterial != null && massmaterial != 0) { source = source.Where(x => x.MassMaterial.Value == massmaterial.Value); } if (units != null) { source = source.Where(x => x.Units == units); } if (property != null) { source = source.Where(x => x.Property == property); } switch (sortOrder) { case MaterialsSortState.NameMaterialAsc: source = source.OrderBy(x => x.NameMaterial); break; case MaterialsSortState.NameMaterialDesc: source = source.OrderByDescending(x => x.NameMaterial); break; case MaterialsSortState.MassMaterialAsc: source = source.OrderBy(x => x.MassMaterial); break; case MaterialsSortState.MassMaterialDesc: source = source.OrderByDescending(x => x.MassMaterial); break; case MaterialsSortState.UnitsAsc: source = source.OrderBy(x => x.Units); break; case MaterialsSortState.UnitsDesc: source = source.OrderByDescending(x => x.Units); break; case MaterialsSortState.PropertyAsc: source = source.OrderBy(x => x.Property); break; case MaterialsSortState.PropertyDesc: source = source.OrderByDescending(x => x.Property); break; default: source = source.OrderBy(x => x.NameMaterial); break; } var count = source.Count(); var items = source.Skip((page - 1) * pageSize).Take(pageSize); PageViewModel pageView = new PageViewModel(count, page, pageSize); MaterialsViewModel ivm = new MaterialsViewModel { PageViewModel = pageView, SortViewModel = new SortMaterialsViewModel(sortOrder), FilterViewModel = new FilterMaterialsViewModel(namematerial, massmaterial, units, property), Materials = items }; return(View(ivm)); }