/// <summary> /// 获取听众消息列表 /// </summary> /// <param name="page">分页页码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns><see cref="PostOfficeMessageList"/></returns> public static async Task <PostOfficeMessageList> GetMessages(int page, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return((await PostOfficeMessageList.CreateAsync(typeof(SubscriberPage), StateTreeHelper.GetCurrentUserId(), page, false, dbContext, cachedData)).Item1); }
/// <summary> /// 获取用户听众列表 /// </summary> /// <param name="userId">用户 ID</param> /// <param name="page">分页页码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns><see cref="UserEntryList"/></returns> public static async Task <UserEntryList> GetSubscribers(string userId, int page, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return((await UserEntryList.CreateAsync(userId, StateTreeHelper.GetCurrentUserId(), UserRelationship.Subscriber, false, page, dbContext, cachedData)).Item1); }
/// <summary> /// 获取听众消息页 /// </summary> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns><see cref="SubscriberPage"/></returns> public static async Task <SubscriberPage> Get([Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return(await CreateAsync(StateTreeHelper.GetCurrentUserId(), dbContext, cachedData)); }
/// <summary> /// 创建 <see cref="UserLevel"/> /// </summary> /// <param name="currentUserId">当前登录用户 ID</param> /// <param name="userIdCode">用户识别码</param> /// <param name="targetPage">要获取的页面</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <param name="userManager"><see cref="KeylolUserManager"/></param> /// <returns><see cref="UserLevel"/></returns> public static async Task <UserLevel> CreateAsync(string currentUserId, string userIdCode, EntrancePage targetPage, KeylolDbContext dbContext, CachedDataProvider cachedData, KeylolUserManager userManager) { var user = await userManager.FindByIdCodeAsync(userIdCode); if (user == null) { return(new UserLevel()); } var result = new UserLevel { BasicInfo = await UserBasicInfo.CreateAsync(currentUserId, user, dbContext, cachedData, userManager) }; switch (targetPage) { case EntrancePage.Auto: // if (await cachedData.Subscriptions // .IsSubscribedAsync(currentUserId, user.Id, SubscriptionTargetType.User)) // { // result.Current = EntrancePage.Timeline; // } // else // { // result.Dossier = // await DossierPage.CreateAsync(user, currentUserId, dbContext, cachedData, userManager); // result.Current = EntrancePage.Dossier; // } result.Dossier = await DossierPage.CreateAsync(user, currentUserId, dbContext, cachedData, userManager); result.Current = EntrancePage.Dossier; break; case EntrancePage.Dossier: result.Dossier = await DossierPage.CreateAsync(user, currentUserId, dbContext, cachedData, userManager); break; case EntrancePage.People: result.People = await PeoplePage.CreateAsync(user.Id, currentUserId, dbContext, cachedData); break; case EntrancePage.Timeline: result.Timeline = await TimelinePage.CreateAsync(user.Id, currentUserId, dbContext, cachedData); break; case EntrancePage.Edit: if (await StateTreeHelper.CanAccessAsync <UserLevel>(nameof(Edit))) { result.Edit = await EditPage.CreateAsync(user, currentUserId, dbContext, userManager); } break; default: throw new ArgumentOutOfRangeException(nameof(targetPage), targetPage, null); } return(result); }
/// <summary> /// 获取文券记录列表 /// </summary> /// <param name="page">分页页码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="userManager"><see cref="KeylolUserManager"/></param> /// <returns><see cref="CouponLogList"/></returns> public static async Task <CouponLogList> Get(int page, [Injected] KeylolDbContext dbContext, [Injected] KeylolUserManager userManager) { return((await CreateAsync(StateTreeHelper.GetCurrentUserId(), page, false, dbContext, userManager)).Item1); }
/// <summary> /// 获取近畿据点列表 /// </summary> /// <param name="pointId">据点 ID</param> /// <param name="page">分页页码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns><see cref="SimilarPointList"/></returns> public static async Task <SimilarPointList> Get(string pointId, int page, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return(await CreateAsync(pointId, StateTreeHelper.GetCurrentUserId(), page, dbContext, cachedData)); }
/// <summary> /// 通过关键字搜索用户列表 /// </summary> /// <param name="keyword">搜索关键字</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <param name="page">分页页码</param> /// <param name="searchAll">是否全部查询</param> public static async Task <UserResultList> Get(string keyword, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData, int page, bool searchAll = true) { return (await CreateAsync(StateTreeHelper.GetCurrentUserId(), keyword, dbContext, cachedData, page, searchAll)); }
/// <summary> /// 获取文券上榜用户列表 /// </summary> /// <param name="page">分页页码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns><see cref="RankingUserList"/></returns> public static async Task <RankingUserList> Get(int page, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return(await CreateAsync(StateTreeHelper.GetCurrentUserId(), page, dbContext, cachedData)); }
/// <summary> /// 获取指定动态评论列表(用于轨道卡片) /// </summary> /// <param name="activityId">动态 ID</param> /// <param name="take">获取数量</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <param name="before">起始位置</param> /// <returns><see cref="ActivityCommentList"/></returns> public static async Task <ActivityCommentList> GetComments(string activityId, int take, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData, int before = int.MaxValue) { return(await ActivityCommentList.CreateAsync(activityId, StateTreeHelper.GetCurrentUserId(), before, take, StateTreeHelper.GetCurrentUser().IsInRole(KeylolRoles.Operator), dbContext, cachedData)); }
/// <summary> /// 获取指定页码的最近有动态的据点列表 /// </summary> /// <param name="page">分页页码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns>最新文章列表</returns> public static async Task <RecentPointList> Get(int page, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return((await CreateAsync(StateTreeHelper.GetCurrentUserId(), page, false, dbContext, cachedData)).Item1); }
/// <summary> /// 获取时间轴卡片列表 /// </summary> /// <param name="pointId">据点 ID</param> /// <param name="before">起始位置</param> /// <param name="take">获取数量</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns><see cref="TimelineCardList"/></returns> public static async Task <TimelineCardList> GetCards(string pointId, int before, int take, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return(await TimelineCardList.CreateAsync(PointStream.Name(pointId), StateTreeHelper.GetCurrentUserId(), take, false, dbContext, cachedData, before)); }
/// <summary> /// 创建 <see cref="CouponGiftList"/> /// </summary> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <param name="userManager"><see cref="KeylolUserManager"/></param> /// <param name="coupon"><see cref="CouponProvider"/></param> /// <returns><see cref="CouponGiftList"/></returns> public static async Task <CouponGiftList> Get([Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData, [Injected] KeylolUserManager userManager, [Injected] CouponProvider coupon) { return(await CreateAsync(StateTreeHelper.GetCurrentUserId(), dbContext, cachedData, userManager, coupon)); }
/// <summary> /// 获取指定用户的文选 /// </summary> /// <param name="userId">用户 ID</param> /// <param name="page">分页页码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns></returns> public static async Task <SelectedArticleList> Get(string userId, int page, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return((await CreateAsync(userId, page, 12, false, StateTreeHelper.GetCurrentUserId(), dbContext, cachedData)).Item1); }
/// <summary> /// 获取文券明细页 /// </summary> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="userManager"><see cref="KeylolUserManager"/></param> /// <returns><see cref="DetailPage"/></returns> public static async Task <DetailPage> Get([Injected] KeylolDbContext dbContext, [Injected] KeylolUserManager userManager) { return(await CreateAsync(StateTreeHelper.GetCurrentUserId(), dbContext, userManager)); }
/// <summary> /// 创建 <see cref="PointLevel"/> /// </summary> /// <param name="currentUserId">当前登录用户 ID</param> /// <param name="pointIdCode">据点识别码</param> /// <param name="targetPage">要获取的页面</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns></returns> /// <exception cref="ArgumentOutOfRangeException"><paramref name="targetPage"/> 超出范围</exception> public static async Task <PointLevel> CreateAsync(string currentUserId, string pointIdCode, EntrancePage targetPage, KeylolDbContext dbContext, CachedDataProvider cachedData) { var point = await dbContext.Points.Where(p => p.IdCode == pointIdCode).SingleOrDefaultAsync(); if (point == null) { return(new PointLevel()); } var result = new PointLevel { BasicInfo = await Shared.PointBasicInfo.CreateAsync(currentUserId, point, dbContext, cachedData) }; switch (targetPage) { case EntrancePage.Auto: // if (await cachedData.Subscriptions // .IsSubscribedAsync(currentUserId, point.Id, SubscriptionTargetType.Point)) // { // result.Current = EntrancePage.Timeline; // } // else // { // result.Frontpage = await FrontpagePage.CreateAsync(point, currentUserId, dbContext, cachedData); // result.Current = EntrancePage.Frontpage; // } result.Frontpage = await FrontpagePage.CreateAsync(point, currentUserId, dbContext, cachedData); result.Current = EntrancePage.Frontpage; break; case EntrancePage.Frontpage: result.Frontpage = await FrontpagePage.CreateAsync(point, currentUserId, dbContext, cachedData); break; case EntrancePage.Intel: result.Intel = await IntelPage.CreateAsync(point, currentUserId, dbContext, cachedData); break; case EntrancePage.Product: result.Product = await ProductPage.CreateAsync(point, currentUserId, dbContext, cachedData); break; case EntrancePage.Timeline: result.Timeline = await TimelinePage.CreateAsync(point.Id, currentUserId, dbContext, cachedData); break; case EntrancePage.EditInfo: if (await StateTreeHelper.CanAccessAsync <PointLevel>(nameof(Edit))) { result.Edit = new EditLevel { Info = await InfoPage.CreateAsync(point, dbContext) } } ; break; case EntrancePage.EditStyle: if (await StateTreeHelper.CanAccessAsync <PointLevel>(nameof(Edit))) { result.Edit = new EditLevel { Style = StylePage.Create(point) } } ; break; default: throw new ArgumentOutOfRangeException(nameof(targetPage), targetPage, null); } return(result); }
/// <summary> /// 获取据点层级状态树 /// </summary> /// <param name="entrance">要获取的页面</param> /// <param name="pointIdCode">据点识别码</param> /// <param name="dbContext"><see cref="KeylolDbContext"/></param> /// <param name="cachedData"><see cref="CachedDataProvider"/></param> /// <returns><see cref="PointLevel"/></returns> public static async Task <PointLevel> Get(string entrance, string pointIdCode, [Injected] KeylolDbContext dbContext, [Injected] CachedDataProvider cachedData) { return(await CreateAsync(StateTreeHelper.GetCurrentUserId(), pointIdCode, entrance.ToEnum <EntrancePage>(), dbContext, cachedData)); }