Product Gallery - Get assets added and put in a property bag
Use the following code to get assets added and put them in a property bag.
using System.Linq; using System.Threading.Tasks; using System.Collections.Generic; using Stylelabs.M.Sdk; using Stylelabs.M.Sdk.Contracts.Base; string executionId = string.Empty; LogScriptCalled(Context, MClient); //Get the Product ID var productId = Context.TargetId.Value; //Add the executionId to Property Bag Context.PropertyBag.Add($"{productId}-executionId", executionId); //Get the Product entity IEntity product = Context.Target as IEntity; if (product == null) { LogInfo(Context, MClient, $"The product entity is null"); return; } //Get the change set (newly added assets) var changeSet = Context.ChangeTracker.GetChangeSet(); var relationChanges = changeSet.RelationChanges; var productGalleryRelationChange = relationChanges.FirstOrDefault(x => x.Name == "ProductToGalleryAsset"); var addedAssetIds = productGalleryRelationChange.NewValues; if (addedAssetIds.Count <= 0) { LogInfo(Context, MClient, $"There are no assets added to the Product Gallery"); return; } var strAddedAssetIds = string.Join(",", addedAssetIds.ToArray()); LogInfo(Context, MClient, $"Product Gallery changed asset Ids: { strAddedAssetIds }"); //Add the asset IDs to Property Bag Context.PropertyBag.Add($"{productId}-{executionId}", strAddedAssetIds); #region Helpers void LogScriptCalled(IActionScriptContext context, IMClient client) { executionId = Guid.NewGuid().ToString("N").Substring(0, 6); LogInfo(context, client, $"{executionId}: Execution started. Context: {context}"); } void LogDebug(IActionScriptContext context, IMClient client, string message) { client.Logger.Debug(LogPrefix(context) + message); } void LogInfo(IActionScriptContext context, IMClient client, string message) { client.Logger.Info(LogPrefix(context) + message); } string LogPrefix(IActionScriptContext context) { return $"{ (context?.TargetId != null ? context.TargetId.Value.ToString() : string.Empty)} | "; } #endregion