/// <summary> /// Picks a winner from the entered raffles /// </summary> public void PickWinner(bool closedByTimer = true) { if (mRaffleEntryList.Count > 0) { /*Close raffle*/ Console.WriteLine("Picking winner..."); mRaffleOpen = false; mRaffleTimer.Stop(); mProvably.PreWin(); Thread.Sleep(500); /*If it was not finished by timer, send in an invalid timestamp to stop timer*/ if (!closedByTimer) { Config.UpdateRaffle UR = new Config.UpdateRaffle() { currentsize = mRaffleSize, raffletime = DateTime.UtcNow.AddHours(-1).ToString("yyyy MM dd HH mm ss") }; string jsonUR = JsonConvert.SerializeObject(UR, Formatting.None); Website.UpdateRaffle(jsonUR); } /*Start new raffle*/ var raffle = new Raffle <Config.Entry>(); foreach (var entry in mRaffleEntryList) { raffle.Add(entry, entry.Value); } /*Draw a winner*/ var winner = raffle.Draw(mProvably.mProvablyOld.RaffleRandom); Console.WriteLine("Winner: {0}", winner.Key.SteamID); Website.NewWinner( winner.Key.SteamID, mProvably.mProvablyNew.PublicKey, mProvably.mProvablyOld.PrivateKey, mProvably.mProvablyOld.PrivateRandom); mProvably.PostWin(); Thread.Sleep(10000); /*Reset raffle*/ mRaffleOpen = true; mRaffleEntryList.Clear(); } else { Console.WriteLine("Need at least one entry to pick a winner"); } }
/// <summary> /// Starts the raffle timer /// </summary> private void StartRaffleTimer() { /*Get utc timestamp*/ Console.WriteLine("Starting timer"); string utcTimestamp = DateTime.UtcNow.AddMinutes(3).ToString("yyyy MM dd HH mm ss"); /*Send info to site and start timer*/ Config.UpdateRaffle ur = new Config.UpdateRaffle() { currentsize = mRaffleSize, raffletime = utcTimestamp }; string jsonur = JsonConvert.SerializeObject(ur, Formatting.Indented); Website.UpdateRaffle(jsonur); mRaffleTimer.Start(); }