public static async Task CheckStatusAsync(this ContentOperation operation, Status status) { if (operation.SchemaDef.Type != SchemaType.Singleton) { var workflow = GetWorkflow(operation); var statusInfo = await workflow.GetInfoAsync(operation.Snapshot, status); if (statusInfo == null) { operation.AddError(T.Get("contents.statusNotValid"), nameof(status)); operation.ThrowOnErrors(); } } }
public static Task <ContentData> ExecuteCreateScriptAsync(this ContentOperation operation, ContentData data, Status status) { var script = operation.SchemaDef.Scripts.Create; if (string.IsNullOrWhiteSpace(script)) { return(Task.FromResult(data)); } // Script vars are just wrappers over dictionaries for better performance. var vars = Enrich(operation, new ContentScriptVars { Data = data, DataOld = null, OldData = null, OldStatus = default,
public static async Task CheckTransitionAsync(this ContentOperation operation, Status status) { if (operation.SchemaDef.Type != SchemaType.Singleton) { var workflow = GetWorkflow(operation); var oldStatus = operation.Snapshot.EditingStatus(); if (!await workflow.CanMoveToAsync(operation.Snapshot, oldStatus, status, operation.User)) { var values = new { oldStatus, newStatus = status }; operation.AddError(T.Get("contents.statusTransitionNotAllowed", values), nameof(status)); operation.ThrowOnErrors(); } } }
private static ContentValidator GetValidator(this ContentOperation operation, bool optimize, bool published) { var validationContext = new ValidationContext(operation.Resolve <IJsonSerializer>(), operation.App.NamedId(), operation.Schema.NamedId(), operation.SchemaDef, operation.Components, operation.CommandId) .Optimized(optimize).AsPublishing(published); var validator = new ContentValidator(operation.Partition(), validationContext, operation.Resolve <IEnumerable <IValidatorsFactory> >(), operation.Resolve <ILogger <ContentValidator> >()); return(validator); }
public static Task <ContentData> ExecuteUpdateScriptAsync(this ContentOperation operation, ContentData data) { var script = operation.SchemaDef.Scripts.Update; if (string.IsNullOrWhiteSpace(script)) { return(Task.FromResult(data)); } var vars = Enrich(operation, new ScriptVars { [ScriptKeys.Data] = data, [ScriptKeys.DataOld] = operation.Snapshot.Data, [ScriptKeys.OldData] = operation.Snapshot.Data, [ScriptKeys.OldStatus] = data, [ScriptKeys.Operation] = "Update", [ScriptKeys.Status] = operation.Snapshot.EditingStatus(), [ScriptKeys.StatusOld] = default(Status) }); return(TransformAsync(operation, script, vars)); }
public static Task ExecuteDeleteScriptAsync(this ContentOperation operation) { var script = operation.SchemaDef.Scripts.Delete; if (string.IsNullOrWhiteSpace(script)) { return(Task.CompletedTask); } var vars = Enrich(operation, new ScriptVars { [ScriptKeys.Data] = operation.Snapshot.Data, [ScriptKeys.DataOld] = null, [ScriptKeys.OldData] = null, [ScriptKeys.OldStatus] = operation.Snapshot.EditingStatus(), [ScriptKeys.Operation] = "Delete", [ScriptKeys.Status] = operation.Snapshot.EditingStatus(), [ScriptKeys.StatusOld] = default(Status) }); return(ExecuteAsync(operation, script, vars)); }
public static void MustHavePermission(this ContentOperation context, string permissionId) { var content = context.Snapshot; if (Equals(content.CreatedBy, context.Actor) || context.User == null) { return; } var permissions = context.User?.Claims.Permissions(); if (permissions == null) { throw new DomainForbiddenException(T.Get("common.errorNoPermission")); } var permission = Permissions.ForApp(permissionId, context.App.Name, context.Schema.SchemaDef.Name); if (!permissions.Allows(permission)) { throw new DomainForbiddenException(T.Get("common.errorNoPermission")); } }
public static void GenerateDefaultValues(this ContentOperation operation, ContentData data) { data.GenerateDefaultValues(operation.Schema.SchemaDef, operation.Partition()); }
private static PartitionResolver Partition(this ContentOperation operation) { return(operation.App.PartitionResolver()); }
private static IContentWorkflow GetWorkflow(ContentOperation operation) { return(operation.Resolve <IContentWorkflow>()); }
public static ValueTask <bool> ShouldValidateAsync(this ContentOperation operation, Status status) { var workflow = GetWorkflow(operation); return(workflow.ShouldValidateAsync(operation.Schema, status)); }
public static ValueTask <Status> GetInitialStatusAsync(this ContentOperation operation) { var workflow = GetWorkflow(operation); return(workflow.GetInitialStatusAsync(operation.Schema)); }
private static async Task ExecuteAsync(ContentOperation operation, string script, ScriptVars vars) { await operation.Resolve <IScriptEngine>().ExecuteAsync(vars, script, Options); }
private static async Task <ContentData> TransformAsync(ContentOperation operation, string script, ScriptVars vars) { return(await operation.Resolve <IScriptEngine>().TransformAsync(vars, script, Options)); }