public void SetWinners(string drawId)
        {
            var draw = _drawRepository.GetById(drawId);

            if (draw == null)
            {
                throw new ArgumentException($"There is no draw with id: {drawId}");
            }

            if (draw.IsActive)
            {
                throw new ArgumentException($"The draw is still active");
            }

            if (draw.AreWinnersSet)
            {
                return;
            }
            var tickets = _ticketRepository.GetByDrawId(drawId);

            if (tickets == null || tickets.Count() == 0)
            {
                return;
            }

            var winners = new List <Winner>();

            foreach (var ticket in tickets)
            {
                var winningNumbers = GetWinningNumbers(ticket.PickedNumbers, draw.DrawnNumbers);
                if (winningNumbers.Count() < 3)
                {
                    continue;
                }

                var winner = new Winner
                {
                    DrawId         = drawId,
                    TicketId       = ticket.Id,
                    Prize          = GetPrizeForWinningNumbersCount(winningNumbers.Count()),
                    WinningNumbers = winningNumbers
                };
                winners.Add(winner);
            }

            _winnerRepository.AddMany(winners);

            draw.AreWinnersSet = true;
            _drawRepository.Update(draw);
        }