public async Task <IActionResult> Get([FromQuery] LoverLogParameters parameters)
        {
            string userId = this.GetUserId();
            PaginatedList <LoverLog> logs =
                await _repository.GetLoverLogsAsync(userId, parameters);

            IQueryable <LoverLog> sortedLogs = logs.AsQueryable()
                                               .ApplySort(
                parameters.OrderBy,
                _propertyMappingContainer.Resolve <LoverLogResource, LoverLog>());

            IEnumerable <LoverLogResource> loverLogResources =
                _mapper.Map <IEnumerable <LoverLogResource> >(sortedLogs)
                .Select(x =>
            {
                Parallel.ForEach(x.LoverPhotos, photo =>
                {
                    photo.Url = Url.LinkRelative("GetPhoto", new { id = photo.Id });
                });
                return(x);
            });


            IEnumerable <ExpandoObject> shapedLoverLogResources =
                loverLogResources.ToDynamicObject(parameters.Fields)
                .AddLinks(this, parameters.Fields, "GetLoverLog", "DeleteLoverLog", "PartiallyUpdateLoverLog");

            var result = new
            {
                value = shapedLoverLogResources,
                links = this.CreatePaginationLinks("GetLoverLogs", parameters, logs.HasPrevious, logs.HasNext)
            };

            this.AddPaginationHeaderToResponse(logs);

            return(Ok(result));
        }
        public async Task <PaginatedList <LoverLog> > GetLoverLogsAsync(string userId, LoverLogParameters parameters)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException(nameof(userId));
            }

            IQueryable <LoverLog> query = _dbContext.LoverLogs.Include(x => x.LoverPhotos).Where(
                x => x.Lover.LoverCloudUsers.Any(user => user.Id == userId));
            IQueryable <LoverLog> result = query
                                           .Skip(parameters.PageSize * (parameters.PageIndex - 1))
                                           .Take(parameters.PageSize);

            return(new PaginatedList <LoverLog>(
                       parameters.PageIndex, parameters.PageSize,
                       await query.CountAsync(), await result.ToListAsync()));
        }