Пример #1
0
 public ResultsSortViewModel(ResultsSortState sortOrder)
 {
     WorkerSort   = sortOrder == ResultsSortState.WorkerAsc ? ResultsSortState.WorkerDesc : ResultsSortState.WorkerAsc;
     CameraIdSort = sortOrder == ResultsSortState.CameraIdAsc ? ResultsSortState.CameraIdDesc : ResultsSortState.CameraIdAsc;
     FileNameSort = sortOrder == ResultsSortState.FileNameAsc ? ResultsSortState.FileNameDesc : ResultsSortState.FileNameAsc;
     DateTimeSort = sortOrder == ResultsSortState.DateTimeAsc ? ResultsSortState.DateTimeDesc : ResultsSortState.DateTimeAsc;
     Current      = sortOrder;
 }
        public async Task <IActionResult> Index(string filteredName = null, int?filteredCameraId = null, string filteredDateTime = null, int page = 1, ResultsSortState sortOrder = ResultsSortState.DateTimeDesc)
        {
            int pageSize = 20;

            IQueryable <Results> results = db.InfoAboutFaces;
            var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);

            if (currentUser.ClientID != "admin")
            {
                results = results.Where(p => p.ClientID.Equals(currentUser.ClientID));
            }

            if (!String.IsNullOrEmpty(filteredName))
            {
                results = results.Where(p => p.Worker.Contains(filteredName));
            }
            if ((filteredCameraId != null))
            {
                results = results.Where(p => p.CameraID.Equals(filteredCameraId));
            }
            if ((filteredDateTime != null))
            {
                results = results.Where(p => p.DateTime.Date == Convert.ToDateTime(filteredDateTime));
            }

            switch (sortOrder)
            {
            case ResultsSortState.CameraIdDesc:
                results = results.OrderByDescending(s => s.CameraID);
                break;

            case ResultsSortState.CameraIdAsc:
                results = results.OrderBy(s => s.CameraID);
                break;

            case ResultsSortState.WorkerAsc:
                results = results.OrderBy(s => s.Worker);
                break;

            case ResultsSortState.WorkerDesc:
                results = results.OrderByDescending(s => s.Worker);
                break;

            case ResultsSortState.FileNameAsc:
                results = results.OrderBy(s => s.FileName);
                break;

            case ResultsSortState.FileNameDesc:
                results = results.OrderByDescending(s => s.FileName);
                break;

            case ResultsSortState.DateTimeAsc:
                results = results.OrderBy(s => s.DateTime);
                break;

            case ResultsSortState.DateTimeDesc:
                results = results.OrderByDescending(s => s.DateTime);
                break;

            default:
                results = results.OrderBy(s => s.CameraID);
                break;
            }

            var count = await results.CountAsync();

            var items = await results.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync();


            ResultsIndexViewModel viewModel = new ResultsIndexViewModel
            {
                PageViewModel          = new PageViewModel(count, page, pageSize),
                ResultsSortViewModel   = new ResultsSortViewModel(sortOrder),
                ResultsFilterViewModel = new ResultsFilterViewModel(filteredName, filteredCameraId, filteredDateTime),
                Results = items
            };

            return(View(viewModel));
        }