/// <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)); }
/// <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)); }