130 lines
4.3 KiB
JavaScript
130 lines
4.3 KiB
JavaScript
import { defineRule } from 'vee-validate';
|
|
import errorMessages from '@/constants/error-messages';
|
|
import globalRules from '@/constants/global-rules';
|
|
import { required, regex } from '@/helpers/validation-rules';
|
|
|
|
/**
|
|
* @summary Define global rules related to names
|
|
*/
|
|
function defineGlobalNameRules() {
|
|
defineRule(globalRules.FIRST_NAME_REQUIRED, required(errorMessages.FIRST_NAME_REQUIRED));
|
|
defineRule(globalRules.LAST_NAME_REQUIRED, required(errorMessages.LAST_NAME_REQUIRED));
|
|
defineRule(
|
|
globalRules.POLICYHOLDER_FIRST_NAME_REQUIRED,
|
|
required(errorMessages.POLICYHOLDER_FIRST_NAME_REQUIRED)
|
|
);
|
|
defineRule(
|
|
globalRules.POLICYHOLDER_LAST_NAME_REQUIRED,
|
|
required(errorMessages.POLICYHOLDER_LAST_NAME_REQUIRED)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @summary Define global rules related to email addresses
|
|
*/
|
|
function defineGlobalEmailRules() {
|
|
defineRule(globalRules.EMAIL_ADDRESS_REQUIRED, required(errorMessages.EMAIL_ADDRESS_REQUIRED));
|
|
defineRule(
|
|
globalRules.EMAIL_ADDRESS_FORMAT,
|
|
regex(
|
|
/^([a-zA-Z0-9_\-.+]+)@([a-zA-Z0-9_\-.]+)\.([a-zA-Z]{2,})$/,
|
|
errorMessages.EMAIL_ADDRESS_FORMAT
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @summary Define global rules related to date/location of loss information
|
|
*/
|
|
function defineGlobalDateOfLossRules() {
|
|
defineRule(globalRules.DATE_OF_LOSS_REQUIRED, required(errorMessages.LOSS_DATE_REQUIRED));
|
|
defineRule(globalRules.DATE_OF_LOSS_NOT_TEN_YEARS_PAST, (value) => {
|
|
const lossDate = new Date(Date.parse(`${value}T00:00:00`));
|
|
const today = new Date();
|
|
const tenYearsAgo = new Date(today.getFullYear() - 10, today.getMonth(), today.getDate(), 0, 0, 0, 0);
|
|
if (lossDate < tenYearsAgo) {
|
|
return errorMessages.DAMAGE_DATE_REQUIREMENT;
|
|
}
|
|
|
|
return true;
|
|
});
|
|
defineRule(globalRules.DATE_OF_LOSS_NOT_FUTURE, (value) => {
|
|
const lossDate = new Date(Date.parse(`${value}T00:00:00`));
|
|
const today = new Date();
|
|
const tomorrow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1, 0, 0, 0, 0);
|
|
if (lossDate >= tomorrow) {
|
|
return errorMessages.DAMAGE_DATE_NO_FUTURE_DATE;
|
|
}
|
|
|
|
return true;
|
|
});
|
|
defineRule(globalRules.DATE_OF_LOSS_CITY_REQUIRED, required(errorMessages.LOSS_CITY_REQUIRED));
|
|
defineRule(
|
|
globalRules.DATE_OF_LOSS_CITY_FORMAT,
|
|
regex(/^[a-zA-Z .'-]+$/, errorMessages.LOSS_CITY_FORMAT)
|
|
);
|
|
defineRule(globalRules.DATE_OF_LOSS_STATE_REQUIRED, required(errorMessages.LOSS_STATE_REQUIRED));
|
|
}
|
|
|
|
/**
|
|
* @summary Define global rules related to phone numbers
|
|
*/
|
|
function defineGlobalPhoneNumberRules() {
|
|
defineRule(globalRules.PHONE_NUMBER_REQUIRED, required(errorMessages.PHONE_NUMBER_REQUIRED));
|
|
defineRule(
|
|
globalRules.PHONE_NUMBER_FORMAT,
|
|
regex(
|
|
/^(\([0-9]{3}\)|[0-9]{3}) *[-.]? *[0-9]{3} *[-.]? *[0-9]{4}$/,
|
|
errorMessages.PHONE_NUMBER_FORMAT
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @summary Define global rules related to policy numbers
|
|
*/
|
|
function defineGlobalPolicyNumberRules() {
|
|
defineRule(globalRules.POLICY_NUMBER_REQUIRED, required(errorMessages.POLICY_NUMBER_REQUIRED));
|
|
defineRule(
|
|
globalRules.POLICY_NUMBER_FORMAT,
|
|
regex(
|
|
/^~?[a-zA-Z0-9]+$/,
|
|
errorMessages.POLICY_NUMBER_FORMAT
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @summary Define global rules related to policy zip codes
|
|
*/
|
|
function defineGlobalPolicyZipCodeRules() {
|
|
defineRule(globalRules.POLICY_ZIP_REQUIRED, required(errorMessages.POLICY_ZIP_REQUIRED));
|
|
defineRule(
|
|
globalRules.POLICY_ZIP_FORMAT,
|
|
regex(/^\d{5}$/, errorMessages.POLICY_ZIP_FORMAT)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @summary Define global rules related to zip codes
|
|
*/
|
|
function defineGlobalZipCodeRules() {
|
|
defineRule(globalRules.ZIP_CODE_REQUIRED, required(errorMessages.ZIP_REQUIRED));
|
|
defineRule(globalRules.ZIP_CODE_SEARCH_FORMAT, regex(/^\d{5}$/, errorMessages.ZIP_FORMAT));
|
|
}
|
|
|
|
/**
|
|
* @function defineGlobalRules
|
|
* @summary Define all global rules
|
|
*/
|
|
export default function defineGlobalRules() {
|
|
defineGlobalNameRules();
|
|
defineGlobalDateOfLossRules();
|
|
defineGlobalEmailRules();
|
|
defineGlobalPhoneNumberRules();
|
|
defineGlobalPolicyNumberRules();
|
|
defineGlobalPolicyZipCodeRules();
|
|
defineGlobalZipCodeRules();
|
|
|
|
defineRule(globalRules.OPTION_REQUIRED, required(errorMessages.OPTION_REQUIRED));
|
|
}
|