示例#1
0
 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));
        }