public async Task <IActionResult> Get( [FromRoute] string menstruationLogId, [FromQuery] MenstruationDescriptionParameters parameters) { LoverCloudUser user = await _userRepository.FindByIdAsync( this.GetUserId()); if (user.Sex == Sex.Male) { return(Forbid()); } PaginatedList <MenstruationDescription> descriptions = await _mdescriptionRepository.GetAsync( user.Id, menstruationLogId, parameters); IEnumerable <MenstruationDescriptionResource> descriptionResources = _mapper.Map <IEnumerable <MenstruationDescriptionResource> >(descriptions); IEnumerable <ExpandoObject> shapedDescriptionResources = descriptionResources.ToDynamicObject(parameters.Fields); var result = new { value = shapedDescriptionResources, links = this.CreatePaginationLinks( "GetMenstruationDescriptions", parameters, descriptions.HasPrevious, descriptions.HasNext) }; this.AddPaginationHeaderToResponse(descriptions); return(Ok(result)); }
public async Task <PaginatedList <MenstruationDescription> > GetAsync( string userId, string menstruationLogId, MenstruationDescriptionParameters parameters) { IQueryable <MenstruationDescription> descriptions = _dbContext.MenstruationDescriptions.Where( x => x.MenstruationLog.Id == menstruationLogId && x.MenstruationLog.LoverCloudUser.Id == userId); IQueryable <MenstruationDescription> query = descriptions.Skip( parameters.PageSize * (parameters.PageIndex - 1)) .Take(parameters.PageSize); return(new PaginatedList <MenstruationDescription>( parameters.PageIndex, parameters.PageSize, await descriptions.CountAsync(), await query.ToListAsync())); }
/// <summary> /// 获取姨妈描述翻页集合 /// </summary> /// <param name="userId">拥有本资源的用户Id</param> /// <param name="menstruationLogId">姨妈日志Id</param> /// <param name="parameters">查询参数</param> /// <param name="configInclude">配置数据库表连接</param> /// <returns></returns> public async Task <PaginatedList <MenstruationDescription> > GetAsync( string userId, string menstruationLogId, MenstruationDescriptionParameters parameters, Func <DbSet <MenstruationDescription>, IQueryable <MenstruationDescription> > configInclude = null) { IQueryable <MenstruationDescription> descriptions = (configInclude?.Invoke( _dbContext.MenstruationDescriptions) ?? _dbContext.MenstruationDescriptions) .Where(x => userId == x.MenstruationLog.LoverCloudUser.Id && x.MenstruationLog.Id == menstruationLogId); IQueryable <MenstruationDescription> query = descriptions.Where( x => parameters.Date.HasValue ? x.Date.Date == parameters.Date.Value.Date : true) .Skip(parameters.PageSize * (parameters.PageIndex - 1)) .Take(parameters.PageSize); return(new PaginatedList <MenstruationDescription>( parameters.PageIndex, parameters.PageSize, await descriptions.CountAsync(), await query.ToListAsync())); }