Exemple #1
0
 public SortWorkersViewModel(WorkersSortState sortOrder)
 {
     SurnameAscSort   = sortOrder == WorkersSortState.SurnameAsc ? WorkersSortState.SurnameDesc : WorkersSortState.SurnameAsc;
     FirstnameAscSort = sortOrder == WorkersSortState.FirstnameAsc ? WorkersSortState.FirstnsmeDesc : WorkersSortState.FirstnameAsc;
     AdressAscSort    = sortOrder == WorkersSortState.AdresslAsc ? WorkersSortState.AdresslDesc : WorkersSortState.AdresslAsc;
     BirthdayAscSort  = sortOrder == WorkersSortState.BirthdayAsc ? WorkersSortState.BirthdayDesc : WorkersSortState.BirthdayAsc;
     Current          = sortOrder;
 }
        public async Task <ActionResult <IEnumerable <Worker> > > GetSortedWorkers(bool isAsc = true, WorkersSortState sortState = WorkersSortState.LastName)
        {
            var workers = _context.Workers
                          .Include(w => w.Department)
                          .Include(w => w.Position)
                          .ToList();

            switch (sortState)
            {
            case WorkersSortState.LastName:
                workers = isAsc
                        ? workers.OrderBy(c => c.LastName).ToList()
                        : workers.OrderByDescending(c => c.LastName).ToList();
                break;

            case WorkersSortState.FirstName:
                workers = isAsc
                        ? workers.OrderBy(c => c.FirstName).ToList()
                        : workers.OrderByDescending(c => c.FirstName).ToList();
                break;

            case WorkersSortState.Department:
                workers = isAsc
                        ? workers.OrderBy(c => c.Department.Name).ToList()
                        : workers.OrderByDescending(c => c.Department.Name).ToList();
                break;

            case WorkersSortState.Position:
                workers = isAsc
                        ? workers.OrderBy(c => c.Position.Name).ToList()
                        : workers.OrderByDescending(c => c.Position.Name).ToList();
                break;
            }
            return(workers);
        }
Exemple #3
0
        // GET: Materials
        public IActionResult Index(string surname, string firstname, string adress, string birthday, int page = 1, WorkersSortState sortOrder = WorkersSortState.SurnameAsc)
        {
            int pageSize = 10;
            IQueryable <Workers> source = _context.Workers;

            if (surname != null)
            {
                source = source.Where(x => x.Surname.Contains(surname));
            }

            if (firstname != null)
            {
                source = source.Where(x => x.Firstname.Contains(firstname));
            }

            if (adress != null)
            {
                source = source.Where(x => x.Adress.Contains(adress));
            }

            if (birthday != null)
            {
                source = source.Where(x => x.Birthday == DateTime.Parse(birthday));
            }

            switch (sortOrder)
            {
            case WorkersSortState.SurnameAsc:
                source = source.OrderBy(x => x.Surname);
                break;

            case WorkersSortState.SurnameDesc:
                source = source.OrderByDescending(x => x.Surname);
                break;

            case WorkersSortState.FirstnameAsc:
                source = source.OrderBy(x => x.Firstname);
                break;

            case WorkersSortState.FirstnsmeDesc:
                source = source.OrderByDescending(x => x.Firstname);
                break;

            case WorkersSortState.AdresslAsc:
                source = source.OrderBy(x => x.Adress);
                break;

            case WorkersSortState.AdresslDesc:
                source = source.OrderByDescending(x => x.Adress);
                break;

            case WorkersSortState.BirthdayAsc:
                source = source.OrderBy(x => x.Birthday);
                break;

            case WorkersSortState.BirthdayDesc:
                source = source.OrderByDescending(x => x.Birthday);
                break;

            default:
                source = source.OrderBy(x => x.Surname);
                break;
            }

            var              count    = source.Count();
            var              items    = source.Skip((page - 1) * pageSize).Take(pageSize);
            PageViewModel    pageView = new PageViewModel(count, page, pageSize);
            WorkersViewModel ivm      = new WorkersViewModel
            {
                PageViewModel   = pageView,
                SortViewModel   = new SortWorkersViewModel(sortOrder),
                FilterViewModel = new FilterWorkersViewModel(surname, firstname, adress, birthday),
                Workers         = items
            };

            return(View(ivm));
        }