Example #1
0
        public static Task CanCreate(CreateRule command, IAppProvider appProvider)
        {
            Guard.NotNull(command, nameof(command));

            return(Validate.It(async e =>
            {
                if (command.Trigger == null)
                {
                    e(Not.Defined(nameof(command.Trigger)), nameof(command.Trigger));
                }
                else
                {
                    var errors = await RuleTriggerValidator.ValidateAsync(command.AppId.Id, command.Trigger, appProvider);

                    errors.Foreach((x, _) => x.AddTo(e));
                }

                if (command.Action == null)
                {
                    e(Not.Defined(nameof(command.Action)), nameof(command.Action));
                }
                else
                {
                    var errors = command.Action.Validate();

                    errors.Foreach((x, _) => x.AddTo(e));
                }
            }));
        }
        public static Task <IEnumerable <ValidationError> > ValidateAsync(DomainId appId, RuleTrigger action, IAppProvider appProvider)
        {
            Guard.NotNull(action, nameof(action));
            Guard.NotNull(appProvider, nameof(appProvider));

            var visitor = new RuleTriggerValidator(x => appProvider.GetSchemaAsync(appId, x, false));

            return(action.Accept(visitor));
        }
Example #3
0
        public static Task CanUpdate(UpdateRule command, IRuleEntity rule, IAppProvider appProvider)
        {
            Guard.NotNull(command, nameof(command));

            return(Validate.It(async e =>
            {
                if (command.Trigger != null)
                {
                    var errors = await RuleTriggerValidator.ValidateAsync(rule.AppId.Id, command.Trigger, appProvider);

                    errors.Foreach((x, _) => x.AddTo(e));
                }

                if (command.Action != null)
                {
                    var errors = command.Action.Validate();

                    errors.Foreach((x, _) => x.AddTo(e));
                }
            }));
        }