private void CloseExpiredJobAds() { const string method = "CloseExpiredJobAds"; EventSource.Raise(Event.Information, method, "Closing expired job ads"); var ids = _jobAdsQuery.GetExpiredJobAdIds(); var count = 0; foreach (var id in ids) { try { var jobAd = _jobAdsQuery.GetJobAd <JobAd>(id); if (jobAd != null) { _jobAdsCommand.CloseJobAd(jobAd); ++count; } } catch (Exception ex) { EventSource.Raise(Event.Error, method, string.Format("Could not close the '{0}' job ad.", id), ex); } } EventSource.Raise(Event.Information, method, string.Format("{0} expired job ads were closed.", count)); }
public void TestGetExpiredJobAds() { var employer = CreateEmployer(); // Create an open job ad. var activeJobAd = _jobAdsCommand.PostTestJobAd(employer); // Create an open job ad that has expired. var expiredJobAd = employer.CreateTestJobAd(); _jobAdsCommand.PostJobAd(expiredJobAd); expiredJobAd.ExpiryTime = DateTime.Now.AddDays(-1); _jobAdsCommand.UpdateJobAd(expiredJobAd); Assert.AreEqual(JobAdStatus.Open, activeJobAd.Status); Assert.AreEqual(JobAdStatus.Open, expiredJobAd.Status); // Get the expired job ads. var ids = _jobAdsQuery.GetExpiredJobAdIds(); Assert.AreEqual(1, ids.Count); Assert.AreEqual(expiredJobAd.Id, ids[0]); // Close them. foreach (var id in ids) { var closeJobAd = _jobAdsQuery.GetJobAd <JobAdEntry>(id); _jobAdsCommand.CloseJobAd(closeJobAd); } // Check the status. var jobAd = _jobAdsCommand.GetJobAd <JobAdEntry>(activeJobAd.Id); Assert.AreEqual(JobAdStatus.Open, jobAd.Status); jobAd = _jobAdsCommand.GetJobAd <JobAdEntry>(expiredJobAd.Id); Assert.AreEqual(JobAdStatus.Closed, jobAd.Status); // Do it again. Assert.AreEqual(0, _jobAdsQuery.GetExpiredJobAdIds().Count); }