Esempio n. 1
0
        /// <summary>
        /// 获取指定用户的档案页
        /// </summary>
        /// <param name="userIdCode">用户识别码</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="DossierPage"/></returns>
        public static async Task <DossierPage> Get(string userIdCode, [Injected] KeylolDbContext dbContext,
                                                   [Injected] CachedDataProvider cachedData, [Injected] KeylolUserManager userManager)
        {
            var user = await userManager.FindByIdCodeAsync(userIdCode);

            if (user == null)
            {
                return(new DossierPage());
            }
            return(await CreateAsync(user, StateTreeHelper.GetCurrentUserId(), dbContext, cachedData, userManager));
        }
Esempio n. 2
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);
        }