This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,48 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Core;
using Kreta.Resources;
using KretaValidate = Kreta.Core.Validation.Exceptions;
using KretaValidateEnum = Kreta.Core.Validation.Exceptions.Enum;
namespace Kreta.BusinessLogic.Validation
{
/// <summary>
/// Validates the models with "DataAnnotationAttributes" and gives You the option
/// to create custom validation if model implements the "IValidatableObject" interface.
/// </summary>
public class BlValidator
{
public static implicit operator string(BlValidator blValidator)
=> blValidator.GetFirstUserFriendlyError();
public readonly List<ValidationResult> ErrorList = new List<ValidationResult>();
public readonly bool IsValid;
//TODO devkornel: Megcsinálni List<object>-re is vagy Singleton-ra!!!!
public BlValidator(object coInstance)
{
var context = new ValidationContext(coInstance, serviceProvider: null, items: null);
IsValid = Validator.TryValidateObject(coInstance, context, ErrorList, true);
}
public string GetUserFriendlyError()
=> string.Join(Constants.General.LineSeparator, ErrorList.Select(x => x.ErrorMessage).ToArray());
public string GetFirstUserFriendlyError()
=> ErrorList.Count > 0 ? ErrorList[0].ErrorMessage : string.Empty;
public KretaValidate.ValidationException ConvertToValidationException()
{
var validationException = new KretaValidate.ValidationException(KretaValidateEnum.ValidationErrorType.Undefined, ErrorResource.ValidaciosHiba);
var count = 1;
foreach (var error in ErrorList)
{
var name = error.MemberNames.FirstOrDefault() ?? "custom_" + count;
validationException.AddValidationItem(new KretaValidate.ValidationExceptionItem(name, error.ErrorMessage));
count++;
}
return validationException;
}
}
}