예제 #1
0
 public GetChallengerIdsModel(string accessToken, FilterUsersViewModel model, string baseUrl = null, string api = null)
 {
     AccessToken          = accessToken;
     BaseUrl              = baseUrl ?? AppSettingsProvider.IdentityBaseUrl;
     Api                  = api ?? "";
     FilterUsersViewModel = model;
 }
예제 #2
0
        public async Task <IReadOnlyList <string> > CreateChallengeRequests(CreateChallengeRequestModel model)
        {
            var filterUsersViewModel = new FilterUsersViewModel(model.ChallengeOwnerId, model.Points, model.Range, model.IsBotActivated);
            var userIds = await GetChallengerIds(
                new GetChallengerIdsModel(
                    model.AccessToken,
                    filterUsersViewModel,
                    AppSettingsProvider.LoyaltyBaseUrl,
                    AppSettingsProvider.FilterUsersUrl));

            //var filteredUserId = ExcludeOutOfRangeUsers(model.Range, model.ChallengeOwnerId, userIds);
            //filteredUserId = ApplyGenderFilter(model.Gender, model.ChallengeOwnerId, filteredUserId);

            foreach (var userId in userIds)
            {
                var challengeRequestParams = new ChallengeRequestParams(Status.Active, model.ChallengeOwnerId, userId, model.ChallengeId, Enums.ChallengeRequestStatus.Waiting);
                CreateOrUpdate(challengeRequestParams);

                await _hubContext.Clients.User(userId)
                .SendAsync("ChallengeRequestReceived", JsonConvert.SerializeObject(GetChallengeRequest(challengeRequestParams.Id)));
            }

            if (model.IsBotActivated)
            {
                var acceptingUserId  = userIds.FirstOrDefault();
                var botUser          = _userService.GetUserByUserId(acceptingUserId);
                var challengeRequest = Entities.FirstOrDefault(x => x.ChallengeId == model.ChallengeId && x.ChallengerId == acceptingUserId && x.ChallengeOwnerId == model.ChallengeOwnerId);

                await BotActivationAsync(model, challengeRequest.Id, botUser.Nickname);
            }

            return(userIds);
        }
예제 #3
0
        public IActionResult Admin(FilterUsersViewModel model)
        {
            if (!String.IsNullOrEmpty(model.FilterString))
            {
                model.Users = uLogic.GetAllByFilter(model.FilterString);
            }

            return(View(model));
        }
예제 #4
0
        public async Task <IActionResult> FilterUsers(FilterUsersViewModel model)
        {
            var accessToken = HttpContext.Request.Headers["Authorization"].ToString().GetAccessTokenFromHeaderString();

            var sufficientPoints = await _loyaltyService.SufficientPoints(accessToken, model.Point, model.IsBotActivated);

            var sufficientUserIds = sufficientPoints.Select(x => x.UserId).ToList();
            var userIds           = _loyaltyService.ExcludeOutOfRangeUsers(model.Range, model.ChallengeOwnerId, sufficientUserIds);


            return(Ok(userIds));
        }