/// <summary> /// Initialization of search service parameters which will help in searching the documents. /// </summary> /// <param name="searchParametersDto">Search parameters.</param> /// <returns>Represents an search parameter object.</returns> private Azure.Search.Models.SearchParameters InitializeSearchParameters(Models.SearchParametersDto searchParametersDto) { Azure.Search.Models.SearchParameters searchParameters = new Azure.Search.Models.SearchParameters() { Top = searchParametersDto.SearchResultsCount.HasValue && searchParametersDto.SortByFilter != (int)SortBy.PopularityByRecentCollaborators ? searchParametersDto.SearchResultsCount : ApiSearchResultCount, Skip = searchParametersDto.SkipRecords.HasValue && searchParametersDto.SortByFilter != (int)SortBy.PopularityByRecentCollaborators ? searchParametersDto.SkipRecords : 0, Select = searchParametersDto.SearchScope == EventSearchType.SearchByName ? new[] { nameof(EventEntity.Name), nameof(EventEntity.EventId), } : new[] { nameof(EventEntity.Audience), nameof(EventEntity.CategoryId), nameof(EventEntity.Description), nameof(EventEntity.EndTime), nameof(EventEntity.EventId), nameof(EventEntity.MaximumNumberOfParticipants), nameof(EventEntity.Name), nameof(EventEntity.Photo), nameof(EventEntity.SelectedColor), nameof(EventEntity.StartDate), nameof(EventEntity.StartTime), nameof(EventEntity.TeamId), nameof(EventEntity.Type), nameof(EventEntity.MandatoryAttendees), nameof(EventEntity.AutoRegisteredAttendees), nameof(EventEntity.RegisteredAttendeesCount), nameof(EventEntity.Venue), nameof(EventEntity.RegisteredAttendees), }, SearchFields = new[] { nameof(EventEntity.Name), nameof(EventEntity.Description) }, // default search event by name and description Filter = this.filterQueryGenerator.GetStrategy(searchParametersDto.SearchScope)?.GenerateFilterQuery(searchParametersDto), }; searchParameters.OrderBy = searchParametersDto.SortByFilter == (int)SortBy.Recent ? new[] { $"{nameof(EventEntity.CreatedOn)} desc" } : new[] { $"{nameof(EventEntity.RegisteredAttendeesCount)} desc" }; var filterConditions = this.GetFilterCondition(searchParametersDto.CreatedByFilter, searchParametersDto.CategoryFilter); if (!string.IsNullOrEmpty(filterConditions)) { searchParameters.Filter += $" and {filterConditions}"; } return(searchParameters); }
/// <summary> /// Initialization of search service parameters which will help in searching the documents. /// </summary> /// /// <param name="searchParametersDto">Search parameters entered by user.</param> /// <returns>Represents an search parameter object.</returns> private Azure.Search.Models.SearchParameters InitializeSearchParameters(Models.SearchParametersDto searchParametersDto) { Azure.Search.Models.SearchParameters searchParameters = new Azure.Search.Models.SearchParameters() { Top = searchParametersDto.SearchResultsCount ?? ApiSearchResultCount, Skip = searchParametersDto.SkipRecords ?? 0, Select = new[] { nameof(EventEntity.Audience), nameof(EventEntity.CategoryId), nameof(EventEntity.CreatedBy), nameof(EventEntity.CreatedOn), nameof(EventEntity.Description), nameof(EventEntity.EndTime), nameof(EventEntity.EventId), nameof(EventEntity.IsAutoRegister), nameof(EventEntity.MaximumNumberOfParticipants), nameof(EventEntity.MeetingLink), nameof(EventEntity.Name), nameof(EventEntity.Photo), nameof(EventEntity.StartDate), nameof(EventEntity.StartTime), nameof(EventEntity.Status), nameof(EventEntity.TeamId), nameof(EventEntity.Type), nameof(EventEntity.UpdatedBy), nameof(EventEntity.UpdatedOn), nameof(EventEntity.Venue), nameof(EventEntity.EndDate), nameof(EventEntity.IsRegistrationClosed), nameof(EventEntity.RegisteredAttendeesCount), }, SearchFields = new[] { nameof(EventEntity.Name), nameof(EventEntity.Description) }, // default search event by name Filter = this.filterQueryGenerator.GetStrategy(searchParametersDto.SearchScope).GenerateFilterQuery(searchParametersDto), }; if (searchParametersDto.SearchScope == EventSearchType.GetCategoryEvent) { searchParameters.Top = 1; searchParameters.Select = new[] { nameof(EventEntity.CategoryId), nameof(EventEntity.EventId), }; } searchParameters.OrderBy = new[] { $"{nameof(EventEntity.CreatedOn)} desc" }; return(searchParameters); }