/
ValidationErrorResult.cs
121 lines (106 loc) · 3.6 KB
/
ValidationErrorResult.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System.Collections.Generic;
using ServiceStack.Text;
namespace ServiceStack.Validation
{
/// <summary>
/// Encapsulates a validation result.
/// </summary>
public class ValidationErrorResult
{
public static ValidationErrorResult Success => new ValidationErrorResult();
/// <summary>
/// Gets or sets the success code.
/// </summary>
/// <value>The success code.</value>
public string SuccessCode
{
get;
protected set;
}
/// <summary>
/// Gets or sets the error code.
/// </summary>
/// <value>The error code.</value>
public string ErrorCode
{
get;
set;
}
/// <summary>
/// Gets or sets the success message.
/// </summary>
/// <value>The success message.</value>
public string SuccessMessage { get; set; }
/// <summary>
/// Gets or sets the error message.
/// </summary>
/// <value>The error message.</value>
public string ErrorMessage { get; set; }
public virtual string Message => Errors.Count > 0 ? ErrorMessage : SuccessMessage;
/// <summary>
/// The errors generated by the validation.
/// </summary>
public IList<ValidationErrorField> Errors
{
get;
protected set;
}
/// <summary>
/// Returns True if the validation was successful (errors list is empty).
/// </summary>
public virtual bool IsValid => this.Errors.Count == 0;
/// <summary>
/// Constructs a new ValidationResult
/// </summary>
public ValidationErrorResult()
: this(new List<ValidationErrorField>()) { }
/// <summary>
/// Constructs a new ValidationResult
/// </summary>
/// <param name="errors">A list of validation results</param>
public ValidationErrorResult(IList<ValidationErrorField> errors) : this(errors, null, null) { }
/// <summary>
/// Initializes a new instance of the <see cref="ValidationErrorResult"/> class.
/// </summary>
/// <param name="errors">The errors.</param>
/// <param name="successCode">The success code.</param>
/// <param name="errorCode">The error code.</param>
public ValidationErrorResult(IList<ValidationErrorField> errors, string successCode, string errorCode)
{
this.Errors = errors ?? new List<ValidationErrorField>();
if (successCode != null)
{
this.SuccessCode = successCode;
this.SuccessMessage = successCode.SplitCamelCase();
}
if (errorCode != null)
{
this.ErrorCode = errorCode;
}
else
{
if (this.Errors.Count > 0)
{
this.ErrorCode = this.Errors[0].ErrorCode;
this.ErrorMessage = this.Errors[0].ErrorMessage;
}
}
if (this.ErrorMessage == null && this.ErrorCode != null)
{
this.ErrorMessage = this.ErrorCode.ToEnglish();
}
}
/// <summary>
/// Merge errors from another <see cref="ValidationErrorResult"/>
/// </summary>
/// <param name="result"></param>
public void Merge(ValidationErrorResult result)
{
if (result == null) return;
foreach (var e in result.Errors)
{
Errors.Add(e);
}
}
}
}