public void Cancel(JobCancellation.CancelReason reason, string userName, string comment, IOenRepository oenRepository) { if (!TerminatingStatuses.Contains(Status)) { var targets = oenRepository.Retrieve<JobTarget>().Where(t => t.job_id == job_id).ToList(); var blendingJobs = oenRepository.GetBlendingJobs(this); targets.AddRange(from j in blendingJobs join t in oenRepository.Retrieve<JobTarget>() on j.job_id equals t.job_id select t); targets.ForEach(t => t.jobtargetstatus_id = 4); oenRepository.AddJobCancellation(new JobCancellation() { Comment = comment, JobId = job_id, Reason = reason, StatusWhenCancelled = Status, User = userName }); Status = Statuses.Cancelled; } }
public void UpdateTrackingDomains(IEnumerable<string> hostNames, IOenRepository repository) { if (!domaingroup_id.HasValue) { throw new Exception("No Domain Group assigned"); } var trackingDomains = (from td in repository.Retrieve<TrackingDomain>().Where(t => t.DeliveryGroupId == deliveryGroup_id) join d in repository.GetDomains() on td.DomainId equals d.domain_id select new { TrackingDomain = td, Domain = d }).ToList(); trackingDomains.ForEach(t => { t.TrackingDomain.Enabled = hostNames.Any(vt => vt.ToLower() == t.Domain.host.ToLower()); }); var existingHostNames = trackingDomains.Where(t => t.Domain != null).Select(t => t.Domain.host.ToLower()).Distinct(); var trackingDomainsToInsert = hostNames.Where(t => !existingHostNames.Contains(t.ToLower())).ToList(); // Once for validation so none are created unless all are valid trackingDomainsToInsert.ForEach(t => { var domain = repository.GetDomains().FirstOrDefault(d => d.host == t && d.domainGroup_id != domaingroup_id); if (domain != null) { throw new Exception("Tracking Domain in use by a different group"); } }); trackingDomainsToInsert.ForEach(t => { var domain = repository.GetDomains().FirstOrDefault(d => d.host == t); if (domain == null) { domain = repository.AddDomain(new Domain { host = t, domainGroup_id = domaingroup_id, enabled = true }); repository.SaveChanges(); } repository.AddTrackingDomain(new TrackingDomain() { Enabled = true, DeliveryGroupId = deliveryGroup_id, DomainId = domain.domain_id }); }); }