public override async Task <EntityView> Run(EntityView entityView, CommercePipelineExecutionContext context)
        {
            if (string.IsNullOrEmpty(entityView?.Action) || !entityView.Action.Equals(context.GetPolicy <KnownJobSchedulerActionsPolicy>().AddJobInstance, StringComparison.OrdinalIgnoreCase))
            {
                return(entityView);
            }
            var jobInstanceName = entityView.Properties.FirstOrDefault(p => p.Name.Equals("Name", StringComparison.OrdinalIgnoreCase));

            if (string.IsNullOrEmpty(jobInstanceName?.Value))
            {
                var str1 = jobInstanceName == null ? "Name" : jobInstanceName.DisplayName;
                var str2 = await context.CommerceContext.AddMessage(context.GetPolicy <KnownResultCodes>().ValidationError, "InvalidOrMissingPropertyValue", new object[1]
                {
                    str1
                }, "Invalid or missing value for property 'Name'.");

                return(entityView);
            }

            if (string.IsNullOrEmpty(entityView.EntityId))
            {
                var str = await context.CommerceContext.AddMessage(context.GetPolicy <KnownResultCodes>().ValidationError, "InvalidOrMissingPropertyValue", new object[1]
                {
                    "EntityId"
                }, "Invalid or missing value for property 'EntityId'.");

                return(entityView);
            }
            var job = context.CommerceContext.GetObject((Func <Job, bool>)(p => p.Id.Equals(entityView.EntityId, StringComparison.OrdinalIgnoreCase)));

            if (job == null)
            {
                var str = await context.CommerceContext.AddMessage(context.GetPolicy <KnownResultCodes>().ValidationError, "InvalidOrMissingPropertyValue", new object[1]
                {
                    "EntityId"
                }, "Job doesn't exists.");

                return(entityView);
            }
            var      displayNameProperty      = entityView.Properties.FirstOrDefault(p => p.Name.Equals("DisplayName", StringComparison.OrdinalIgnoreCase));
            var      displayName              = displayNameProperty != null ? displayNameProperty.Value : null as string;
            var      descriptionProperty      = entityView.Properties.FirstOrDefault(p => p.Name.Equals("Description", StringComparison.OrdinalIgnoreCase));
            var      description              = descriptionProperty != null ? descriptionProperty.Value : null as string;
            var      scheduleDateTimeProperty = entityView.Properties.FirstOrDefault(p => p.Name.Equals("ScheduleDateTime", StringComparison.OrdinalIgnoreCase));
            DateTime?scheduleDateTime         = scheduleDateTimeProperty != null?Convert.ToDateTime(scheduleDateTimeProperty.Value) : (DateTime?)null;

            var statusProperty = entityView.Properties.FirstOrDefault(p => p.Name.Equals("Status", StringComparison.OrdinalIgnoreCase));
            var status         = statusProperty != null ? statusProperty.Value : "Queued";

            var addJobInstanceArgument = new AddJobInstanceArgument(job, jobInstanceName.Value)
            {
                Description      = description,
                DisplayName      = displayName,
                ScheduleDateTime = scheduleDateTime,
                Status           = status,
            };
            var jobInstance = await _addJobInstanceCommand.Process(context.CommerceContext, addJobInstanceArgument);

            return(entityView);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// The process of the command
        /// </summary>
        /// <param name="commerceContext">
        /// The commerce context
        /// </param>
        /// <param name="addJobInstanceArgument"></param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        public async Task <JobInstance> Process(CommerceContext commerceContext, AddJobInstanceArgument addJobInstanceArgument)
        {
            Condition.Requires(addJobInstanceArgument).IsNotNull("AddJobInstanceCommand: addJobInstanceArgument cannot be null.");
            using (var activity = CommandActivity.Start(commerceContext, this))
            {
                var arg    = addJobInstanceArgument;
                var result = await this._pipeline.Run(arg, new CommercePipelineExecutionContextOptions(commerceContext));

                return(result);
            }
        }