private async Task <IEnumerable <JobSummary> > GetFilteredOpenJobsForUser(User user, CancellationToken cancellationToken)
        {
            var openRequests = await _requestService.GetOpenJobsAsync(user, false, cancellationToken);

            if (openRequests == null)
            {
                return(null);
            }

            var filterSet = await _filterService.GetDefaultSortAndFilterSet(JobSet.UserOpenRequests_NotMatchingCriteria, null, new List <JobStatuses> {
                JobStatuses.Open
            }, user, cancellationToken);

            var filterRequest = new JobFilterRequest()
            {
                JobSet = JobSet.UserOpenRequests_NotMatchingCriteria, ResultsToShow = 1000, ResultsToShowIncrement = 20
            };

            filterRequest.UpdateFromFilterSet(filterSet);

            return(_filterService.SortAndFilterJobs(openRequests, filterRequest));
        }
        public async Task <IViewComponentResult> InvokeAsync(JobFilterViewModel jobFilterViewModel, CancellationToken cancellationToken)
        {
            if (jobFilterViewModel.FilterSet == null)
            {
                var jobStatuses = new List <JobStatuses>();

                var user = await _authService.GetCurrentUser(HttpContext, cancellationToken);

                if (jobFilterViewModel.JobFilterRequest.HighlightJobId.HasValue)
                {
                    int jobId = jobFilterViewModel.JobFilterRequest.HighlightJobId.Value;
                    var job   = await _requestService.GetJobSummaryAsync(jobId, cancellationToken);

                    if (job != null)
                    {
                        jobStatuses.Add(job.JobStatus);
                    }
                }

                if (jobFilterViewModel.JobFilterRequest.HighlightRequestId.HasValue)
                {
                    int requestId = jobFilterViewModel.JobFilterRequest.HighlightRequestId.Value;
                    var request   = await _requestService.GetRequestSummaryAsync(requestId, cancellationToken);

                    if (request != null)
                    {
                        jobStatuses = request.JobStatusDictionary().Keys.ToList();
                    }
                }

                jobFilterViewModel.FilterSet = await _filterService.GetDefaultSortAndFilterSet(jobFilterViewModel.JobFilterRequest.JobSet, jobFilterViewModel.JobFilterRequest.GroupId, jobStatuses, user, cancellationToken);
            }

            jobFilterViewModel.JobFilterRequest.UpdateFromFilterSet(jobFilterViewModel.FilterSet);

            return(View("JobFilterPanel", jobFilterViewModel));
        }