Пример #1
0
        private static async Task CheckPathAsync(Guid parentId, IAssetQueryService assetQuery, AddValidation e)
        {
            if (parentId != default)
            {
                var path = await assetQuery.FindAssetFolderAsync(parentId);

                if (path.Count == 0)
                {
                    e("Asset folder does not exist.", nameof(MoveAsset.ParentId));
                }
            }
        }
Пример #2
0
        private static void ValidateRootField(UpsertSchemaField field, string prefix, AddValidation e)
        {
            if (field == null)
            {
                e(Not.Defined("Field"), prefix);
            }
            else
            {
                if (!field.Partitioning.IsValidPartitioning())
                {
                    e(Not.Valid(nameof(field.Partitioning)), $"{prefix}.{nameof(field.Partitioning)}");
                }

                ValidateField(field, prefix, e);

                if (field.Nested?.Length > 0)
                {
                    if (field.Properties is ArrayFieldProperties)
                    {
                        field.Nested.Foreach((nestedField, nestedIndex) =>
                        {
                            var nestedPrefix = $"{prefix}.Nested[{nestedIndex}]";

                            ValidateNestedField(nestedField, nestedPrefix, e);
                        });
                    }
                    else if (field.Nested.Length > 0)
                    {
                        e(T.Get("schemas.onlyArraysHaveNested"), $"{prefix}.{nameof(field.Partitioning)}");
                    }

                    foreach (var fieldName in field.Nested.Duplicates(x => x.Name))
                    {
                        if (fieldName.IsPropertyName())
                        {
                            e(T.Get("schemas.duplicateFieldName", new { field = fieldName }), $"{prefix}.Nested");
                        }
                    }
                }
            }
        }
Пример #3
0
        private static void ValidateField(UpsertSchemaFieldBase field, string prefix, AddValidation e)
        {
            if (!field.Name.IsPropertyName())
            {
                e("Field name must be a valid javascript property name.", $"{prefix}.{nameof(field.Name)}");
            }

            if (field.Properties == null)
            {
                e(Not.Defined("Field properties"), $"{prefix}.{nameof(field.Properties)}");
            }
            else
            {
                if (!field.Properties.IsForApi())
                {
                    if (field.IsHidden)
                    {
                        e("UI field cannot be hidden.", $"{prefix}.{nameof(field.IsHidden)}");
                    }

                    if (field.IsDisabled)
                    {
                        e("UI field cannot be disabled.", $"{prefix}.{nameof(field.IsDisabled)}");
                    }
                }

                var errors = FieldPropertiesValidator.Validate(field.Properties);

                errors.Foreach(x => x.WithPrefix($"{prefix}.{nameof(field.Properties)}").AddTo(e));
            }
        }
Пример #4
0
        private static void ValidateNestedField(UpsertSchemaNestedField nestedField, string prefix, AddValidation e)
        {
            if (nestedField == null)
            {
                e(Not.Defined("Field"), prefix);
            }
            else
            {
                if (nestedField.Properties is ArrayFieldProperties)
                {
                    e("Nested field cannot be array fields.", $"{prefix}.{nameof(nestedField.Properties)}");
                }

                ValidateField(nestedField, prefix, e);
            }
        }
Пример #5
0
        private static void ValidateRootField(UpsertSchemaField field, string prefix, AddValidation e)
        {
            if (field == null)
            {
                e(Not.Defined("Field"), prefix);
            }
            else
            {
                if (!field.Partitioning.IsValidPartitioning())
                {
                    e(Not.Valid("Partitioning"), $"{prefix}.{nameof(field.Partitioning)}");
                }

                ValidateField(field, prefix, e);

                if (field.Nested?.Count > 0)
                {
                    if (field.Properties is ArrayFieldProperties)
                    {
                        var nestedIndex  = 0;
                        var nestedPrefix = string.Empty;

                        foreach (var nestedField in field.Nested)
                        {
                            nestedIndex++;
                            nestedPrefix = $"{prefix}.Nested[{nestedIndex}]";

                            ValidateNestedField(nestedField, nestedPrefix, e);
                        }
                    }
                    else if (field.Nested.Count > 0)
                    {
                        e("Only array fields can have nested fields.", $"{prefix}.{nameof(field.Partitioning)}");
                    }

                    if (field.Nested.Select(x => x.Name).Distinct().Count() != field.Nested.Count)
                    {
                        e("Fields cannot have duplicate names.", $"{prefix}.Nested");
                    }
                }
            }
        }
Пример #6
0
        private static async Task CheckPathAsync(DomainId appId, DomainId parentId, IAssetQueryService assetQuery, DomainId id, AddValidation e)
        {
            if (parentId != DomainId.Empty)
            {
                var path = await assetQuery.FindAssetFolderAsync(appId, parentId);

                if (path.Count == 0)
                {
                    e(T.Get("assets.folderNotFound"), nameof(MoveAssetFolder.ParentId));
                }
                else if (id != DomainId.Empty)
                {
                    var indexOfSelf   = path.IndexOf(x => x.Id == id);
                    var indexOfParent = path.IndexOf(x => x.Id == parentId);

                    if (indexOfSelf >= 0 && indexOfParent > indexOfSelf)
                    {
                        e(T.Get("assets.folderRecursion"), nameof(MoveAssetFolder.ParentId));
                    }
                }
            }
        }
Пример #7
0
 public void AddTo(AddValidation e)
 {
     e(Message, propertyNames);
 }