コード例 #1
0
        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));
        }
コード例 #2
0
        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()));
        }
コード例 #3
0
        /// <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()));
        }