public async Task <IActionResult> Get([FromQuery] MenstruationLogParameters parameters)
        {
            string userId = this.GetUserId();

            PaginatedList <MenstruationLog> mlogs = await _mlogRepository.GetAsync(userId, parameters);

            IEnumerable <MenstruationLog> sortedMlogs = mlogs.AsQueryable()
                                                        .ApplySort(
                parameters.OrderBy, _propertyMappingContainer.Resolve <MenstruationLogResource, MenstruationLog>());

            IEnumerable <ExpandoObject> shapedMlogs = sortedMlogs.ToDynamicObject(parameters.Fields)
                                                      .AddLinks(
                this, parameters.Fields, "menstruation_log", null, "DeleteMenstruationLog", "PartiallyUpdateMenstruationLog");

            var result = new
            {
                values = shapedMlogs,
                links  = this.CreatePaginationLinks(
                    "GetMenstruationLogs", parameters,
                    mlogs.HasPrevious, mlogs.HasNext),
            };

            this.AddPaginationHeaderToResponse(mlogs);

            return(Ok(result));
        }
        public async Task <PaginatedList <MenstruationLog> > GetAsync(string userId, MenstruationLogParameters parameters)
        {
            IQueryable <MenstruationLog> mlogs = _dbContext.MenstruationLogs.Where(x => x.LoverCloudUser.Id == userId);
            IQueryable <MenstruationLog> query = mlogs.Skip(parameters.PageSize * (parameters.PageIndex - 1))
                                                 .Take(parameters.PageSize);

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