public BotsController(BotsUnitOfWork uow, BotsManager botsManager, DbContextOptions <TwoButtonsContext> dbOptions, ILogger <BotsController> logger) { _uow = uow; _botsManager = botsManager; _dbOptions = dbOptions; _logger = logger; }
public async Task CreateTimer(BotsUnitOfWork db, DbContextOptions <TwoButtonsContext> dbOptions, MagicViewModel magic) { TimerCallback timerDelegate = Task; var errorPercent = _random.Next(3, 5); var errorAnwerType = (AnswerType)_random.Next(1, 3); var firstOptionPercent = magic.FirstOptionPercent; if (errorAnwerType == AnswerType.First) { firstOptionPercent += errorPercent; } else { firstOptionPercent -= errorPercent; } var firstBotsCount = magic.BotsCount * firstOptionPercent / 100; var secondBotsCount = magic.BotsCount - firstBotsCount; var allBots = await db.BotsRepository.GetAllBotsIdsExceptVoted(magic.QuestionId); RandomizerExtension.Shuffle(allBots); var list = new List <BotVoting>(); for (var i = 0; i < firstBotsCount && i < allBots.Count; i++) { list.Add(new BotVoting { BotId = allBots[i], QuestionId = magic.QuestionId, AnswerType = AnswerType.First }); } for (var i = firstBotsCount; i < secondBotsCount + firstBotsCount && i < allBots.Count; i++) { list.Add(new BotVoting { BotId = allBots[i], QuestionId = magic.QuestionId, AnswerType = AnswerType.Second }); } RandomizerExtension.Shuffle(list); foreach (var bot in list) { var job = new JobState { BotId = bot.BotId, AnswerType = bot.AnswerType, QuestionId = bot.QuestionId, DbOptions = dbOptions, Db = db }; //await new TaskFactory().StartNew(() => Task(job)); var timer = new Timer(timerDelegate, job, _random.Next(magic.VoteDurationInMilliseconds), Timeout.Infinite); } }