private Task <IJobTemplate> CreateJobTemplate(string templateName, JobTemplateType templateType, params ITaskTemplate[] taskTemplates) { X509Certificate2 certToUse = null; IMediaDataServiceContext dataContext = this.GetMediaContext().MediaServicesClassFactory.CreateDataServiceContext(); JobTemplateData jobTemplateData = new JobTemplateData { Name = templateName, TemplateType = (int)templateType }; jobTemplateData.SetMediaContext(this.GetMediaContext()); dataContext.AddObject(JobTemplateBaseCollection.JobTemplateSet, jobTemplateData); foreach (ITaskTemplate taskTemplate in taskTemplates) { Verify(taskTemplate); dataContext.AddRelatedObject(jobTemplateData, TaskTemplatesPropertyName, taskTemplate); if (taskTemplate.Options.HasFlag(TaskOptions.ProtectedConfiguration) && string.IsNullOrWhiteSpace(this.Id)) { ProtectTaskConfiguration((TaskTemplateData)taskTemplate, ref certToUse, dataContext); } } AssetNamingSchemeResolver <AssetData, OutputAsset> assetIdMap = new AssetNamingSchemeResolver <AssetData, OutputAsset>(); jobTemplateData.JobTemplateBody = CreateJobTemplateBody(assetIdMap, taskTemplates); jobTemplateData.NumberofInputAssets = string.IsNullOrWhiteSpace(this.Id) ? assetIdMap.Inputs.Count : ((IJob)this).InputMediaAssets.Count; MediaRetryPolicy retryPolicy = this.GetMediaContext().MediaServicesClassFactory.GetSaveChangesRetryPolicy(dataContext as IRetryPolicyAdapter); return(retryPolicy.ExecuteAsync <IMediaDataServiceResponse>(() => dataContext.SaveChangesAsync(SaveChangesOptions.Batch, jobTemplateData)) .ContinueWith <IJobTemplate>( t => { t.ThrowIfFaulted(); JobTemplateData data = (JobTemplateData)t.Result.AsyncState; IJobTemplate jobTemplateToReturn = this.GetMediaContext().JobTemplates.Where(c => c.Id == data.Id).First(); return jobTemplateToReturn; })); }
public Job Clone(Job job, DateTime?dueDate, bool cloneRouteStops = true, string orderNumber = "", bool copyJobPairId = false, int?jobGroupIdOverride = null, JobTemplateType templateType = JobTemplateType.Unspecified, bool copyDriverAssignment = true, bool copyPickNumber = true, bool copyBookingNumber = true, bool copyOrderNumber = true) { if (job == null) { return(null); } //job = GetByIdWithAll(job.Id); // create the new Job var clonedJob = new Job() { SubscriberId = job.SubscriberId, DueDate = dueDate, JobGroupId = jobGroupIdOverride > 0 ? jobGroupIdOverride : job.JobGroupId, ChassisId = job.ChassisId, ChassisOwnerId = job.ChassisOwnerId, ContainerId = job.ContainerId, ContainerOwnerId = job.ContainerOwnerId, IsTransmitted = false, JobStatus = JobStatus.Unassigned, }; if (clonedJob.JobGroupId.HasValue && clonedJob.JobGroupId > 0 && (clonedJob.JobGroup == null || clonedJob.JobGroup.Id != clonedJob.JobGroupId)) { clonedJob.JobGroup = _jobGroupService.GetById(clonedJob.JobGroupId.Value); } if (copyDriverAssignment) { clonedJob.AssignedDriverId = job.AssignedDriverId; } if (copyPickNumber) { clonedJob.PickupNumber = job.PickupNumber; } if (copyBookingNumber) { clonedJob.BookingNumber = job.BookingNumber; } if (copyOrderNumber) { clonedJob.OrderNumber = job.OrderNumber; } clonedJob.JobTemplateType = templateType != JobTemplateType.Unspecified ? templateType : job.JobTemplateType; if (clonedJob.JobTemplateType.ToString().ToLower().StartsWith("import")) { clonedJob.IsPreparatory = true; } if (jobGroupIdOverride.HasValue) { clonedJob.JobGroupId = jobGroupIdOverride; } if (copyJobPairId) { clonedJob.JobPairId = job.JobPairId; } if (orderNumber.Length > 0) { clonedJob.OrderNumber = orderNumber; } Insert(clonedJob); if (clonedJob.Id > 0) { clonedJob = GetById(clonedJob.Id); } var clonedRoutes = new List <RouteStop>(); if (cloneRouteStops) { int count = 0; foreach (var route in job.RouteStops.OrderBy(rs => rs.SortOrder)) { var minutes = 30; if (route.StopDelay.HasValue && route.StopDelay.Value > 0) { minutes = (int)route.StopDelay.Value; } clonedRoutes.Add( CreateJobRouteStop(clonedJob, count++, route.LocationId, minutes, route.StopActionId, route.WindowStart, route.WindowEnd, false)); } for (int i = 0; i < clonedRoutes.Count; i++) { var route = clonedRoutes[i]; clonedJob.RouteStops.Add(route); _routeStopService.Insert(route); // TODO batch save } } Update(clonedJob); clonedJob = GetById(clonedJob.Id); return(clonedJob); }
/// <summary>The create template job from original.</summary> /// <param name="originalJob">The original job.</param> /// <param name="templateType">The template type.</param> /// <param name="leg">The leg.</param> /// <param name="yardPull">The yard pull.</param> /// <param name="emptyMove">The empty move.</param> /// <param name="terminalLocation">The terminal location.</param> /// <param name="customerLocation">The customer location.</param> /// <param name="yardLocation">The yard location.</param> private void CreateTemplateJobFromOriginal(Job originalJob, JobTemplateType templateType, int leg, bool yardPull, bool emptyMove, Location terminalLocation, Location customerLocation, Location yardLocation) { var result = Clone(originalJob, originalJob.DueDate); result.RouteStops.Clear(); }
private static int GetInternalTemplateType(JobTemplateType type) { return((int)type); }
private Task<IJobTemplate> CreateJobTemplate(string templateName, JobTemplateType templateType, params ITaskTemplate[] taskTemplates) { X509Certificate2 certToUse = null; DataServiceContext dataContext = this._cloudMediaContext.DataContextFactory.CreateDataServiceContext(); JobTemplateData jobTemplateData = new JobTemplateData { Name = templateName, TemplateType = (int)templateType }; jobTemplateData.InitCloudMediaContext(this._cloudMediaContext); dataContext.AddObject(JobTemplateBaseCollection.JobTemplateSet, jobTemplateData); foreach (ITaskTemplate taskTemplate in taskTemplates) { Verify(taskTemplate); dataContext.AddRelatedObject(jobTemplateData, TaskTemplatesPropertyName, taskTemplate); if (taskTemplate.Options.HasFlag(TaskOptions.ProtectedConfiguration) && string.IsNullOrWhiteSpace(this.Id)) { ProtectTaskConfiguration((TaskTemplateData)taskTemplate, ref certToUse, dataContext); } } AssetNamingSchemeResolver<AssetData, OutputAsset> assetIdMap = new AssetNamingSchemeResolver<AssetData, OutputAsset>(); jobTemplateData.JobTemplateBody = CreateJobTemplateBody(assetIdMap, taskTemplates); jobTemplateData.NumberofInputAssets = string.IsNullOrWhiteSpace(this.Id) ? assetIdMap.Inputs.Count : ((IJob)this).InputMediaAssets.Count; return dataContext .SaveChangesAsync(SaveChangesOptions.Batch, jobTemplateData) .ContinueWith<IJobTemplate>( t => { t.ThrowIfFaulted(); JobTemplateData data = (JobTemplateData)t.AsyncState; IJobTemplate jobTemplateToReturn = this._cloudMediaContext.JobTemplates.Where(c => c.Id == data.Id).First(); return jobTemplateToReturn; }); }
private static int GetInternalTemplateType(JobTemplateType type) { return (int)type; }