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(); } }
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; } }
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(); }