Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        private void SaveRaffleResult(RaffleResultEntity raffleResult)
        {
            var tableRaffleResults = this.CreateTableClient("RaffleResult");

            tableRaffleResults.CreateIfNotExists();

            var insertOperation = TableOperation.Insert(raffleResult);
            tableRaffleResults.Execute(insertOperation);
        }