-
Notifications
You must be signed in to change notification settings - Fork 104
/
Copy pathvalidation_errors_collection.js
72 lines (55 loc) · 1.58 KB
/
validation_errors_collection.js
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
'use strict';
let Util = require('./util').Util;
let ValidationError = require('./validation_error').ValidationError;
class ValidationErrorsCollection {
constructor(errorAttributes) {
this.validationErrors = {};
this.errorCollections = {};
for (let key in errorAttributes) {
if (!errorAttributes.hasOwnProperty(key)) {
continue;
}
let val = errorAttributes[key];
if (key === 'errors') {
this.buildErrors(val);
} else {
this.errorCollections[key] = new ValidationErrorsCollection(val);
}
}
}
buildErrors(errors) {
return errors.map((item) => {
let key = Util.toCamelCase(item.attribute);
this.validationErrors[key] = this.validationErrors[key] || [];
return this.validationErrors[key].push(new ValidationError(item));
});
}
deepErrors() {
let errors = [];
for (let key in this.validationErrors) {
if (!this.validationErrors.hasOwnProperty(key)) {
continue;
}
let val = this.validationErrors[key];
errors = errors.concat(val);
}
for (let key in this.errorCollections) {
if (!this.errorCollections.hasOwnProperty(key)) {
continue;
}
let val = this.errorCollections[key];
errors = errors.concat(val.deepErrors());
}
return errors;
}
for(name) {
return this.errorCollections[name];
}
forIndex(index) {
return this.errorCollections[`index${index}`];
}
on(name) {
return this.validationErrors[name];
}
}
module.exports = {ValidationErrorsCollection: ValidationErrorsCollection};