Example #1
0
        public override Task <EntityView> Run(EntityView arg, CommercePipelineExecutionContext context)
        {
            PopulateComposerTemplatesViewActionsBlock viewActionsBlock = this;

            Condition.Requires(arg).IsNotNull(viewActionsBlock.Name + ": The argument cannot be null");

            EntityViewArgument       entityViewArgument = context.CommerceContext.GetObjects <EntityViewArgument>().FirstOrDefault();
            KnownComposerViewsPolicy composerViews      = context.GetPolicy <KnownComposerViewsPolicy>();

            if (!string.IsNullOrEmpty(arg.Name) && (arg.Name.Equals(composerViews.ComposerTemplates, StringComparison.OrdinalIgnoreCase) || entityViewArgument?.Entity is ComposerTemplate && arg.Name.Equals(composerViews.Details, StringComparison.OrdinalIgnoreCase)))
            {
                KnownComposerActionsPolicy actions = context.GetPolicy <KnownComposerActionsPolicy>();
                ActionsPolicy actionsPolicy        = arg.GetPolicy <ActionsPolicy>();

                List <Policy>         policyList        = new List <Policy>();
                MultiStepActionPolicy stepActionPolicy  = new MultiStepActionPolicy();
                EntityActionView      entityActionView1 = new EntityActionView();
                entityActionView1.Name       = actions.SelectCommerceEngineEnvironmentToPullTemplates;
                entityActionView1.IsEnabled  = true;
                entityActionView1.EntityView = actions.SelectTemplatesToPullFromEnvironment;
                stepActionPolicy.FirstStep   = entityActionView1;
                policyList.Add(stepActionPolicy);

                List <Policy>           commercePolicies  = policyList;
                List <EntityActionView> actions1          = actionsPolicy.Actions;
                EntityActionView        entityActionView2 = new EntityActionView(commercePolicies);
                entityActionView2.Name       = actions.PullTemplatesFromEnvironment;
                entityActionView2.IsEnabled  = true;
                entityActionView2.EntityView = string.Empty;
                entityActionView2.Icon       = "add";
                actions1.Add(entityActionView2);

                actions       = null;
                actionsPolicy = null;
            }
            return(Task.FromResult(arg));
        }
Example #2
0
        public override Task <EntityView> Run(EntityView arg, CommercePipelineExecutionContext context)
        {
            if (string.IsNullOrEmpty(arg?.Name) ||
                !arg.Name.Equals(context.GetPolicy <KnownCustomPricingViewsPolicy>().CustomPricing, StringComparison.OrdinalIgnoreCase) ||
                !string.IsNullOrEmpty(arg.Action))
            {
                return(Task.FromResult(arg));
            }

            CommerceEntity entity = context.CommerceContext.GetObject <EntityViewArgument>()?.Entity;
            PriceCard      priceCard;

            if ((priceCard = entity as PriceCard) == null)
            {
                return(Task.FromResult(arg));
            }

            ActionsPolicy policy = arg.GetPolicy <ActionsPolicy>();

            bool isEnabled = priceCard.Snapshots.Any(s =>
            {
                if (s.Id.Equals(arg.ItemId, StringComparison.OrdinalIgnoreCase))
                {
                    return(s.IsDraft(context.CommerceContext));
                }

                return(false);
            });

            List <Policy>         commercePolicies = new List <Policy>();
            MultiStepActionPolicy stepActionPolicy = new MultiStepActionPolicy();

            EntityActionView selectMembershipCurrencyActionView = new EntityActionView
            {
                Name        = context.GetPolicy <KnownCustomPricingActionsPolicy>().SelectMembershipCurrency,
                DisplayName = "Select Membership Currency",
                Description = "Selects a Membership Currency",
                IsEnabled   = isEnabled,
                EntityView  = context.GetPolicy <KnownCustomPricingViewsPolicy>().PriceCustomRow
            };

            stepActionPolicy.FirstStep = selectMembershipCurrencyActionView;
            commercePolicies.Add(stepActionPolicy);

            policy.Actions.Add(new EntityActionView()
            {
                Name        = context.GetPolicy <KnownCustomPricingActionsPolicy>().AddMembershipCurrency,
                DisplayName = "Add membership currency",
                Description = "Adds a membership currency",
                IsEnabled   = isEnabled,
                EntityView  = string.Empty,
                Icon        = "add",
                Policies    = commercePolicies
            });

            bool isEnabledForEditAndRemove = !string.IsNullOrEmpty(arg.ItemId) && priceCard.Snapshots.Any(s =>
            {
                if (s.Id.Equals(arg.ItemId, StringComparison.OrdinalIgnoreCase))
                {
                    var membershipTiersComponent = s.GetComponent <MembershipTiersComponent>();

                    if (membershipTiersComponent != null && membershipTiersComponent.Tiers.Any())
                    {
                        return(s.IsDraft(context.CommerceContext));
                    }
                }

                return(false);
            });

            policy.Actions.Add(new EntityActionView
            {
                Name        = context.GetPolicy <KnownCustomPricingActionsPolicy>().EditMembershipCurrency,
                DisplayName = "Edit membership currency",
                Description = "Edits a membership currency",
                IsEnabled   = isEnabledForEditAndRemove,
                EntityView  = context.GetPolicy <KnownCustomPricingViewsPolicy>().PriceCustomRow,
                Icon        = "edit"
            });

            policy.Actions.Add(new EntityActionView
            {
                Name                 = context.GetPolicy <KnownCustomPricingActionsPolicy>().RemoveMembershipCurrency,
                DisplayName          = "Remove membership currency",
                Description          = "Removes a membership currency",
                IsEnabled            = isEnabledForEditAndRemove,
                EntityView           = string.Empty,
                RequiresConfirmation = true,
                Icon                 = "delete"
            });

            return(Task.FromResult(arg));
        }