private async Task AddEmptyBonusPredictionsForUser(UserBetGroup newBetUserGroup) { var groups = await _dbContext.WorldCupGroups.ToArrayAsync(); foreach (var group in groups) { var firstTeamInGroupBonusPrediction = new BonusPrediction() { BonusPredictionType = BonusPredictionType.FirstTeamInGroup, UserBetGroup = newBetUserGroup, WorldCupGroupId = group.Id }; _dbContext.Add(firstTeamInGroupBonusPrediction); var secondTeamInGroupBonusPrediction = new BonusPrediction() { BonusPredictionType = BonusPredictionType.SecondTeamInGroup, UserBetGroup = newBetUserGroup, WorldCupGroupId = group.Id, }; _dbContext.Add(secondTeamInGroupBonusPrediction); } var firstTeamInWorldCupBonusPrediction = new BonusPrediction() { BonusPredictionType = BonusPredictionType.FirstTeamInWorldCup, UserBetGroup = newBetUserGroup, }; _dbContext.Add(firstTeamInWorldCupBonusPrediction); var secondTeamInWorldCupBonusPrediction = new BonusPrediction() { BonusPredictionType = BonusPredictionType.SecondTeamInWorldCup, UserBetGroup = newBetUserGroup, }; _dbContext.Add(secondTeamInWorldCupBonusPrediction); var thirdTeamInWorldCupBonusPrediction = new BonusPrediction() { BonusPredictionType = BonusPredictionType.ThirdTeamInWorldCup, UserBetGroup = newBetUserGroup, }; _dbContext.Add(thirdTeamInWorldCupBonusPrediction); }
public async Task <IActionResult> JoinBetGroup([FromBody] JoinBetGroupCommand command) { var user = await GetCurrentUser(); var betGroup = await _dbContext .BetGroups .SingleOrDefaultAsync(q => q.GroupCode == command.GroupCode); if (betGroup == null) { return(NotFound()); } var existingBetUserGroup = await _dbContext .UserBetGroups. SingleOrDefaultAsync(q => q.BetGroupId == betGroup.Id && q.UserId == user.Id); if (existingBetUserGroup != null) { return(Ok(new { betGroup.Name, betGroup.Id })); } var newBetUserGroup = new UserBetGroup() { BetGroupId = betGroup.Id, UserId = user.Id }; _dbContext.Add(newBetUserGroup); await AddEmptyBonusPredictionsForUser(newBetUserGroup); await _dbContext.SaveChangesAsync(); return(Ok(new { betGroup.Name, betGroup.Id })); }