Пример #1
0
        private async Task DraftWinner(DatabaseModel.CoinFlip match, DatabaseModel.JackpotSetting matchSetting, List <DatabaseModel.Bet> betsOnMatch)
        {
            var itemBetsOnMatch = await _repoServiceFactory.ItemBettedRepoService.FindAsync(betsOnMatch);

            var percentage  = Convert.ToDouble(match.Percentage, CultureInfo.InvariantCulture);
            var winningBet  = _draftService.GetWinningBet(percentage, betsOnMatch, itemBetsOnMatch);
            var winningUser = await _repoServiceFactory.UserRepoService.FindAsync(winningBet.Bet.UserId);

            match.WinnerId = winningUser.Id;
            match.Status   = (int)MatchStatus.Drafting;
            await _repoServiceFactory.CoinFlipMatchRepoService.UpdateAsync(match);

            await _jackpotRepoService.UpdateStatusForMatch(match, MatchStatus.Drafting);

            await _jackpotRepoService.SetWinnerForMatch(match, new UserWithQuote
            {
                ImageUrl = winningUser.ImageUrl,
                Name     = winningUser.Name,
                SteamId  = winningUser.SteamId,
                Quote    = winningUser.Quote
            });

            await _jackpotRepoService.SetWinnerTicketForMatch(match, winningBet.WinningTicket + 1);

            var potValue = itemBetsOnMatch.Sum(itemBet => itemBet.Value);

            await _coinFlipHubConnections.MatchDrafting(new CoinFlipWinnerSelected
            {
                Winner = new UserWithQuote
                {
                    ImageUrl = winningUser.ImageUrl,
                    Name     = winningUser.Name,
                    SteamId  = winningUser.SteamId,
                    Quote    = winningUser.Quote,
                },
                Percentage    = match.Percentage,
                PotValue      = potValue,
                RoundId       = match.RoundId,
                WinningTicket = winningBet.WinningTicket + 1,
                Salt          = match.Salt,
            });

            await _draftService.ChangeOwnerOfItems(betsOnMatch, itemBetsOnMatch, winningUser, match.Id, matchSetting.Rake, _currentGamemode.Id);

            _discordService.CoinFlipWinnerAsync(match.RoundId, potValue);
        }