Ejemplo n.º 1
0
        public async Task <IActionResult> Subscribe()
        {
            Console.WriteLine($"/pollinator/atom/subscribe{Request.QueryString}");

            string uriQuery = Request.Query["uri"];

            var user = await GetUserFromUriQuery(uriQuery);

            var aggregator = await GetAggregatorFromUriQuery(uriQuery);

            if (user == null && aggregator == null)
            {
                return(Ok());
            }

            var author = await _userManager.GetUserAsync(User);

            if (user != null)
            { // user subscription
                // only add subscription when the subscription doesn't already exist
                // and if the requested user is not the author
                if (await _userSubscriptionManager.FindAsync(author, user) == null &&
                    user.Id != author.Id)
                {
                    // add subscription
                    if (!await _userSubscriptionManager.AddAsync(author, user))
                    {
                        return(StatusCode(500));
                    }
                }

                // redirect request to /user/{userId}
                return(await AtomUser(user.Id));
            }
            else
            { // aggregator subscription
                // only add subscription when the subscription doesn't already exist
                // and if the requested aggregator author is not the author
                if (await _aggregatorSubscriptionManager.FindAsync(author, aggregator) == null &&
                    author.Id != aggregator.AuthorId)
                {
                    // add subscription
                    if (!await _aggregatorSubscriptionManager.AddAsync(author, aggregator))
                    {
                        return(StatusCode(500));
                    }
                }

                // redirect request to /aggregator/{id}
                return(await Aggregator(aggregator.AggregatorId));
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> OnGet(Int64 id)
        {
            Console.WriteLine($"/community/assetBrowser/profile/{id}{Request.QueryString}");

            ProfileUser = await _userManager.FindByIdAsync($"{id}");

            CurrentUser = await _userManager.GetUserAsync(User);

            // make sure ProfileUser exists
            if (ProfileUser == null)
            {
                return(NotFound());
            }

            Subscribed = await _userSubscriptionManager.FindAsync(CurrentUser, ProfileUser) != null;

            AchievementIndex         = 0;
            NextAchievementIndex     = 3;
            PreviousAchievementIndex = -1;

            AssetIndex         = 0;
            NextAssetIndex     = 10;
            PreviousAssetIndex = -1;

            AggregatorIndex         = 0;
            NextAggregatorIndex     = 5;
            PreviousAggregatorIndex = -1;

            var requestQuery = Request.Query;

            if (requestQuery.ContainsKey("achievementIndex") &&
                Int32.TryParse(requestQuery["achievementIndex"], out Int32 achievementIndex))
            {
                AchievementIndex         = achievementIndex;
                NextAchievementIndex     = achievementIndex + 3;
                PreviousAchievementIndex = achievementIndex - 3;
            }

            if (requestQuery.ContainsKey("assetIndex") &&
                Int32.TryParse(requestQuery["assetIndex"], out Int32 creationIndex))
            {
                AssetIndex         = creationIndex;
                NextAssetIndex     = creationIndex + 10;
                PreviousAssetIndex = creationIndex - 10;
            }

            if (requestQuery.ContainsKey("aggregatorIndex") &&
                Int32.TryParse(requestQuery["aggregatorIndex"], out Int32 sporecastIndex))
            {
                AggregatorIndex         = sporecastIndex;
                NextAggregatorIndex     = sporecastIndex + 5;
                PreviousAggregatorIndex = sporecastIndex - 5;
            }

            var unlockedAchievementIds = await _achievementManager.FindAllByAuthorAsync(ProfileUser);

            UnlockedAchievementCount = unlockedAchievementIds == null ? 0 : unlockedAchievementIds.Length;
            UnlockedAchievementIds   = unlockedAchievementIds?
                                       .Reverse()
                                       .Skip(AchievementIndex)
                                       .Take(3)
                                       .ToArray();

            var assets = await _assetManager.FindAllByUserIdAsync(ProfileUser.Id);

            AssetCount = assets == null ? 0 : assets.Length;
            Assets     = assets?
                         .OrderByDescending(a => a.Timestamp)
                         .Skip(AssetIndex)
                         .Take(10)
                         .ToArray();

            var aggregators = await _aggregatorManager.FindByAuthorAsync(ProfileUser);

            AggregatorCount = aggregators == null ? 0 : aggregators.Length;
            Aggregators     = aggregators?
                              .OrderByDescending(a => a.Timestamp)
                              .Skip(AggregatorIndex)
                              .Take(5)
                              .ToArray();

            var aggregatorSubscriptions = await _aggregatorSubscriptionManager.FindAllByAuthorAsync(CurrentUser);

            AggregatorSubscriptions = aggregatorSubscriptions
                                      .Select(s => s.AggregatorId)
                                      .ToArray();

            return(Page());
        }