@wenn/onb
Version:
onb-core
328 lines (321 loc) • 8.59 kB
JavaScript
import * as validation from "./validations.js";
import { AR, UY, ES } from "../constants/COUNTRIES";
/**
* @function [validatePhone]
* @description Sets values received from props.
* @param value
* @param allValues
* @param props
* @param name
*/
export const validate = (value, allValues, props, name) => {
const country = props.config ? props.config.COUNTRY : AR;
const MIN = props.config ? props.config.MIN_AMOUNT : 0;
const MAX = props.config ? props.config.MAX_AMOUNT : 0;
const MIN_PRODUCT = props.offer_retrieval
? props.offer_retrieval.min_amount
: MIN;
const MAX_PRODUCT = props.offer_retrieval
? props.offer_retrieval.max_amount
: MAX;
return validator(
value,
name,
allValues,
country,
props,
MIN,
MAX,
MIN_PRODUCT,
MAX_PRODUCT
);
};
/**
* @function [validatePhone]
* @description Sets initial values.
* @param errors
* @param fields
* @param values
* @param country
* @param props
*/
export const validateForm = (
errors = {},
fields = {},
values = {},
country,
props
) => {
for (const f in fields) {
if (errors[f] || validator(values[f], f, values, country, props)) {
return true;
}
}
return false;
};
/* eslint-disable */
/**
* @function [validatePhone]
* @description Phone validation for each country.
* @param value
* @param validationcellcode
* @param alternativeAreaCode
* @param country
*/
const validatePhone = (
value,
{ validationcellcode, alternativeAreaCode },
country
) => {
switch (country) {
case AR:
const area =
(validationcellcode && validationcellcode.length) ||
(alternativeAreaCode && alternativeAreaCode.length) ||
0;
const l = 10 - area;
return (
validation.number(value) ||
validation.maxLength(8)(value) ||
validation.requiredLength(l)(value) ||
validation.required(value)
);
break;
case UY:
return (
validation.number(value) ||
validation.maxLength(8)(value) ||
validation.requiredLength(8)(value) ||
validation.required(value) ||
validation.phoneNumber(value, country)
);
break;
case ES:
return (
validation.phoneNumber(value, country) ||
validation.requiredLength(9)(value) ||
validation.required(value)
);
break;
default:
return;
}
};
/**
* @function [alternativeDifferentFromPrimaryPhone]
* @description Checks if two phone input values are the same.
* @param value
* @param allValues
* @param props
*/
const alternativeDifferentFromPrimaryPhone = (value, allValues, props) => {
const primaryPhone = `${props.initialInfo.validationcellcode}${props.initialInfo.validationcellphone}`;
const alternativePhone = (allValues.alternativeAreaCode || "") + value;
return validation.notEqualPhone(alternativePhone)(primaryPhone);
};
/**
* @function [differentPhone]
* @description Checks if two phone input values are the same.
* @param value
* @param allValues
*/
const differentPhone = (value, allValues) => {
return validation.differentPhone(value)(allValues.validationphone);
};
/**
* @function [validateNationalId]
* @description Validates NationalId for each country.
* @param value
* @param country
*/
const validateNationalId = (value, country) => {
switch (country) {
case AR:
return (
validation.number(value) ||
validation.minLength(7)(value) ||
validation.maxLength(8)(value) ||
validation.required(value)
);
case UY:
return (
validation.notStartNumber("0")(value) ||
validation.requiredLength(9)(value) ||
validation.required(value) ||
validation.verifyDigit(value)
);
default:
return;
}
};
/**
* @function [validator]
* @description General validator.
* @param value
* @param name
* @param allValues
* @param country
* @param props
* @param min
* @param max
* @param minProduct
* @param maxProduct
*/
const validator = (
value,
name,
allValues,
country,
props,
min,
max,
minProduct,
maxProduct
) => {
switch (name) {
case "amount":
case "Monto_solicitado__c":
return (
validation.number(value) ||
validation.minValue(minProduct)(value) ||
validation.maxValue(maxProduct)(value) ||
validation.required(value)
);
case "requestedamount":
return (
validation.number(value) ||
validation.minValue(min)(value) ||
validation.maxValue(max)(value) ||
validation.required(value)
);
case "email":
case "Email":
return validation.email(value) || validation.required(value);
case "national_id":
case "DNI__c":
return validateNationalId(value, country);
case "validationcellcode":
case "alternativeAreaCode":
return (
validation.number(value) ||
validation.validAreaCode(value, country) ||
validation.maxLength(4)(value) ||
validation.required(value)
);
case "validationphone":
case "workPhone":
return (
validatePhone(value, allValues, country) ||
(country === "ES" && validation.notStartNumber("6789")(value))
);
case "validationcellphone":
return (
validatePhone(value, allValues, country) ||
(country === "ES" && validation.startNumber("67")(value))
);
case "alternativePhoneNumber":
console.log(
"alternativePhoneNumber",
validatePhone(value, allValues, country) ||
alternativeDifferentFromPrimaryPhone(value, allValues, props)
);
return (
validatePhone(value, allValues, country) ||
alternativeDifferentFromPrimaryPhone(value, allValues, props)
);
case "validationcode":
return (
validation.number(value) ||
validation.requiredLength(4)(value) ||
validation.required(value)
);
case "validationareacode":
return (
validation.validAreaCode(value, country) ||
validation.number(value) ||
validation.requiredLength(2)(value) ||
validation.required(value)
);
case "validationcitycode":
return (
validation.number(value) ||
validation.maxLength(3)(value) ||
validation.requiredLength(3)(value) ||
validation.validCityCode(value, country, props.utils.cityCode) ||
validation.required(value)
);
case "postalcode":
return (
validation.postalCode(value, country) || validation.required(value)
);
case "cbu_code":
return (
validation.number(value) ||
validation.requiredLength(22)(value) ||
validation.required(value) ||
validation.CBUValidation(value, props.camunda.bank.value)
);
case "curp":
return validation.validateCURP(value) || validation.required(value);
case "ine":
return (
validation.number(value) ||
validation.requiredLength(12)(value) ||
validation.required(value)
);
case "nif":
return (
validation.maxLength(9)(value) ||
validation.validateNif(value) ||
validation.required(value)
);
case "department":
return validation.maxLength(30)(value);
case "bank":
case "Banco_de_deposito_de_sueldo2__c":
return validation.required(value);
case "birthday":
case "Fecha_de_nacimiento__c":
return validation.validateBirthday(value) || validation.required(value);
case "nickname":
case "FirstName":
case "LastName":
case "firstLastname":
case "secondLastname":
case "bank-account":
return validation.alphabetic(value) || validation.required(value);
case "address":
case "checkbox":
case "creditCardName":
case "city":
case "company":
case "destination":
case "employmentstatus":
case "fees":
case "installment_intent":
case "firstexpirationdate":
case "gender":
case "Sexo__c":
case "labor_old":
case "location-auth":
case "loanDestination":
case "marketing":
case "net_salary":
case "number":
case "privacity":
case "product":
case "province":
case "streetname":
case "streetnumber":
case "termsyconditions":
case "loan_reason":
case "workInfo":
case "Laboral_Antiguedad_ROL__c":
case "UY_Situacion_Laboral__c":
case "Cantidad_de_cuotas__c":
return validation.required(value);
default:
return null;
}
};
/* eslint-disable */