init
This commit is contained in:
		
							
								
								
									
										48
									
								
								Kreta.BusinessLogic/Validation/BLValidator.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								Kreta.BusinessLogic/Validation/BLValidator.cs
									
									
									
									
									
										Normal 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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user