/// <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));
 }
Beispiel #4
0
        /// <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));
 }
Beispiel #8
0
 /// <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);
 }
Beispiel #14
0
 /// <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));
 }
Beispiel #15
0
        /// <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);
        }
Beispiel #16
0
 /// <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));
 }