/// <summary>
        /// Run
        /// </summary>
        /// <param name="arg">arg</param>
        /// <param name="context">context</param>
        /// <returns>flag if the process was sucessfull</returns>
        public override async Task <ImportComposerTemplatePipelineModel> Run(ImportComposerTemplatePipelineModel arg, CommercePipelineExecutionContext context)
        {
            Condition.Requires(arg).IsNotNull($"{this.Name}: The arg can not be null");
            Condition.Requires(arg.Arguments).IsNotNull($"{this.Name}: The import arguments can not be null");
            Condition.Requires(arg.InputComposerTemplates).IsNotNull($"{this.Name}: The composer templates can not be null");

            if (arg.Arguments.ImportType != ImportType.Skip)
            {
                return(await Task.FromResult(arg));
            }

            IList <ComposerTemplate> existingComposerTemplates = _composerTemplateService.GetAllComposerTemplates(context.CommerceContext);

            foreach (CustomComposerTemplate composerTemplate in arg.InputComposerTemplates)
            {
                ComposerTemplate newComposerTemplate      = composerTemplate.ToComposerTemplate();
                ComposerTemplate existingComposerTemplate = existingComposerTemplates.FirstOrDefault(element => element.Id.Equals(newComposerTemplate.Id));
                if (existingComposerTemplate != null)
                {
                    Log.Information($"SkipComposerTemplatesBlock: Skipping import of {newComposerTemplate.Id}");
                    continue;
                }

                var persistResult = await this._persistEntityCommand.Process(context.CommerceContext, newComposerTemplate);
            }

            arg.Success = true;
            return(await Task.FromResult(arg));
        }
Beispiel #2
0
        /// <summary>
        /// Run
        /// </summary>
        /// <param name="arg">arg</param>
        /// <param name="context">context</param>
        /// <returns>flag if the process was sucessfull</returns>
        public override async Task <ImportComposerTemplatePipelineModel> Run(ImportComposerTemplatePipelineModel arg, CommercePipelineExecutionContext context)
        {
            Condition.Requires(arg).IsNotNull($"{this.Name}: The arg can not be null");
            Condition.Requires(arg.Arguments).IsNotNull($"{this.Name}: The import arguments can not be null");
            Condition.Requires(arg.InputComposerTemplates).IsNotNull($"{this.Name}: The composer templates can not be null");

            if (arg.Arguments.ImportType != ImportType.Override)
            {
                return(await Task.FromResult(arg));
            }

            IList <ComposerTemplate> existingComposerTemplates = _composerTemplateService.GetAllComposerTemplates(context.CommerceContext);

            foreach (CustomComposerTemplate composerTemplate in arg.InputComposerTemplates)
            {
                ComposerTemplate newComposerTemplate      = composerTemplate.ToComposerTemplate();
                ComposerTemplate existingComposerTemplate = existingComposerTemplates.FirstOrDefault(element => element.Id.Equals(newComposerTemplate.Id));
                if (existingComposerTemplate != null)
                {
                    // Try to increase version count instead of delete
                    DeleteEntityArgument result = await _deleteEntityCommand.Process(context.CommerceContext, existingComposerTemplate.Id);

                    if (!result.Success)
                    {
                        Log.Error($"OverrideComposerTemplatesBlock: Deletion of {newComposerTemplate.Id} failed - new Template was not imported");
                    }
                }

                var persistResult = await this._persistEntityCommand.Process(context.CommerceContext, newComposerTemplate);
            }

            arg.Success = true;
            return(await Task.FromResult(arg));
        }
        /// <summary>
        /// Run
        /// </summary>
        /// <param name="arg">arg</param>
        /// <param name="context">context</param>
        /// <returns>flag if the process was sucessfull</returns>
        public override async Task <ImportComposerTemplatePipelineModel> Run(ImportComposerTemplatePipelineModel arg, CommercePipelineExecutionContext context)
        {
            Condition.Requires(arg).IsNotNull($"{this.Name}: The arg can not be null");
            Condition.Requires(arg.Arguments).IsNotNull($"{this.Name}: The import arguments can not be null");
            Condition.Requires(arg.InputComposerTemplates).IsNotNull($"{this.Name}: The composer templates can not be null");

            if (arg.Arguments.ImportType != ImportType.Merge)
            {
                return(await Task.FromResult(arg));
            }

            IList <ComposerTemplate> existingComposerTemplates = _composerTemplateService.GetAllComposerTemplates(context.CommerceContext);

            foreach (CustomComposerTemplate composerTemplate in arg.InputComposerTemplates)
            {
                ComposerTemplate newComposerTemplate      = composerTemplate.ToComposerTemplate();
                ComposerTemplate existingComposerTemplate = existingComposerTemplates.FirstOrDefault(element => element.Id.Equals(newComposerTemplate.Id));
                if (existingComposerTemplate != null)
                {
                    // TODO Merge existing composer template with new one ????
                    // If we take existing one then version and entity verison increment
                    // If we take new one, delete existing one first
                }

                var persistResult = await this._persistEntityCommand.Process(context.CommerceContext, newComposerTemplate);
            }

            arg.Success = true;
            return(await Task.FromResult(arg));
        }
        /// <summary>
        /// Run
        /// </summary>
        /// <param name="arg">arg</param>
        /// <param name="context">context</param>
        /// <returns>flag if the process was sucessfull</returns>
        public override async Task <IList <ComposerTemplate> > Run(ExportComposerTemplatesArgument arg, CommercePipelineExecutionContext context)
        {
            Condition.Requires(arg).IsNotNull($"{this.Name}: The argument can not be null");

            List <ComposerTemplate> composerTemplates = _composerTemplateService.GetAllComposerTemplates(context.CommerceContext);

            return(await Task.FromResult(composerTemplates));
        }