예제 #1
0
        public PagingList <Resource> Search(ResourceSearchCriteria criteria, string includeProperties = null)
        {
            PagingList <Resource> results = base.GetWithCriteria(this.BuildQuery(criteria)
                                                                 , criteria
                                                                 , includeProperties
                                                                 );

            return(results);
        }
        public void UpdateCriteriaInvalidPageNumberTest()
        {
            // Arrange
            ResourceSearchCriteria target = new ResourceSearchCriteria();

            // Act
            target.UpdateCriteria("Name", -1);

            // Assert
            Assert.IsNotNull(target);
        }
        public void SearchTest_Exception()
        {
            // Arrange
            ResourceService        target   = new ResourceService(_exceptionRepository, _mockLogger, _mapper);
            ResourceSearchCriteria criteria = new ResourceSearchCriteria();

            // Act
            PagingList <Resource> actual = target.Search(criteria);

            // Assert
            Assert.IsTrue(target.HasError);
        }
        public PagingList <Resource> Search(ResourceSearchCriteria criteria, string includeProperties = null)
        {
            var entities = new Domain.MockData.Models.Resources().GetAll();
            var toReturn = new PagingList <Resource>();

            foreach (var entity in entities)
            {
                toReturn.Add(entity);
            }
            toReturn.TotalCount = entities.Count;
            return(toReturn);
        }
        public void UpdateCriteriaDirectionTest()
        {
            // Arrange
            ResourceSearchCriteria target = new ResourceSearchCriteria();

            target.SortDirection = SortDirection.Descending;

            // Act
            target.UpdateCriteria("Name", 1);

            // Assert
            Assert.IsNotNull(target);
        }
예제 #6
0
        public ActionResult Search(ResourceSearchCriteria criteria)
        {
            switch (criteria.ResourceType)
            {
            case ResourceType.Video:
                return(Videos(criteria, new ResourcesPresentationModel()));

            case ResourceType.QnA:
                return(QnAs(criteria, new ResourcesPresentationModel()));

            default:
                return(Articles(criteria, new ResourcesPresentationModel()));
            }
        }
예제 #7
0
        private Expression <Func <Resource, bool> > BuildQuery(ResourceSearchCriteria criteria)
        {
            Expression <Func <Resource, bool> > expression = (q => true);

            if (criteria.Id.HasValue)
            {
                expression = expression.And(q => q.Id == criteria.Id.Value);
            }

            if (!string.IsNullOrEmpty(criteria.NameStartsWith))
            {
                expression = expression.And(q => q.Name.StartsWith(criteria.NameStartsWith));
            }

            return(expression);
        }
        public void SearchByNameTest()
        {
            // Arrange
            ResourcesController    target   = new ResourcesController(_service);
            Resource               expected = _mockdata.Resource1();
            ResourceSearchCriteria criteria = new ResourceSearchCriteria()
            {
                NameStartsWith = expected.Name
            };

            // Act
            var actual = target.Search(criteria) as OkObjectResult;

            // Assert
            Assert.IsNotNull(actual);
        }
예제 #9
0
        public IActionResult Search([FromQuery] ResourceSearchCriteria criteria)
        {
            if (criteria == null)
            {
                return(BadRequest());
            }
            var response = new ResourceGetWithCriteriaResponse();
            var results  = _service.Search(criteria);

            if (results != null)
            {
                response.Results    = results;
                response.TotalCount = results.TotalCount;
            }
            response.ErrorMessage = _service.ErrorMessage;
            return(Ok(response));
        }
