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); }
private async Task CreateChallengeRequestForUser(CreateChallengeRequestForUserModel model) { var challengeRequestParams = new ChallengeRequestParams(Status.Active, model.ChallengeOwnerId, model.ChallengerId, model.ChallengeId, Enums.ChallengeRequestStatus.Waiting); CreateOrUpdate(challengeRequestParams); await _hubContext.Clients.Users(model.ChallengerId) .SendAsync("ChallengeRequestReceived", JsonConvert.SerializeObject(GetChallengeRequest(challengeRequestParams.Id))); }
private List <string> SetChallengeRequestsToMissed(int challengeId, int challengeRequestId) { var challengeRequestIds = Entities.Where(x => x.ChallengeId == challengeId && x.Id != challengeRequestId).Select(x => x.Id).ToList(); var userIds = new List <string>(); ChallengeRequestParams challengeRequestParams = new ChallengeRequestParams(); foreach (var id in challengeRequestIds) { var challengeRequest = Get(id); challengeRequestParams = _mapper.Map <ChallengeRequest, ChallengeRequestParams>(challengeRequest); challengeRequestParams.ChallengeRequestStatus = Enums.ChallengeRequestStatus.Missed; CreateOrUpdate(challengeRequestParams); userIds.Add(challengeRequest.ChallengerId); } return(userIds); }