using DotBased.AspNet.Authority.Models.Validation; namespace DotBased.AspNet.Authority.Models; public class AuthorityResult : Result { public static AuthorityResult FromResult(Result result) => new AuthorityResult(result); public AuthorityResult(Result result) : base(result) { Reason = ResultFailReason.Unknown; } public AuthorityResult(bool success, string errorMessage = "", TResultValue? value = default, ResultFailReason reason = ResultFailReason.None, List? errors = null) : base(success, errorMessage, value, null) { Success = success; Message = errorMessage; Value = value; Reason = reason; ValidationErrors = errors; } public ResultFailReason Reason { get; } public List? ValidationErrors { get; } public static AuthorityResult Ok(TResultValue? value) => new AuthorityResult(true, value:value); public static AuthorityResult Error(string errorMessage, ResultFailReason reason = ResultFailReason.Error) => new AuthorityResult(false, errorMessage, reason:reason); public static AuthorityResult Failed(List errors, ResultFailReason reason = ResultFailReason.None) => new AuthorityResult(false, errors:errors, reason:reason); } public enum ResultFailReason { None, Unknown, Validation, Error }