예제 #10
0
        public static RouteValueDictionary GetRouteValues(this ResourceSearchCriteria criteria, int?page, IList <Category> categories)
        {
            var routeValues = criteria.SubcategoryId != null
                ? categories.GetSubcategory(criteria.SubcategoryId.Value).GetRouteValues(categories)
                : criteria.CategoryId != null
                    ? categories.GetCategory(criteria.CategoryId.Value).GetRouteValues()
                    : new RouteValueDictionary();

            if (!string.IsNullOrEmpty(criteria.Keywords))
            {
                routeValues.Add(ResourceSearchCriteriaKeys.Keywords, criteria.Keywords);
            }
            if (page != null && page.Value != 1)
            {
                routeValues.Add("Page", page.Value);
            }

            return(routeValues);
        }
        public void SearchWithoutPagingOrSortingTest()
        {
            // Arrange
            ResourceRepository     target   = new ResourceRepository(_context);
            Resource               expected = _mockdata.Resource1();
            ResourceSearchCriteria criteria = new ResourceSearchCriteria()
            {
                SortFieldName  = null,
                SortDirection  = Domain.Client.Enumerations.SortDirection.Descending,
                PageSize       = -1,
                PageNumber     = 1,
                NameStartsWith = expected.Name
            };

            // Act
            List <Resource> actual = target.Search(criteria);

            // Assert
            Assert.IsTrue(actual.Count >= 0);
        }
        public void BuildQueryTest()
        {
            // Arrange
            ResourceRepository target = new ResourceRepository(_context);
            Type     t        = typeof(ResourceRepository);
            Resource expected = _mockdata.Resource1();
            ResourceSearchCriteria criteria = new ResourceSearchCriteria()
            {
                Id             = expected.Id,
                NameStartsWith = expected.Name
            };

            MethodInfo methodInfo = t.GetMethod("BuildQuery", BindingFlags.NonPublic | BindingFlags.Instance);

            object[] parameters = { criteria };

            // Act
            methodInfo.Invoke(target, parameters);

            //Assert
        }
