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