private async Task <string[]> RefreshStatusFacet(ChangeRequestSearchInputModel changeRequestSearchInputModel)
        {
            var applyFilters = new ChangeRequestSearchFilters()
            {
                //NOTE: This is commented based upon the remarks made in email on Sept 15, 2016
                //Assignees = changeRequestSearchInputModel.Assignees,
                //ChangeEntities = changeRequestSearchInputModel.ChangeEntities,
                //RequestsBy = changeRequestSearchInputModel.RequestsBy,
                //ChangeTypes = changeRequestSearchInputModel.ChangeTypes
            };

            var result = await _changeRequestSearchService.SearchAsync("", applyFilters.ToAzureSearchFilter(),
                                                                       new SearchOptions
            {
                FacetsToInclude = new List <string>
                {
                    "statusText,count:1000",
                },
                RecordCount = 0
            });

            var changeRequestSearchViewModel = _changeRequestSearchViewModelMapper.Map(result);

            return(changeRequestSearchViewModel.Facets.Statuses);
        }
        public async Task <ChangeRequestSearchViewModel> RefreshFacets(ChangeRequestSearchInputModel changeRequestSearchInputModel)
        {
            var changeRequestSearchViewModel = new ChangeRequestSearchViewModel()
            {
                Facets = new ChangeRequestSearchFacets()
                {
                    Statuses       = await RefreshStatusFacet(changeRequestSearchInputModel),
                    ChangeTypes    = await RefreshTypeFacet(changeRequestSearchInputModel),
                    ChangeEntities = await RefreshEntityFacet(changeRequestSearchInputModel),
                    RequestsBy     = await RefreshRequestByFacet(changeRequestSearchInputModel),
                    Assignees      = await RefreshAssigneeFacet(changeRequestSearchInputModel)
                }
            };

            return(changeRequestSearchViewModel);
        }
        public async Task <ChangeRequestSearchViewModel> Search(ChangeRequestSearchInputModel changeRequestSearchInputModel)
        {
            var applyFilter = new ChangeRequestSearchFilters()
            {
                Statuses          = changeRequestSearchInputModel.Statuses,
                ChangeTypes       = changeRequestSearchInputModel.ChangeTypes,
                ChangeEntities    = changeRequestSearchInputModel.ChangeEntities,
                RequestsBy        = changeRequestSearchInputModel.RequestsBy,
                Assignees         = changeRequestSearchInputModel.Assignees,
                SubmittedDateFrom = !String.IsNullOrWhiteSpace(changeRequestSearchInputModel.SubmittedDateFrom)? Convert.ToDateTime(changeRequestSearchInputModel.SubmittedDateFrom): (DateTime?)null,
                SubmittedDateTo   = !String.IsNullOrWhiteSpace(changeRequestSearchInputModel.SubmittedDateTo)? Convert.ToDateTime(changeRequestSearchInputModel.SubmittedDateTo): (DateTime?)null
            };

            var result = await _changeRequestSearchService.SearchAsync("", applyFilter.ToAzureSearchFilter(), new SearchOptions()
            {
                FacetsToInclude = new List <string>()
                {
                    "changeType",
                    "entity",
                    "statusText",
                    "requestedBy",
                    "assignee"
                },
                RecordCount = 1000,
                OrderBy     = new List <string>()
                {
                    "updatedDate desc",
                    "submittedDate desc",
                }
            });

            //return _changeRequestSearchViewModelMapper.Map(result);
            ChangeRequestSearchViewModel mappedResult = _changeRequestSearchViewModelMapper.Map(result);

            mappedResult.CanBulkSubmit = CurrentUser.Roles.Contains(CustomRoles.Admin) ||
                                         CurrentUser.Roles.Contains(CustomRoles.Researcher);
            mappedResult.IsAdmin = CurrentUser.Roles.Contains(CustomRoles.Admin);
            return(mappedResult);
        }
        private async Task <string[]> RefreshAssigneeFacet(ChangeRequestSearchInputModel changeRequestSearchInputModel)
        {
            var applyFilters = new ChangeRequestSearchFilters()
            {
                RequestsBy     = changeRequestSearchInputModel.RequestsBy,
                ChangeEntities = changeRequestSearchInputModel.ChangeEntities,
                Statuses       = changeRequestSearchInputModel.Statuses,
                ChangeTypes    = changeRequestSearchInputModel.ChangeTypes
            };

            var result = await _changeRequestSearchService.SearchAsync("", applyFilters.ToAzureSearchFilter(),
                                                                       new SearchOptions
            {
                FacetsToInclude = new List <string>
                {
                    "assignee,count:1000",
                },
                RecordCount = 0
            });

            var changeRequestSearchViewModel = _changeRequestSearchViewModelMapper.Map(result);

            return(changeRequestSearchViewModel.Facets.Assignees);
        }