Example #1
0
        private void RetryNotifications()
        {
            using (var numberRepository = new RandomNumberRepository())
            {
                var randomNumbersRequiringNotification = numberRepository.GetRandomNumbersRequiringNotification();
                var numbersRequiringNotification       = randomNumbersRequiringNotification.ToList();

                if (numbersRequiringNotification.Any())
                {
                    foreach (var randomNumber in numbersRequiringNotification)
                    {
                        var success = CallServiceForLargeNumberNotification(randomNumber).Result;

                        if (success)
                        {
                            randomNumber.ServiceCallRetryRequired = false;
                            numberRepository.UpdateRandomNumber(randomNumber);
                        }
                    }
                }

                //here we can do it in  one batch instead of saving each number as it comes in
                numberRepository.Save();
            }
        }
Example #2
0
        private void CleanDatabaseForNewRun()
        {
            Log.Info("CleanDatabaseForNewRun");

            try
            {
                using (var numberRepository = new RandomNumberRepository())
                {
                    numberRepository.CleanDatabase();
                    numberRepository.Save();
                }
            }
            catch (Exception ex)
            {
                Log.Error("Failure to delete all random number values in database", ex);
                throw;
            }
        }
Example #3
0
        private void NumberGenerator_NumberGenerated(object sender, NumberGeneratedEventArgs e)
        {
            Log.Info($"Number generated: {e.Number} ");

            lock (_lockObject)
            {
                var randonNumber = new RandomNumber
                {
                    Value         = e.Number,
                    GeneratedTime = DateTime.UtcNow
                };

                randonNumber.ServiceCallRetryRequired = !CallServiceForLargeNumberNotification(randonNumber).Result;

                //instead of saving everything in one batch I am saving per item in case an error interrupts the process and we have a record of what was already generated
                using (var numberRepository = new RandomNumberRepository())
                {
                    numberRepository.AddRandomNumber(randonNumber);
                    numberRepository.Save();
                }
            }
        }
 public void Setup()
 {
     RandomNumberRepository = new RandomNumberRepository();
     RandomNumberRepository.CleanDatabase();
     RandomNumberRepository.Save();
 }