private JobAd GetExistingJobAd(Guid jobPosterId, JobAdEntry jobAd) { var existingJobAd = _externalJobAdsCommand.GetExistingJobAd(jobAd.Integration.IntegratorUserId.Value, jobPosterId, jobAd.Integration.ExternalReferenceId); if (existingJobAd == null) { return(null); } // Must be either a draft or open job ad. switch (jobAd.Status) { case JobAdStatus.Draft: switch (existingJobAd.Status) { case JobAdStatus.Draft: return(existingJobAd); case JobAdStatus.Open: // Want to turn an open job ad into a draft one. Close the original so a new draft version can be created. _jobAdsCommand.CloseJobAd(existingJobAd); return(null); default: return(null); } case JobAdStatus.Open: switch (existingJobAd.Status) { case JobAdStatus.Draft: case JobAdStatus.Open: case JobAdStatus.Closed: return(existingJobAd); default: return(null); } default: return(null); } }
public AmendAdvertResponseMessage AmendAdvert(AmendAdvertRequestMessage request) { const string method = "AmendAdvert"; EventSource.Raise(Event.Information, method, Event.Arg("request", request)); IntegratorUser integratorUser; IEmployer jobPoster; CheckUser(request.UserCredentials, out integratorUser, out jobPoster); var errors = new List <string>(); var report = new AmendAdvertReport(); foreach (var amendAd in request.AmendAdvert.Adverts.AmendAdvert) { report.JobAds++; try { var jobAd = _externalJobAdsCommand.GetExistingJobAd(integratorUser.Id, amendAd.JobReference); if (jobAd != null) { MapJobAd(amendAd, jobAd); // Make sure the job is open. _jobAdsCommand.UpdateJobAd(jobAd); _jobAdsCommand.OpenJobAd(jobAd); report.Updated++; } else { EventSource.Raise(Event.Warning, method, "Job ad not found. No action has been taken.", Event.Arg("amendAd", amendAd)); } } catch (ServiceEndUserException e) { EventSource.Raise(Event.Error, method, e, null, Event.Arg("amendAd", amendAd)); errors.Add(string.Format("JobReference='{0}': {1}", amendAd.JobReference, e.Message)); report.Failed++; } catch (Exception e) { EventSource.Raise(Event.Error, method, e, null, Event.Arg("amendAd", amendAd)); errors.Add(string.Format("JobReference='{0}': Unexpected error.", amendAd.JobReference)); report.Failed++; } } // Record it. _jobAdIntegrationReportsCommand.CreateJobAdIntegrationEvent(new JobAdImportPostEvent { Success = true, IntegratorUserId = integratorUser.Id, PosterId = jobPoster.Id, JobAds = report.JobAds, Closed = 0, Failed = report.Failed, Posted = 0, Updated = report.Updated }); var response = new AmendAdvertResponseMessage { AmendAdvertResponse = new Response { Success = string.Join("\r\n", errors.ToArray()) } }; EventSource.Raise(Event.Information, method, Event.Arg("response", response)); return(response); }