示例#1
0
        /// <summary>
        /// 创建 <see cref="DetailPage"/>
        /// </summary>
        /// <param name="currentUserId">当前登录用户 ID</param>
        /// <param name="dbContext"><see cref="KeylolDbContext"/></param>
        /// <param name="userManager"><see cref="KeylolUserManager"/></param>
        /// <returns><see cref="DetailPage"/></returns>
        public static async Task <DetailPage> CreateAsync(string currentUserId, KeylolDbContext dbContext,
                                                          KeylolUserManager userManager)
        {
            var couponLogs = await CouponLogList.CreateAsync(currentUserId, 1, true, dbContext, userManager);

            return(new DetailPage
            {
                CouponLogPageCount = couponLogs.Item2,
                CouponLogs = couponLogs.Item1
            });
        }
示例#2
0
        /// <summary>
        /// 创建 <see cref="CouponLogList"/>
        /// </summary>
        /// <param name="currentUserId">当前登录用户 ID</param>
        /// <param name="page">分页页码</param>
        /// <param name="returnPageCount">是否返回总页数</param>
        /// <param name="dbContext"><see cref="KeylolDbContext"/></param>
        /// <param name="userManager"><see cref="KeylolUserManager"/></param>
        /// <returns>Item1 表示 <see cref="CouponLogList"/>,Item2 表示总页数</returns>
        public static async Task <Tuple <CouponLogList, int> > CreateAsync(string currentUserId, int page,
                                                                           bool returnPageCount, KeylolDbContext dbContext, KeylolUserManager userManager)
        {
            var conditionQuery = from log in dbContext.CouponLogs
                                 where log.UserId == currentUserId
                                 orderby log.Sid descending
                                 select log;
            var queryResult = await conditionQuery.Select(l => new
            {
                Count = returnPageCount ? conditionQuery.Count() : 1,
                l.Event,
                l.Change,
                l.Balance,
                l.CreateTime,
                l.Description
            }).TakePage(page, RecordsPerPage).ToListAsync();

            var result = new CouponLogList(queryResult.Count);

            foreach (var l in queryResult)
            {
                result.Add(new CouponLog
                {
                    Event       = l.Event,
                    Change      = l.Change,
                    Balance     = l.Balance,
                    CreateTime  = l.CreateTime,
                    Description = await ParseDescriptionAsync(l.Description, dbContext, userManager)
                });
            }
            var firstRecord = queryResult.FirstOrDefault();

            return(new Tuple <CouponLogList, int>(
                       result,
                       (int)Math.Ceiling(firstRecord?.Count / (double)RecordsPerPage ?? 1)));
        }