UNPKG

@wenn/onb

Version:

onb-core

328 lines (321 loc) 8.59 kB
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 */