using Infrastructure.Extensions; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq.Expressions; namespace Infrastructure.Application { public class BaseResult { public bool Success { get; set; } public List ValidationResults { get; private set; } = new List(); public bool SetSuccess() { this.Success = true; return this.Success; } public static BaseResult Result() { return new BaseResult(); } public static BaseResult Result() { return new BaseResult(); } public void AddError(string errorMessage) { this.ValidationResults.Add(new ValidationResult(errorMessage)); } public void AddError(string propertyName, string errorMessage) { this.ValidationResults.Add(new ValidationResult(errorMessage, new List { propertyName })); } public void AddError(Expression> expression, string errorMessage) { this.ValidationResults.Add(new ValidationResult(errorMessage, new List { expression.GetPropertyName() })); } public void AddErrors(List validationResults) { this.ValidationResults.AddRange(validationResults); } } public class BaseResult : BaseResult { public T Data { get; set; } } }