Esempio n. 1
0
        protected override Task <object> ExecuteAsync(IAggregateCommand command)
        {
            VerifyNotDeleted();

            switch (command)
            {
            case AddField addField:
                return(UpdateAsync(addField, c =>
                {
                    GuardSchemaField.CanAdd(Snapshot.SchemaDef, c);

                    Add(c);

                    long id;

                    if (c.ParentFieldId == null)
                    {
                        id = Snapshot.SchemaDef.FieldsByName[c.Name].Id;
                    }
                    else
                    {
                        id = ((IArrayField)Snapshot.SchemaDef.FieldsById[c.ParentFieldId.Value]).FieldsByName[c.Name].Id;
                    }

                    return EntityCreatedResult.Create(id, Version);
                }));

            case CreateSchema createSchema:
                return(CreateAsync(createSchema, async c =>
                {
                    await GuardSchema.CanCreate(c, appProvider);

                    Create(c);
                }));

            case SynchronizeSchema synchronizeSchema:
                return(UpdateAsync(synchronizeSchema, c =>
                {
                    GuardSchema.CanSynchronize(c);

                    Synchronize(c);
                }));

            case DeleteField deleteField:
                return(UpdateAsync(deleteField, c =>
                {
                    GuardSchemaField.CanDelete(Snapshot.SchemaDef, deleteField);

                    DeleteField(c);
                }));

            case LockField lockField:
                return(UpdateAsync(lockField, c =>
                {
                    GuardSchemaField.CanLock(Snapshot.SchemaDef, lockField);

                    LockField(c);
                }));

            case HideField hideField:
                return(UpdateAsync(hideField, c =>
                {
                    GuardSchemaField.CanHide(Snapshot.SchemaDef, c);

                    HideField(c);
                }));

            case ShowField showField:
                return(UpdateAsync(showField, c =>
                {
                    GuardSchemaField.CanShow(Snapshot.SchemaDef, c);

                    ShowField(c);
                }));

            case DisableField disableField:
                return(UpdateAsync(disableField, c =>
                {
                    GuardSchemaField.CanDisable(Snapshot.SchemaDef, c);

                    DisableField(c);
                }));

            case EnableField enableField:
                return(UpdateAsync(enableField, c =>
                {
                    GuardSchemaField.CanEnable(Snapshot.SchemaDef, c);

                    EnableField(c);
                }));

            case UpdateField updateField:
                return(UpdateAsync(updateField, c =>
                {
                    GuardSchemaField.CanUpdate(Snapshot.SchemaDef, c);

                    UpdateField(c);
                }));

            case ReorderFields reorderFields:
                return(UpdateAsync(reorderFields, c =>
                {
                    GuardSchema.CanReorder(Snapshot.SchemaDef, c);

                    Reorder(c);
                }));

            case UpdateSchema updateSchema:
                return(UpdateAsync(updateSchema, c =>
                {
                    GuardSchema.CanUpdate(Snapshot.SchemaDef, c);

                    Update(c);
                }));

            case PublishSchema publishSchema:
                return(UpdateAsync(publishSchema, c =>
                {
                    GuardSchema.CanPublish(Snapshot.SchemaDef, c);

                    Publish(c);
                }));

            case UnpublishSchema unpublishSchema:
                return(UpdateAsync(unpublishSchema, c =>
                {
                    GuardSchema.CanUnpublish(Snapshot.SchemaDef, c);

                    Unpublish(c);
                }));

            case ConfigureScripts configureScripts:
                return(UpdateAsync(configureScripts, c =>
                {
                    GuardSchema.CanConfigureScripts(Snapshot.SchemaDef, c);

                    ConfigureScripts(c);
                }));

            case ChangeCategory changeCategory:
                return(UpdateAsync(changeCategory, c =>
                {
                    GuardSchema.CanChangeCategory(Snapshot.SchemaDef, c);

                    ChangeCategory(c);
                }));

            case ConfigurePreviewUrls configurePreviewUrls:
                return(UpdateAsync(configurePreviewUrls, c =>
                {
                    GuardSchema.CanConfigurePreviewUrls(c);

                    ConfigurePreviewUrls(c);
                }));

            case DeleteSchema deleteSchema:
                return(UpdateAsync(deleteSchema, c =>
                {
                    GuardSchema.CanDelete(Snapshot.SchemaDef, c);

                    Delete(c);
                }));

            default:
                throw new NotSupportedException();
            }
        }