Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }