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