public static SearchAccessTokensFilters Map(SearchSessionsRequest request)
        {
            SearchAccessTokensFilters filters = new SearchAccessTokensFilters
            {
                UserKey    = request.UserKey,
                PageSize   = request.PageSize,
                PageNumber = request.PageNumber,
                SortField  = request.SortField,
                SortMode   = request.SortMode.ToString()
            };

            return(filters);
        }
        private FilterDefinition <AccessToken> BuildAccessTokensQuery(SearchAccessTokensFilters filters)
        {
            FilterDefinition <AccessToken> filter = null;

            if (filters.UserKey != null)
            {
                filter = filter.FilterJoin(Builders <AccessToken> .Filter.Eq(x => x.UserKey, filters.UserKey));
            }

            if (filter == null)
            {
                filter = Builders <AccessToken> .Filter.Empty;
            }

            return(filter);
        }
        public SearchContainer <AccessToken> GetAllAccessTokens(SearchAccessTokensFilters filters)
        {
            FilterDefinition <AccessToken> filter = this.BuildAccessTokensQuery(filters);

            var result = this.Collection.Find(filter)
                         .WithSorting(filters)
                         .WithPaging(filters).ToList();

            return(new SearchContainer <AccessToken>()
            {
                Items = result,
                Total = result.Count,
                PageNumber = filters.PageNumber,
                PageSize = filters.PageSize
            });
        }