public override void Run() { // This is a sample worker implementation. Replace with your logic. Trace.WriteLine("RaffleWorkerRole entry point called", "Information"); while (true) { Thread.Sleep(15000); var drawRaffleMessage = this.ReadDrawRaffleMessage(); if (drawRaffleMessage != null) { Guid raffleId; RaffleResultEntity raffleResult; try { raffleId = Guid.Parse(drawRaffleMessage.AsString); Trace.WriteLine("Processing Raffle id: " + raffleId); } catch (Exception ex) { Trace.WriteLine("Cannot parse RaffleId from message." + ex.Message); this.DeleteDrawRaffleMessage(drawRaffleMessage); return; } try { raffleResult = this.CreateRaffleResultEntity(raffleId); } catch (Exception ex) { Trace.WriteLine("Error creating raffle result." + ex.Message); raffleResult = new RaffleResultEntity(); raffleResult.RaffleId = raffleId; raffleResult.WinningNumber = -1; raffleResult.WinningTicketNumbers = "Error in draw. " + ex.Message; } try { Trace.WriteLine("Raffle Result for id: " + raffleId); Trace.WriteLine("Winning number: " + raffleResult.WinningNumber); Trace.WriteLine("Winning tickets: " + raffleResult.WinningTicketNumbers); this.SaveRaffleResult(raffleResult); this.DeleteDrawRaffleMessage(drawRaffleMessage); } catch (Exception ex) { Trace.WriteLine("Error saving raffle result. " + ex.Message); } } } }
private RaffleResultEntity CreateRaffleResultEntity(Guid raffleId) { var raffleResult = new RaffleResultEntity(); raffleResult.RaffleId = raffleId; var bets = this.ReadBetEntities(raffleId); var random = new Random(); raffleResult.WinningNumber = random.Next(1, 6); var winningTicketNumbers = new List<int>(); foreach (var bet in bets) { if (bet.BetNumber == raffleResult.WinningNumber) { winningTicketNumbers.Add(bet.TicketNumber); } } if (winningTicketNumbers.Count > 0) { raffleResult.WinningTicketNumbers = string.Join(", ", winningTicketNumbers); } else { raffleResult.WinningTicketNumbers = "No winning tickets"; } return raffleResult; }
private void SaveRaffleResult(RaffleResultEntity raffleResult) { var tableRaffleResults = this.CreateTableClient("RaffleResult"); tableRaffleResults.CreateIfNotExists(); var insertOperation = TableOperation.Insert(raffleResult); tableRaffleResults.Execute(insertOperation); }