* * @param {*} field * @param {*} value * @param {*} args
(field, value, args)
| 54 | * @param {*} args |
| 55 | */ |
| 56 | async validateRequiredIf(field, value, args) { |
| 57 | |
| 58 | if (!args || args.length < 2) { |
| 59 | |
| 60 | throw new Error('Invalid arguments supplied for field ' + field + ' in requiredIf rule.'); |
| 61 | return false; |
| 62 | } |
| 63 | |
| 64 | if (args.length % 2 !== 0) { |
| 65 | |
| 66 | throw new Error('Invalid arguments supplied for field ' + field + ' in requiredIf rule.'); |
| 67 | return false; |
| 68 | } |
| 69 | |
| 70 | let required = false; |
| 71 | for (let start = 0; start < args.length; start += 2) { |
| 72 | let requiredField = args[start]; |
| 73 | let requiredValue = args[start + 1]; |
| 74 | |
| 75 | if (requiredField == field) { |
| 76 | return false; |
| 77 | } |
| 78 | |
| 79 | // field is required if all values are presented |
| 80 | if (!this.isEmpty(this.validator.inputs[requiredField]) |
| 81 | && this.validator.inputs[requiredField].toString() == requiredValue) { |
| 82 | required = true; |
| 83 | } else { |
| 84 | required = false; |
| 85 | break |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | if (required && this.isEmpty(value)) { |
| 90 | return false; |
| 91 | } |
| 92 | |
| 93 | return true; |
| 94 | } |
| 95 | |
| 96 | /** |
| 97 | * |
no test coverage detected