const ageGroup = {
	BABY: 'B',
	CHILD: 'K',
	YOUNG: 'Y',
	ADULT: 'E',
	SENIOR: 'S',
	upperBoundOf: {
		BABY: 6,
		CHILD: 15,
		YOUNG: 27,
		ADULT: 65,
		SENIOR: Infinity,
	},
};

const ageGroupLabel = {
	B: 'KLEINKIND',
	K: 'FAMILIENKIND',
	Y: 'JUGENDLICHER',
	E: 'ERWACHSENER',
	S: 'SENIOR',
};

const ageGroupFromAge = (age) => {
	const {upperBoundOf} = ageGroup;
	if (age < upperBoundOf.BABY) {
		return ageGroup.BABY;
	}
	if (age < upperBoundOf.CHILD) {
		return ageGroup.CHILD;
	}
	if (age < upperBoundOf.YOUNG) {
		return ageGroup.YOUNG;
	}
	if (age < upperBoundOf.ADULT) {
		return ageGroup.ADULT;
	}
	if (age < upperBoundOf.SENIOR) {
		return ageGroup.SENIOR;
	}
	throw new TypeError(`Invalid age '${age}'`);
};

export {
	ageGroup,
	ageGroupLabel,
	ageGroupFromAge,
};