Exemplo n.º 1
0
        // GET: Employee
        public async Task <IActionResult> Index(string searchString, SortOrder sortOrder = SortOrder.SurNameAsc)
        {
            ViewData["PayrollNumberSort"] = sortOrder == SortOrder.PayrollNumberAsc ? SortOrder.PayrollNumberDesc : SortOrder.PayrollNumberAsc;
            ViewData["ForeNameSort"]      = sortOrder == SortOrder.ForeNameAsc ? SortOrder.ForeNameDesc : SortOrder.ForeNameAsc;
            ViewData["SurNameSort"]       = sortOrder == SortOrder.SurNameAsc ? SortOrder.SurNameDesc : SortOrder.SurNameAsc;
            ViewData["DateOfBirthSort"]   = sortOrder == SortOrder.DateOfBirthAsc ? SortOrder.DateOfBirthDesc : SortOrder.DateOfBirthAsc;
            ViewData["TelephoneSort"]     = sortOrder == SortOrder.TelephoneAsc ? SortOrder.TelephoneDesc : SortOrder.TelephoneAsc;
            ViewData["MobileSort"]        = sortOrder == SortOrder.MobileAsc ? SortOrder.MobileDesc : SortOrder.MobileAsc;
            ViewData["AdressSort"]        = sortOrder == SortOrder.AdressAsc ? SortOrder.AdressDesc : SortOrder.AdressAsc;
            ViewData["Adress2Sort"]       = sortOrder == SortOrder.Adress2Asc ? SortOrder.Adress2Desc : SortOrder.Adress2Asc;
            ViewData["PostCodeSort"]      = sortOrder == SortOrder.PostCodeAsc ? SortOrder.PostCodeDesc : SortOrder.PostCodeAsc;
            ViewData["EmailHomeSort"]     = sortOrder == SortOrder.EmailHomeAsc ? SortOrder.EmailHomeDesc : SortOrder.EmailHomeAsc;
            ViewData["StartDateSort"]     = sortOrder == SortOrder.StartDateAsc ? SortOrder.StartDateDesc : SortOrder.StartDateAsc;

            ViewData["SearchFilter"] = searchString;

            IQueryable <Employee> employees = _context.Employees;

            // Searching by name
            if (!String.IsNullOrEmpty(searchString))
            {
                employees = employees.Where(s => s.SurName.Contains(searchString) || s.ForeNames.Contains(searchString));
            }

            // Sorting table
            employees = sortOrder switch
            {
                SortOrder.PayrollNumberDesc => employees.OrderByDescending(s => s.PayrollNumber),
                SortOrder.PayrollNumberAsc => employees.OrderBy(s => s.PayrollNumber),

                SortOrder.ForeNameDesc => employees.OrderByDescending(s => s.ForeNames),
                SortOrder.ForeNameAsc => employees.OrderBy(s => s.ForeNames),

                SortOrder.SurNameDesc => employees.OrderByDescending(s => s.SurName),
                SortOrder.SurNameAsc => employees.OrderBy(s => s.SurName),

                SortOrder.DateOfBirthDesc => employees.OrderByDescending(s => s.DateOfBirth),
                SortOrder.DateOfBirthAsc => employees.OrderBy(s => s.DateOfBirth),

                SortOrder.TelephoneDesc => employees.OrderByDescending(s => s.Telephone),
                SortOrder.TelephoneAsc => employees.OrderBy(s => s.Telephone),

                SortOrder.MobileDesc => employees.OrderByDescending(s => s.Mobile),
                SortOrder.MobileAsc => employees.OrderBy(s => s.Mobile),

                SortOrder.AdressDesc => employees.OrderByDescending(s => s.Adress),
                SortOrder.AdressAsc => employees.OrderBy(s => s.Adress),

                SortOrder.Adress2Desc => employees.OrderByDescending(s => s.Adress2),
                SortOrder.Adress2Asc => employees.OrderBy(s => s.Adress2),

                SortOrder.PostCodeDesc => employees.OrderByDescending(s => s.PostCode),
                SortOrder.PostCodeAsc => employees.OrderBy(s => s.PostCode),

                SortOrder.EmailHomeDesc => employees.OrderByDescending(s => s.EmailHome),
                SortOrder.EmailHomeAsc => employees.OrderBy(s => s.EmailHome),

                SortOrder.StartDateDesc => employees.OrderByDescending(s => s.StartDate),
                SortOrder.StartDateAsc => employees.OrderBy(s => s.StartDate),

                _ => employees.OrderBy(s => s.SurName)
            };

            return(View(await employees.AsNoTracking().ToListAsync()));
        }