Esempio n. 1
0
        public async Task ValidateAsync(object?value, ValidationContext context, AddError addError)
        {
            var foundIds = new List <DomainId>();

            if (value is ICollection <DomainId> {
                Count : > 0
            } assetIds)
            {
                var assets = await checkAssets(assetIds);

                var index = 0;

                foreach (var assetId in assetIds)
                {
                    index++;

                    var path = context.Path.Enqueue($"[{index}]");

                    var asset = assets.FirstOrDefault(x => x.AssetId == assetId);

                    if (asset == null)
                    {
                        if (context.Action == ValidationAction.Upsert)
                        {
                            addError(path, T.Get("contents.validation.assetNotFound", new { id = assetId }));
                        }

                        continue;
                    }

                    foundIds.Add(asset.AssetId);

                    ValidateCommon(asset, path, addError);

                    if (asset.Type != AssetType.Image)
                    {
                        ValidateNonImage(path, addError);
                    }
                    else
                    {
                        ValidateImage(asset, path, addError);
                    }
                }
            }

            if (collectionValidator != null)
            {
                await collectionValidator.ValidateAsync(foundIds, context, addError);
            }

            if (uniqueValidator != null)
            {
                await uniqueValidator.ValidateAsync(foundIds, context, addError);
            }
        }
Esempio n. 2
0
        public async ValueTask ValidateAsync(object?value, ValidationContext context, AddError addError)
        {
            var foundIds = new List <DomainId>();

            if (value is ICollection <DomainId> {
                Count : > 0
            } assetIds)
            {
                var assets = await checkAssets(assetIds);

                var index = 0;

                foreach (var assetId in assetIds)
                {
                    index++;

                    var path = context.Path.Enqueue($"[{index}]");

                    var asset = assets.FirstOrDefault(x => x.AssetId == assetId);

                    if (asset == null)
                    {
                        if (context.Action == ValidationAction.Upsert)
                        {
                            addError(path, T.Get("contents.validation.assetNotFound", new { id = assetId }));
                        }

                        continue;
                    }

                    foundIds.Add(asset.AssetId);

                    ValidateCommon(asset, path, addError);
                    ValidateType(asset, path, addError);

                    if (asset.Type == AssetType.Image)
                    {
                        var w = asset.Metadata.GetPixelWidth();
                        var h = asset.Metadata.GetPixelHeight();

                        if (w != null && h != null)
                        {
                            ValidateDimensions(w.Value, h.Value, path, addError);
                        }
                    }
                    else if (asset.Type == AssetType.Video)
                    {
                        var w = asset.Metadata.GetVideoWidth();
                        var h = asset.Metadata.GetVideoHeight();

                        if (w != null && h != null)
                        {
                            ValidateDimensions(w.Value, h.Value, path, addError);
                        }
                    }
                }
            }

            if (collectionValidator != null)
            {
                await collectionValidator.ValidateAsync(foundIds, context, addError);
            }

            if (uniqueValidator != null)
            {
                await uniqueValidator.ValidateAsync(foundIds, context, addError);
            }
        }