Ejemplo n.º 1
0
 /// <summary>
 /// Creates a new instance of a Search Controller
 /// </summary>
 /// <param name="elasticClient">An instance of an IElasticClient to use for connecting to the ElasticSearch cluster</param>
 /// <param name="logger">An instance of a ILogger to use for logging messages</param>
 public SearchController(IElasticClient elasticClient,
                         IOptions <SearchIndexOptions> config,
                         ILogger <SearchController> logger)
 {
     _elasticClient = elasticClient;
     _indexConfig   = config.Value;
     _logger        = logger;
 }
Ejemplo n.º 2
0
        public async Task <IActionResult> Index(SearchIndexOptions options, PagerParameters pagerParameters)
        {
            //if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageQueries))
            //{
            //    return Unauthorized();
            //}

            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, siteSettings.PageSize);

            // default options
            if (options == null)
            {
                options = new SearchIndexOptions();
            }

            var profiles = await _assesmentEngineManager.ListProfilesAsync();

            if (!string.IsNullOrWhiteSpace(options.Search))
            {
                profiles = profiles.Where(q => q.Name.IndexOf(options.Search, StringComparison.OrdinalIgnoreCase) >= 0);
            }

            var results = profiles
                          .Skip(pager.GetStartIndex())
                          .Take(pager.PageSize)
                          .ToList();

            // Maintain previous route data when generating page links
            var routeData = new RouteData();

            routeData.Values.Add("Options.Search", options.Search);

            var pagerShape = (await New.Pager(pager)).TotalItemCount(profiles.Count()).RouteData(routeData);

            var model = new AssesmentProfilesIndexViewModel
            {
                Profiles = new List <AssesmentProfileEntry>(),
                Options  = options,
                Pager    = pagerShape,
                AssesmentTypeEngineNames = _assesmentEngineManager.GetEngines().Select(x => x.Name).ToList()
            };

            foreach (var profile in results)
            {
                model.Profiles.Add(new AssesmentProfileEntry
                {
                    Profile = profile,
                    Shape   = await _displayManager.BuildDisplayAsync(profile, this, "SummaryAdmin")
                });
            }

            return(View(model));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Index(SearchIndexOptions options, PagerParameters pagerParameters)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageNotifications))
            {
                return(Unauthorized());
            }

            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager = new Pager(pagerParameters, siteSettings.PageSize);

            if (options == null)
            {
                options = new SearchIndexOptions();
            }

            //var query = _session.Query<WorkflowType, WorkflowTypeIndex>();

//            switch (options.Filter)
//            {
//                case WorkflowTypeFilter.All:
//                default:
//                    break;
//            }

//            if (!string.IsNullOrWhiteSpace(options.Search))
//            {
//                query = query.Where(w => w.Name.Contains(options.Search));
//            }

//            switch (options.Order)
//            {
//                case WorkflowTypeOrder.Name:
//                    query = query.OrderBy(u => u.Name);
//                    break;
//            }

            // var count = await query.CountAsync();

//            var workflowTypes = await query
//                .Skip(pager.GetStartIndex())
//                .Take(pager.PageSize)
//                .ListAsync();
            var notifications = await _notificationsRepository.FindAllAsync();// .GetAllAsync();


            var currentNotificationsList = notifications
                                           //  .Where(c => (currentUserGroupIds.Contains(c.GroupId) || c.GroupId == currentUserId) && c.Parent == null && c.CommentGroupTypeId != CommentGroupType.GroupChat)
                                           .OrderByDescending(c => c.CreatedUtc).ToList();

//            var workflowTypeIds = workflowTypes.Select(x => x.WorkflowTypeId).ToList();
//            var workflowGroups = (await _session.QueryIndex<WorkflowIndex>(x => x.WorkflowTypeId.IsIn(workflowTypeIds))
//                .ListAsync())
//                .GroupBy(x => x.WorkflowTypeId)
//                .ToDictionary(x => x.Key);

            // Maintain previous route data when generating page links.
            var routeData = new RouteData();

//            routeData.Values.Add("Options.Filter", options.Filter);
            routeData.Values.Add("Options.Search", options.Search);
//            routeData.Values.Add("Options.Order", options.Order);

            var pagerShape = (await New.Pager(pager)).TotalItemCount(currentNotificationsList.Count).RouteData(routeData);
            var model      = new NotificationsIndexViewModel
            {
                Notifications = currentNotificationsList,
                Options       = options,
                Pager         = pagerShape
            };

            return(View(model));
        }