private async Task SendWebSocketEventPlayerJoinedAndInsertCoinFlipBetToMongoDb ( DatabaseModel.CoinFlip coinFlip, DatabaseModel.JackpotSetting currentMatchSetting, List <DatabaseModel.Bet> bets ) { var creatorBet = bets.First(bet => bet.UserId == coinFlip.CreatorUserId); var creatorItemBetted = await _repoServiceFactory.ItemBettedRepoService.FindAsync(creatorBet); var creatorValueBet = creatorItemBetted.Sum(betted => betted.Value); var newBet = bets.First(bet => bet.UserId != coinFlip.CreatorUserId); var itemBetted = await _repoServiceFactory.ItemBettedRepoService.FindAsync(newBet); var valueBet = itemBetted.Sum(betted => betted.Value); var dbUser = await _repoServiceFactory.UserRepoService.FindAsync(newBet.UserId); var user = new User { ImageUrl = dbUser.ImageUrl, Name = dbUser.Name, SteamId = dbUser.SteamId }; var unquieItemDescriptions = itemBetted.Select(item => item.DescriptionId).Distinct().ToList(); var itemDescriptions = await _repoServiceFactory.ItemDescriptionRepoService.FindAsync(unquieItemDescriptions); var items = new List <Item>(); foreach (var itemDescription in itemDescriptions) { foreach (var betted in itemBetted) { if (betted.DescriptionId != itemDescription.Id) { continue; } items.Add(new Item { AssetId = betted.AssetId, DescriptionId = itemDescription.Id, IconUrl = itemDescription.ImageUrl, Name = itemDescription.Name, Value = itemDescription.Value, TookAsRake = false, Owner = user, }); } } var coinflipBet = new CoinFlipBet { IsHead = !coinFlip.CreatorIsHead, Items = items, User = user, DateTime = newBet.Created, Tickets = new RoundTicket { Start = ((int)(creatorValueBet * 100)) + 1, End = (int)((valueBet + creatorValueBet) * 100) } }; var websocketData = new TimerStartedWebsocketModel { RoundId = coinFlip.RoundId, Bet = coinflipBet, DraftingTimeInMilliSec = currentMatchSetting.DraftingTimeInMilliSec }; await _jackpotRepoService.AddBetToMatch(coinFlip, coinflipBet); await _coinFlipHubConnections.MatchTimmerStarted(websocketData); _discordService.CoinFlipJoinAsync(creatorValueBet, coinFlip.RoundId, user.SteamId); }