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