public StyleTests(Fixture fixture)
     : base(fixture)
 {
     this.page = this.GoTo <StylePage>();
 }
Example #2
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);
        }