/// <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);
        }