Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generator: Add bikeNumberValidation and fix carNumberValidation #615

Merged
merged 1 commit into from
Jul 29, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 50 additions & 4 deletions packages/evolution-generator/src/common/validations.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/
import { _isBlank } from 'chaire-lib-common/lib/utils/LodashExtensions';
import { Validations } from '../types/inputTypes';
import surveyHelper from 'evolution-legacy/lib/helpers/survey/survey';
import * as surveyHelperNew from 'evolution-common/lib/utils/helpers';

// Make sure the question is answered
export const requiredValidation: Validations = (value) => {
Expand Down Expand Up @@ -81,7 +81,7 @@ export const householdSizeValidation: Validations = (value) => {

// Verify if the value is a valid number of cars
export const carNumberValidation: Validations = (value, _customValue, interview, _path, _customPath) => {
const householdSize = surveyHelper.get(interview, 'household.size', null);
const householdSize = surveyHelperNew.getResponse(interview, 'household.size', null);

return [
{
Expand All @@ -92,7 +92,7 @@ export const carNumberValidation: Validations = (value, _customValue, interview,
}
},
{
validation: surveyHelper.isBlank(value),
validation: _isBlank(value),
errorMessage: {
fr: 'Le nombre de véhicules est requis.',
en: 'The number of vehicles is required.'
Expand All @@ -112,10 +112,12 @@ export const carNumberValidation: Validations = (value, _customValue, interview,
en: 'The number of vehicles must be at least 0.'
}
},
// The number of vehicles should not be 5 times greater than the number of people in the household
{
validation:
!surveyHelper.isBlank(householdSize) &&
!_isBlank(householdSize) &&
!isNaN(Number(householdSize)) &&
typeof householdSize === 'number' &&
Number(value) / householdSize > 3,
errorMessage: {
fr: 'Le nombre de véhicules est trop élevé pour le nombre de personnes dans le ménage. Ne pas inclure les véhicules de collection ou les véhicules qui ne sont pas utilisés régulièrement.',
Expand All @@ -125,6 +127,50 @@ export const carNumberValidation: Validations = (value, _customValue, interview,
];
};

// Verify if the value is a valid number of bikes
export const bikeNumberValidation: Validations = (value, _customValue, interview, _path, _customPath) => {
const householdSize = surveyHelperNew.getResponse(interview, 'household.size', null);

return [
{
validation: isNaN(Number(value)) || !Number.isInteger(Number(value)),
errorMessage: {
fr: 'Le nombre de vélos est invalide.',
en: 'The number of bikes is invalid.'
}
},
{
validation: _isBlank(value),
errorMessage: {
fr: 'Le nombre de vélos est requis.',
en: 'The number of bikes is required.'
}
},
{
validation: Number(value) > 20,
errorMessage: {
fr: 'Le nombre de vélos doit être au maximum 20.',
en: 'The number of bikes must be less than or equal to 20.'
}
},
{
validation: Number(value) < 0,
errorMessage: {
fr: 'Le nombre de vélos doit être au moins de 0.',
en: 'The number of bikes must be at least 0.'
}
},
// The number of bikes should not be 5 times greater than the number of people in the household
{
validation: !_isBlank(householdSize) && !isNaN(Number(householdSize)) && typeof householdSize === 'number' && (Number(value) / householdSize) > 5,
errorMessage: {
fr: 'Le nombre de vélos est trop élevé pour le nombre de personnes dans le ménage. Ne pas inclure les vélos de collection ou les vélos qui ne sont pas utilisés régulièrement.',
en: 'The number of bikes is too high for the number of people in the household. Do not include collection bikes or bikes that are not used on a regular basis.'
}
}
];
};

// Verify if the value is a valid age
export const ageValidation: Validations = (value) => {
return [
Expand Down