public SortSamplesViewModel(SamplesSortState sortOrder) { NameSampleAscSort = sortOrder == SamplesSortState.NameSampleAsc ? SamplesSortState.NameSampleDesc : SamplesSortState.NameSampleAsc; MassSampleAscSort = sortOrder == SamplesSortState.MassSampleAsc ? SamplesSortState.MassSampleDesc : SamplesSortState.MassSampleAsc; IdMaterialAscSort = sortOrder == SamplesSortState.IdMaterialAsc ? SamplesSortState.IdMaterialDesc : SamplesSortState.IdMaterialAsc; Current = sortOrder; }
// GET: Materials public IActionResult Index(string material, double?mass, string property, int page = 1, SamplesSortState sortOrder = SamplesSortState.NameSampleAsc) { int pageSize = 10; IQueryable <Samples> source = _context.Samples.Include(s => s.IdMaterialNavigation); if (material != null) { source = source.Where(x => x.IdMaterialNavigation.NameMaterial == material); } if (mass != null && mass != 0) { source = source.Where(x => x.IdMaterialNavigation.MassMaterial.Value == mass.Value); } if (property != null) { source = source.Where(x => x.IdMaterialNavigation.Property == property); } switch (sortOrder) { case SamplesSortState.NameSampleAsc: source = source.OrderBy(x => x.NameSample); break; case SamplesSortState.NameSampleDesc: source = source.OrderByDescending(x => x.NameSample); break; case SamplesSortState.MassSampleAsc: source = source.OrderBy(x => x.MassSample); break; case SamplesSortState.MassSampleDesc: source = source.OrderByDescending(x => x.MassSample); break; case SamplesSortState.IdMaterialAsc: source = source.OrderBy(x => x.IdMaterial); break; case SamplesSortState.IdMaterialDesc: source = source.OrderByDescending(x => x.IdMaterial); break; default: source = source.OrderBy(x => x.NameSample); break; } var count = source.Count(); var items = source.Skip((page - 1) * pageSize).Take(pageSize); PageViewModel pageView = new PageViewModel(count, page, pageSize); SamplesViewModel ivm = new SamplesViewModel { PageViewModel = pageView, SortViewModel = new SortSamplesViewModel(sortOrder), FilterViewModel = new FilterSamplesViewModel(material, mass, property), Samples = items }; return(View(ivm)); }