private JobAdSearchExecution Search(JobAdSearch search, JobAdSearchAlert alert) { // Set the criteria recency to ensure only recently added jobs are included in the alert results. var criteria = search.Criteria.Clone(); criteria.Recency = DateTime.Now - alert.LastRunTime; // Run the search as the owner. var member = new Member { Id = search.OwnerId }; // Search. var execution = new JobAdSearchExecution { SearcherId = search.OwnerId, Criteria = search.Criteria, Context = "Alert", Results = _executeJobAdSearchCommand.Search(member, criteria, new Range(0, MaximumResults)).Results, }; // Update the last run time for next time. _jobAdSearchAlertsCommand.UpdateLastRunTime(search.Id, DateTime.Now); return(execution); }
public static SavedJobSearchAlertEntity Map(this JobAdSearchAlert alert) { return(new SavedJobSearchAlertEntity { id = alert.Id, lastRunTime = alert.LastRunTime, }); }
private void CreateJobAdSearchAlert(Guid searchId, DateTime lastRunTime) { var alert = new JobAdSearchAlert { JobAdSearchId = searchId }; alert.Prepare(); alert.Validate(); _repository.CreateJobAdSearchAlert(alert); // Set the last run time. _repository.UpdateJobAdSearchLastRunTime(searchId, lastRunTime); }
void ISearchAlertsRepository.CreateJobAdSearchAlert(JobAdSearchAlert alert) { using (var dc = CreateContext()) { dc.SavedJobSearchAlertEntities.InsertOnSubmit(alert.Map()); // Need to update the corresponding search entity. var entity = GetSavedJobSearchEntity(dc, alert.JobAdSearchId); entity.alertId = alert.Id; dc.SubmitChanges(); } }