public async Task <IActionResult> OnGet()
        {
            string searchString = Request.Query["searchText"];

            if (String.IsNullOrEmpty(searchString))
            {
                Searched = false;
                return(Page());
            }

            CurrentUser = await _userManager.GetUserAsync(User);

            Users = await _userManager.Users
                    .Where(u =>
                           u.UserName != null &&
                           (
                               (u.UserName.Contains(searchString)) ||
                               (u.Email == searchString)
                           )
                           )
                    .OrderBy(u => u.UserName)
                    .Take(25)
                    .ToArrayAsync();

            var userSubscriptions = await _userSubscriptionManager.FindAllByAuthorAsync(CurrentUser);

            SubscribedUsers = userSubscriptions
                              .Select(s => s.User)
                              .ToArray();

            SearchString = searchString;
            Searched     = true;

            return(Page());
        }
Example #2
0
        public async Task <IActionResult> HandShake()
        {
            var user = await _userManager.GetUserAsync(User);

            var asset = await _assetManager.FindByIdAsync(user.NextAssetId);

            var aggregators = await _aggregatorManager.FindByAuthorAsync(user);

            var userSubscriptions = await _userSubscriptionManager.FindAllByAuthorAsync(user);

            var aggregatorSubscriptions = await _aggregatorSubscriptionManager.FindAllByAuthorAsync(user);

            var aggregatorSubscriptionCounts = new List <Int32>();

            // retrieve subscription count for each aggregator
            foreach (var aggregator in aggregators)
            {
                var aggregatorSubscriptionCount = await _aggregatorSubscriptionManager.GetSubscriberCountAsync(aggregator);

                aggregatorSubscriptionCounts.Add(aggregatorSubscriptionCount);
            }

            // reserve new asset when
            //      * user has no reserved asset
            //      * user has a used asset
            if (user.NextAssetId == 0 ||
                (asset != null && asset.Used))
            {
                // when reserving a new asset fails, error out
                if (!await _assetManager.ReserveAsync(user))
                {
                    return(StatusCode(500));
                }
            }

            return(AtomFeedBuilder.CreateFromTemplate(
                       new HandshakeTemplate(user, aggregators, aggregatorSubscriptionCounts.ToArray(), userSubscriptions, aggregatorSubscriptions)
                       ).ToContentResult());
        }