(feature): patch model base, validatable object
This commit is contained in:
parent
547c8ce1fb
commit
1e51993d13
@ -1,12 +1,19 @@
|
||||
using System.Reflection;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Reflection;
|
||||
using MaksIT.Core.Webapi.Models;
|
||||
|
||||
|
||||
namespace MaksIT.Core.Abstractions.Webapi;
|
||||
|
||||
public abstract class PatchRequestModelBase : RequestModelBase {
|
||||
public bool HasNonNullPatchField => GetType()
|
||||
public abstract class PatchRequestModelBase : RequestModelBase, IValidatableObject {
|
||||
private bool HasNonNullPatchField => GetType()
|
||||
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
|
||||
.Where(prop => prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(PatchField<>))
|
||||
.Any(prop => prop.GetValue(this) != null);
|
||||
|
||||
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
|
||||
if (!HasNonNullPatchField) {
|
||||
yield return new ValidationResult("At least one patch field must be provided", new string[] { "PatchField" });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
<!-- NuGet package metadata -->
|
||||
<PackageId>MaksIT.Core</PackageId>
|
||||
<Version>1.2.0</Version>
|
||||
<Version>1.2.1</Version>
|
||||
<Authors>Maksym Sadovnychyy</Authors>
|
||||
<Company>MAKS-IT</Company>
|
||||
<Product>MaksIT.Core</Product>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user