From 1751216a2ea1a8fb5aa307e0cacb79bd3e67751f Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 16 Aug 2022 17:34:01 +0300 Subject: [PATCH 1/4] Added validation to `EntityTagSetDto` for Tags --- .../Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs index 245526cfc2..33afb68a6e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs @@ -1,15 +1,28 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; +using Volo.CmsKit.Tags; namespace Volo.CmsKit.Admin.Tags; [Serializable] -public class EntityTagSetDto +public class EntityTagSetDto : IValidatableObject { public string EntityId { get; set; } public string EntityType { get; set; } public List Tags { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + foreach (var tag in Tags) + { + if (tag.Length > TagConsts.MaxNameLength) + { + yield return new ValidationResult( + $"{nameof(tag)} length must be equal to or lower than {TagConsts.MaxNameLength}", + new[] { nameof(Tags) } + ); + } + } + } } From c192699752408f552d74461ebd657e6e5cfdf361 Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 17 Aug 2022 11:05:43 +0300 Subject: [PATCH 2/4] Added validation for Tags and its elements --- .../Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs | 15 ++++++++++++++- .../Volo/CmsKit/Localization/Resources/en.json | 3 ++- .../Volo/CmsKit/Localization/Resources/tr.json | 3 ++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs index 33afb68a6e..8f19bf7e74 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs @@ -1,6 +1,9 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using Volo.CmsKit.Localization; using Volo.CmsKit.Tags; namespace Volo.CmsKit.Admin.Tags; @@ -9,17 +12,27 @@ namespace Volo.CmsKit.Admin.Tags; public class EntityTagSetDto : IValidatableObject { public string EntityId { get; set; } + public string EntityType { get; set; } + + [Required] public List Tags { get; set; } public IEnumerable Validate(ValidationContext validationContext) { + var l = validationContext.GetRequiredService>(); + foreach (var tag in Tags) { if (tag.Length > TagConsts.MaxNameLength) { yield return new ValidationResult( - $"{nameof(tag)} length must be equal to or lower than {TagConsts.MaxNameLength}", + l[ + "MaxTagLengthExceptionMessage", + nameof(tag), + TagConsts.MaxNameLength, + typeof(EntityTagSetDto).FullName + ], new[] { nameof(Tags) } ); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 6057b5dc5e..18d900cabe 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -206,6 +206,7 @@ "Feature:ReactionEnable": "Enabled reaction", "Feature:ReactionEnableDescription": "Enable reaction in the application.", "Feature:TagEnable": "Enabled taging", - "Feature:TagEnableDescription": "Enable taging in the application." + "Feature:TagEnableDescription": "Enable taging in the application.", + "MaxTagLengthExceptionMessage": "{0} length must be equal to or lower than {1}. {2}" } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index c8865aa648..c04461dd03 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -209,6 +209,7 @@ "Feature:ReactionEnable": "Reaksiyonları etkinleştirin", "Feature:ReactionEnableDescription": "Uygulamınızdaki reaksiyonları etkinleştirir.", "Feature:TagEnable": "Etkiketleri etkinleştirin", - "Feature:TagEnableDescription": "Uygulamınızdaki etiketleri etkinleştirir." + "Feature:TagEnableDescription": "Uygulamınızdaki etiketleri etkinleştirir.", + "MaxTagLengthExceptionMessage": "{0} uzunluğu {1} den küçük veya eşit olmalı. {2}" } } From 975377a09c23ad132c811e1a4d3c8e7e8ea5d283 Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 17 Aug 2022 11:44:30 +0300 Subject: [PATCH 3/4] Update modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs Co-authored-by: Qingxiao Ren --- .../Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs index 8f19bf7e74..5b3346067d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs @@ -29,7 +29,7 @@ public class EntityTagSetDto : IValidatableObject yield return new ValidationResult( l[ "MaxTagLengthExceptionMessage", - nameof(tag), + tag, TagConsts.MaxNameLength, typeof(EntityTagSetDto).FullName ], From e2ef54f26d29dbea5e7ec534754a1390ab243915 Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 17 Aug 2022 15:00:34 +0300 Subject: [PATCH 4/4] Updated the error message --- .../Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs | 9 ++++----- .../Volo/CmsKit/Localization/Resources/en.json | 3 +-- .../Volo/CmsKit/Localization/Resources/tr.json | 3 +-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs index 5b3346067d..11466463f8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/EntityTagSetDto.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; +using Volo.Abp.Validation.Localization; using Volo.CmsKit.Localization; using Volo.CmsKit.Tags; @@ -20,7 +21,7 @@ public class EntityTagSetDto : IValidatableObject public IEnumerable Validate(ValidationContext validationContext) { - var l = validationContext.GetRequiredService>(); + var l = validationContext.GetRequiredService>(); foreach (var tag in Tags) { @@ -28,10 +29,8 @@ public class EntityTagSetDto : IValidatableObject { yield return new ValidationResult( l[ - "MaxTagLengthExceptionMessage", - tag, - TagConsts.MaxNameLength, - typeof(EntityTagSetDto).FullName + "ThisFieldMustBeAStringWithAMaximumLengthOf{0}", + TagConsts.MaxNameLength ], new[] { nameof(Tags) } ); diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 18d900cabe..6057b5dc5e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -206,7 +206,6 @@ "Feature:ReactionEnable": "Enabled reaction", "Feature:ReactionEnableDescription": "Enable reaction in the application.", "Feature:TagEnable": "Enabled taging", - "Feature:TagEnableDescription": "Enable taging in the application.", - "MaxTagLengthExceptionMessage": "{0} length must be equal to or lower than {1}. {2}" + "Feature:TagEnableDescription": "Enable taging in the application." } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index c04461dd03..c8865aa648 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -209,7 +209,6 @@ "Feature:ReactionEnable": "Reaksiyonları etkinleştirin", "Feature:ReactionEnableDescription": "Uygulamınızdaki reaksiyonları etkinleştirir.", "Feature:TagEnable": "Etkiketleri etkinleştirin", - "Feature:TagEnableDescription": "Uygulamınızdaki etiketleri etkinleştirir.", - "MaxTagLengthExceptionMessage": "{0} uzunluğu {1} den küçük veya eşit olmalı. {2}" + "Feature:TagEnableDescription": "Uygulamınızdaki etiketleri etkinleştirir." } }