예제 #13
0
        private ResourceListModel <TResource> Search <TResource>(Guid userId, ResourceSearchCriteria criteria, ResourcesPresentationModel presentation, IList <Category> categories, Func <IList <Guid>, IList <TResource> > getResources, Func <Guid, IList <TResource> > getRecentlyViewedResources)
            where TResource : Resource
        {
            // Search.

            var execution = _executeResourceSearchCommand.Search(criteria, presentation.Pagination.ToRange());

            return(new ResourceListModel <TResource>
            {
                Categories = categories,
                Presentation = presentation,
                Criteria = execution.Criteria,
                TotalResources = execution.Results.ResourceTypeHits.ToDictionary(h => h.Key, h => h.Value),
                Results = new ResourceListResultsModel <TResource>
                {
                    ResourceIds = execution.Results.ResourceIds,
                    Resources = getResources(execution.Results.ResourceIds).ToDictionary(r => r.Id, r => r),
                },
                RecentItems = getRecentlyViewedResources(userId).Cast <Resource>().ToList(),
            });
        }
        public PagingList <Domain.Client.Dtos.Resource> Search(ResourceSearchCriteria criteria, string includeProperties = null)
        {
            PagingList <Domain.Client.Dtos.Resource> toReturn = null;

            try
            {
                PagingList <Domain.Models.Resource> ormEntities = _repository.Search(criteria, includeProperties);
                toReturn            = new PagingList <Domain.Client.Dtos.Resource>();
                toReturn.TotalCount = ormEntities.TotalCount;
                foreach (var ormEntity in ormEntities)
                {
                    toReturn.Add(_mapper.Map <Domain.Models.Resource, Domain.Client.Dtos.Resource>(ormEntity));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
                this.ErrorMessage = ex.ToString();
            }
            return(toReturn);
        }
        public void SearchTest()
        {
            // Arrange
            ResourceService        target   = new ResourceService(_repository, _mockLogger, _mapper);
            Resource               expected = _mockdata.Resource1();
            ResourceSearchCriteria criteria = new ResourceSearchCriteria()
            {
                SortFieldName  = "Name",
                SortDirection  = Domain.Client.Enumerations.SortDirection.Descending,
                PageSize       = 10,
                PageNumber     = 1,
                NameStartsWith = expected.Name
            };

            // Act
            List <Resource> actual = target.Search(criteria);

            // Assert
            Assert.IsFalse(target.HasError);
            Assert.IsTrue(actual.Count >= 0);
        }
예제 #16
0
        /// <summary>
        /// Execute a search on the Lucene resource index
        /// </summary>
        /// <param name="criteria">The criteria the search results need to meet</param>
        /// <param name="range">The number of results to return. Null means include all resources</param>
        /// <returns>A list of resourceItemIds meeting the criteria</returns>
        ResourceSearchExecution IExecuteResourceSearchCommand.Search(ResourceSearchCriteria criteria, Range range)
        {
            ResourceSearchResults results;
            var service = _serviceManager.Create();

            try
            {
                results = service.Search(criteria.GetSearchQuery(range), true);
            }
            catch (Exception)
            {
                _serviceManager.Abort(service);
                throw;
            }
            _serviceManager.Close(service);

            return(new ResourceSearchExecution
            {
                Criteria = criteria,
                Results = results,
            });
        }
예제 #17
0
        private ResourceListModel <TResource> PartialResources <TResource>(ResourceSearchCriteria criteria, ResourcesPresentationModel presentation, Func <IList <Guid>, IList <TResource> > getResources, Func <Guid, IList <TResource> > getRecentlyViewedResources)
            where TResource : Resource
        {
            // Save the current search.

            criteria.ResourceType = GetResourceType <TResource>();
            criteria.SortCriteria = new ResourceSearchSortCriteria {
                SortOrder = ResourceSortOrder.CreatedTime, ReverseSortOrder = false
            };
            presentation = PreparePresentationModel(presentation);
            MemberContext.CurrentResourcesSearch = new ResourcesSearchNavigation(criteria, presentation);

            // Search.

            var user       = CurrentUser;
            var categories = _resourcesQuery.GetCategories();
            var model      = Search(user.Id, criteria, presentation, categories, getResources, getRecentlyViewedResources);

            // Set the data for all resources in the model.

            return(GetPartialResourceListModel(user, model));
        }
예제 #18
0
 public PagingList <Resource> Search(ResourceSearchCriteria criteria, string includeProperties = null)
 {
     throw new NotImplementedException();
 }
예제 #19
0
 public static ReadOnlyUrl GenerateUrl(this ResourceSearchCriteria criteria, int?page, IList <Category> categories)
 {
     return(criteria.CategoryId == null && criteria.SubcategoryId == null
         ? GetRoute(criteria.ResourceType).GenerateUrl(criteria.GetRouteValues(page, categories))
         : GetCategoryRoute(criteria.ResourceType).GenerateUrl(criteria.GetRouteValues(page, categories)));
 }
예제 #20
0
 public ActionResult CategoryVideos(ResourceSearchCriteria criteria, ResourcesPresentationModel presentation)
 {
     return(Videos(criteria, presentation));
 }
예제 #21
0
        IResourceHighlighter IResourceHighlighterFactory.Create(ResourceHighlighterKind kind, ResourceSearchCriteria criteria, HighlighterConfiguration configuration)
        {
            if (kind == ResourceHighlighterKind.Null || criteria == null)
            {
                return(new NullResourceHighlighter());
            }

            var searchQuery  = criteria.GetSearchQuery(null);
            var contentQuery = new QueryBuilder(_defaultQueryAnalyzer).GetContentQuery(searchQuery);

            return(new ResourceHighlighter(contentQuery, _defaultContentAnalyzer, configuration));
        }
예제 #22
0
 public PagingList <Resource> Search(ResourceSearchCriteria criteria, string includeProperties = null)
 {
     this.ErrorMessage = "error";
     return(null);
 }
예제 #23
0
 public ActionResult PartialVideos(ResourceSearchCriteria criteria, ResourcesPresentationModel presentation)
 {
     return(PartialView("PartialVideos", PartialResources(criteria, presentation, i => _resourcesQuery.GetVideos(i), u => _resourcesQuery.GetRecentlyViewedVideos(u, RecentItemsCount))));
 }
예제 #24
0
 public ResourcesSearchNavigation(ResourceSearchCriteria criteria, PresentationModel presentation)
     : base(presentation)
 {
     _criteria = criteria.Clone();
 }
예제 #25
0
 public ActionResult QnAs(ResourceSearchCriteria criteria, ResourcesPresentationModel presentation)
 {
     return(View("QnAs", Resources(criteria, presentation, i => _resourcesQuery.GetQnAs(i), u => _resourcesQuery.GetRecentlyViewedQnAs(u, RecentItemsCount))));
 }
 public PagingList <Resource> Search(ResourceSearchCriteria criteria, string includeProperties = null)
 {
     return(new PagingList <Resource>()
     {
     });
 }