import React from 'react';
/**
* @namespace utils/validation
*/
/**
* Validate one field for passed rule
*
* @memberof utils/validation
* @async
* @param {object} validationObj
* @returns {void}
*/
const checkRules = (validationObj) => new Promise((resolve) => {
let errorMsg = null;
if (validationObj.rules.includes('mandatory') && !validationObj.value) {
errorMsg = `${validationObj.label} is required !`;
}
if (errorMsg) {
const error = {
[validationObj.fieldName]: (
<div className="l-form-msg mt-3">{errorMsg}</div>
),
};
resolve(error);
} else {
resolve(null);
}
});
/**
* Validate all fields
*
* @memberof utils/validation
* @async
* @param {Array} validationParams
* @returns {void}
*/
const validateFields = (validationParams) => new Promise((resolve, reject) => {
const values = validationParams.map((validationObj) => (
checkRules(validationObj)));
Promise.all(values).then((val) => {
const errors = val.filter((e) => !!e);
if (errors.length > 0) {
reject(errors);
} else {
resolve();
}
});
}).catch((err) => {
let error = {};
err.map((e) => {
error = {
...error,
...e,
};
});
throw error;
});
export default validateFields;