Skip to content

Commit

Permalink
Update currency and price formats
Browse files Browse the repository at this point in the history
  • Loading branch information
aelassas committed Apr 15, 2024
1 parent 980b88c commit 2eaf17d
Show file tree
Hide file tree
Showing 26 changed files with 453 additions and 328 deletions.
109 changes: 68 additions & 41 deletions backend/src/common/helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -212,123 +212,138 @@ export const getFuelPolicyTooltip = (fuelPolicy: string) => {
* Get mileage label.
*
* @param {number} mileage
* @param {string} language
* @returns {string}
*/
export const getMileage = (mileage: number) => {
export const getMileage = (mileage: number, language: string) => {
if (mileage === -1) {
return strings.UNLIMITED
}
return `${bookcarsHelper.formatNumber(mileage)} ${strings.MILEAGE_UNIT}`
return `${bookcarsHelper.formatNumber(mileage, language)} ${strings.MILEAGE_UNIT}`
}

/**
* Get mileage tooltip.
*
* @param {number} mileage
* @param {boolean} fr
* @param {string} language
* @returns {string}
*/
export const getMileageTooltip = (mileage: number, fr: boolean) => {
export const getMileageTooltip = (mileage: number, language: string) => {
const fr = bookcarsHelper.isFrench(language)

if (mileage === -1) {
return `${strings.MILEAGE} ${strings.UNLIMITED.toLocaleLowerCase()}.`
}
return `${strings.MILEAGE}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(mileage)} ${strings.MILEAGE_UNIT}`
return `${strings.MILEAGE}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(mileage, language)} ${strings.MILEAGE_UNIT}`
}

/**
* Get additional driver label.
*
* @param {number} additionalDriver
* @param {boolean} fr
* @param {string} language
* @returns {string}
*/
export const getAdditionalDriver = (additionalDriver: number, fr: boolean) => {
export const getAdditionalDriver = (additionalDriver: number, language: string) => {
const fr = bookcarsHelper.isFrench(language)

if (additionalDriver === -1) {
return `${strings.ADDITIONAL_DRIVER}${fr ? ' : ' : ': '}${strings.UNAVAILABLE}`
} if (additionalDriver === 0) {
return `${strings.ADDITIONAL_DRIVER}${fr ? ' : ' : ': '}${strings.INCLUDED}`
}
return `${strings.ADDITIONAL_DRIVER}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(additionalDriver)} ${strings.CAR_CURRENCY}`
return `${strings.ADDITIONAL_DRIVER}${fr ? ' : ' : ': '}${bookcarsHelper.formatPrice(additionalDriver, commonStrings.CURRENCY, language)}${commonStrings.DAILY}`
}

/**
* Get full insurance label.
*
* @param {number} fullInsurance
* @param {boolean} fr
* @param {string} language
* @returns {string}
*/
export const getFullInsurance = (fullInsurance: number, fr: boolean) => {
export const getFullInsurance = (fullInsurance: number, language: string) => {
const fr = bookcarsHelper.isFrench(language)

if (fullInsurance === -1) {
return `${strings.FULL_INSURANCE}${fr ? ' : ' : ': '}${strings.UNAVAILABLE}`
} if (fullInsurance === 0) {
return `${strings.FULL_INSURANCE}${fr ? ' : ' : ': '}${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${strings.FULL_INSURANCE}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(fullInsurance)} ${strings.CAR_CURRENCY}`
return `${strings.FULL_INSURANCE}${fr ? ' : ' : ': '}${bookcarsHelper.formatPrice(fullInsurance, commonStrings.CURRENCY, language)}${commonStrings.DAILY}`
}

/**
* Get collision damage waiver label.
*
* @param {number} collisionDamageWaiver
* @param {boolean} fr
* @param {string} language
* @returns {string}
*/
export const getCollisionDamageWaiver = (collisionDamageWaiver: number, fr: boolean) => {
export const getCollisionDamageWaiver = (collisionDamageWaiver: number, language: string) => {
const fr = bookcarsHelper.isFrench(language)

if (collisionDamageWaiver === -1) {
return `${strings.COLLISION_DAMAGE_WAVER}${fr ? ' : ' : ': '}${strings.UNAVAILABLE}`
} if (collisionDamageWaiver === 0) {
return `${strings.COLLISION_DAMAGE_WAVER}${fr ? ' : ' : ': '}${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${strings.COLLISION_DAMAGE_WAVER}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(collisionDamageWaiver)} ${strings.CAR_CURRENCY}`
return `${strings.COLLISION_DAMAGE_WAVER}${fr ? ' : ' : ': '}${bookcarsHelper.formatPrice(collisionDamageWaiver, commonStrings.CURRENCY, language)}${commonStrings.DAILY}`
}

/**
* Get theft protection label.
*
* @param {number} theftProtection
* @param {boolean} fr
* @param {string} language
* @returns {string}
*/
export const getTheftProtection = (theftProtection: number, fr: boolean) => {
export const getTheftProtection = (theftProtection: number, language: string) => {
const fr = bookcarsHelper.isFrench(language)

if (theftProtection === -1) {
return `${strings.THEFT_PROTECTION}${fr ? ' : ' : ': '}${strings.UNAVAILABLE}`
} if (theftProtection === 0) {
return `${strings.THEFT_PROTECTION}${fr ? ' : ' : ': '}${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${strings.THEFT_PROTECTION}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(theftProtection)} ${strings.CAR_CURRENCY}`
return `${strings.THEFT_PROTECTION}${fr ? ' : ' : ': '}${bookcarsHelper.formatPrice(theftProtection, commonStrings.CURRENCY, language)}${commonStrings.DAILY}`
}

/**
* Get amendments label.
*
* @param {number} amendments
* @param {boolean} fr
* @param {string} language
* @returns {string}
*/
export const getAmendments = (amendments: number, fr: boolean) => {
export const getAmendments = (amendments: number, language: string) => {
const fr = bookcarsHelper.isFrench(language)

if (amendments === -1) {
return `${strings.AMENDMENTS}${fr ? ' : ' : ': '}${strings.UNAVAILABLE}${fr ? 's' : ''}`
} if (amendments === 0) {
return `${strings.AMENDMENTS}${fr ? ' : ' : ': '}${strings.INCLUDED}${fr ? 'es' : ''}`
}
return `${strings.AMENDMENTS}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(amendments)} ${commonStrings.CURRENCY}`
return `${strings.AMENDMENTS}${fr ? ' : ' : ': '}${bookcarsHelper.formatPrice(amendments, commonStrings.CURRENCY, language)}`
}

/**
* Get cancellation label.
*
* @param {number} cancellation
* @param {boolean} fr
* @param {string} language
* @returns {string}
*/
export const getCancellation = (cancellation: number, fr: boolean) => {
export const getCancellation = (cancellation: number, language: string) => {
const fr = bookcarsHelper.isFrench(language)

if (cancellation === -1) {
return `${strings.CANCELLATION}${fr ? ' : ' : ': '}${strings.UNAVAILABLE}`
} if (cancellation === 0) {
return `${strings.CANCELLATION}${fr ? ' : ' : ': '}${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${strings.CANCELLATION}${fr ? ' : ' : ': '}${bookcarsHelper.formatNumber(cancellation)} ${commonStrings.CURRENCY}`
return `${strings.CANCELLATION}${fr ? ' : ' : ': '}${bookcarsHelper.formatPrice(cancellation, commonStrings.CURRENCY, language)}`
}

/**
Expand Down Expand Up @@ -526,106 +541,118 @@ export const getDaysShort = (days: number) => `${days} ${strings.PRICE_DAYS_PART
* Get cancellation option label.
*
* @param {number} cancellation
* @param {boolean} fr
* @param {string} language
* @param {boolean} hidePlus
* @returns {string}
*/
export const getCancellationOption = (cancellation: number, fr: boolean, hidePlus: boolean) => {
export const getCancellationOption = (cancellation: number, language: string, hidePlus: boolean) => {
const fr = bookcarsHelper.isFrench(language)

if (cancellation === -1) {
return strings.UNAVAILABLE
} if (cancellation === 0) {
return `${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${hidePlus ? '' : '+ '}${cancellation} ${commonStrings.CURRENCY}`
return `${hidePlus ? '' : '+ '}${bookcarsHelper.formatPrice(cancellation, commonStrings.CURRENCY, language)}`
}

/**
* Get amendments option label.
*
* @param {number} amendments
* @param {boolean} fr
* @param {string} language
* @param {boolean} hidePlus
* @returns {string}
*/
export const getAmendmentsOption = (amendments: number, fr: boolean, hidePlus: boolean) => {
export const getAmendmentsOption = (amendments: number, language: string, hidePlus: boolean) => {
const fr = bookcarsHelper.isFrench(language)

if (amendments === -1) {
return `${strings.UNAVAILABLE}${fr ? 's' : ''}`
} if (amendments === 0) {
return `${strings.INCLUDED}${fr ? 'es' : ''}`
}
return `${hidePlus ? '' : '+ '}${amendments} ${commonStrings.CURRENCY}`
return `${hidePlus ? '' : '+ '}${bookcarsHelper.formatPrice(amendments, commonStrings.CURRENCY, language)}`
}

/**
* Get collision damage waiver option label.
*
* @param {number} collisionDamageWaiver
* @param {number} days
* @param {boolean} fr
* @param {string} language
* @param {boolean} hidePlus
* @returns {string}
*/
export const getCollisionDamageWaiverOption = (collisionDamageWaiver: number, days: number, fr: boolean, hidePlus: boolean) => {
export const getCollisionDamageWaiverOption = (collisionDamageWaiver: number, days: number, language: string, hidePlus: boolean) => {
const fr = bookcarsHelper.isFrench(language)

if (collisionDamageWaiver === -1) {
return strings.UNAVAILABLE
} if (collisionDamageWaiver === 0) {
return `${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${hidePlus ? '' : '+ '}${collisionDamageWaiver * days} ${commonStrings.CURRENCY} (${collisionDamageWaiver} ${strings.CAR_CURRENCY})`
return `${hidePlus ? '' : '+ '}${bookcarsHelper.formatPrice(collisionDamageWaiver * days, commonStrings.CURRENCY, language)} (${bookcarsHelper.formatPrice(collisionDamageWaiver, commonStrings.CURRENCY, language)}${commonStrings.DAILY})`
}

/**
* Get theft protection option label.
*
* @param {number} theftProtection
* @param {number} days
* @param {boolean} fr
* @param {string} language
* @param {boolean} hidePlus
* @returns {string}
*/
export const getTheftProtectionOption = (theftProtection: number, days: number, fr: boolean, hidePlus: boolean) => {
export const getTheftProtectionOption = (theftProtection: number, days: number, language: string, hidePlus: boolean) => {
const fr = bookcarsHelper.isFrench(language)

if (theftProtection === -1) {
return strings.UNAVAILABLE
} if (theftProtection === 0) {
return `${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${hidePlus ? '' : '+ '}${theftProtection * days} ${commonStrings.CURRENCY} (${theftProtection} ${strings.CAR_CURRENCY})`
return `${hidePlus ? '' : '+ '}${bookcarsHelper.formatPrice(theftProtection * days, commonStrings.CURRENCY, language)} (${bookcarsHelper.formatPrice(theftProtection, commonStrings.CURRENCY, language)}${commonStrings.DAILY})`
}

/**
* Get full insurance option label.
*
* @param {number} fullInsurance
* @param {number} days
* @param {boolean} fr
* @param {string} language
* @param {boolean} hidePlus
* @returns {string}
*/
export const getFullInsuranceOption = (fullInsurance: number, days: number, fr: boolean, hidePlus: boolean) => {
export const getFullInsuranceOption = (fullInsurance: number, days: number, language: string, hidePlus: boolean) => {
const fr = bookcarsHelper.isFrench(language)

if (fullInsurance === -1) {
return strings.UNAVAILABLE
} if (fullInsurance === 0) {
return `${strings.INCLUDED}${fr ? 'e' : ''}`
}
return `${hidePlus ? '' : '+ '}${fullInsurance * days} ${commonStrings.CURRENCY} (${fullInsurance} ${strings.CAR_CURRENCY})`
return `${hidePlus ? '' : '+ '}${bookcarsHelper.formatPrice(fullInsurance * days, commonStrings.CURRENCY, language)} (${bookcarsHelper.formatPrice(fullInsurance, commonStrings.CURRENCY, language)}${commonStrings.DAILY})`
}

/**
* Get additional driver option label.
*
* @param {number} additionalDriver
* @param {number} days
* @param {boolean} fr
* @param {string} language
* @param {boolean} hidePlus
* @returns {string}
*/
export const getAdditionalDriverOption = (additionalDriver: number, days: number, fr: boolean, hidePlus: boolean) => {
export const getAdditionalDriverOption = (additionalDriver: number, days: number, language: string, hidePlus: boolean) => {
const fr = bookcarsHelper.isFrench(language)

if (additionalDriver === -1) {
return strings.UNAVAILABLE
} if (additionalDriver === 0) {
return strings.INCLUDED
}
return `${hidePlus ? '' : '+ '}${additionalDriver * days} ${commonStrings.CURRENCY} (${additionalDriver} ${strings.CAR_CURRENCY})`
return `${hidePlus ? '' : '+ '}${bookcarsHelper.formatPrice(additionalDriver * days, commonStrings.CURRENCY, language)} (${bookcarsHelper.formatPrice(additionalDriver, commonStrings.CURRENCY, language)}${commonStrings.DAILY})`
}

/**
Expand Down
16 changes: 8 additions & 8 deletions backend/src/components/BookingList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ const BookingList = ({
headerName: strings.PRICE,
flex: 1,
renderCell: ({ value }: GridRenderCellParams<bookcarsTypes.Booking, string>) => <span className="bp">{value}</span>,
valueGetter: (value: number) => `${bookcarsHelper.formatNumber(value)} ${commonStrings.CURRENCY}`,
valueGetter: (value: number) => bookcarsHelper.formatPrice(value, commonStrings.CURRENCY, language as string),
},
{
field: 'status',
Expand Down Expand Up @@ -543,47 +543,47 @@ const BookingList = ({
<div className="extra">
<CheckIcon className="extra-icon" />
<span className="extra-title">{csStrings.CANCELLATION}</span>
<span className="extra-text">{helper.getCancellationOption((booking.car as bookcarsTypes.Car).cancellation, _fr, true)}</span>
<span className="extra-text">{helper.getCancellationOption((booking.car as bookcarsTypes.Car).cancellation, language as string, true)}</span>
</div>
)}

{booking.amendments && (
<div className="extra">
<CheckIcon className="extra-icon" />
<span className="extra-title">{csStrings.AMENDMENTS}</span>
<span className="extra-text">{helper.getAmendmentsOption((booking.car as bookcarsTypes.Car).amendments, _fr, true)}</span>
<span className="extra-text">{helper.getAmendmentsOption((booking.car as bookcarsTypes.Car).amendments, language as string, true)}</span>
</div>
)}

{booking.collisionDamageWaiver && (
<div className="extra">
<CheckIcon className="extra-icon" />
<span className="extra-title">{csStrings.COLLISION_DAMAGE_WAVER}</span>
<span className="extra-text">{helper.getCollisionDamageWaiverOption((booking.car as bookcarsTypes.Car).collisionDamageWaiver, days, _fr, true)}</span>
<span className="extra-text">{helper.getCollisionDamageWaiverOption((booking.car as bookcarsTypes.Car).collisionDamageWaiver, days, language as string, true)}</span>
</div>
)}

{booking.theftProtection && (
<div className="extra">
<CheckIcon className="extra-icon" />
<span className="extra-title">{csStrings.THEFT_PROTECTION}</span>
<span className="extra-text">{helper.getTheftProtectionOption((booking.car as bookcarsTypes.Car).theftProtection, days, _fr, true)}</span>
<span className="extra-text">{helper.getTheftProtectionOption((booking.car as bookcarsTypes.Car).theftProtection, days, language as string, true)}</span>
</div>
)}

{booking.fullInsurance && (
<div className="extra">
<CheckIcon className="extra-icon" />
<span className="extra-title">{csStrings.FULL_INSURANCE}</span>
<span className="extra-text">{helper.getFullInsuranceOption((booking.car as bookcarsTypes.Car).fullInsurance, days, _fr, true)}</span>
<span className="extra-text">{helper.getFullInsuranceOption((booking.car as bookcarsTypes.Car).fullInsurance, days, language as string, true)}</span>
</div>
)}

{booking.additionalDriver && (
<div className="extra">
<CheckIcon className="extra-icon" />
<span className="extra-title">{csStrings.ADDITIONAL_DRIVER}</span>
<span className="extra-text">{helper.getAdditionalDriverOption((booking.car as bookcarsTypes.Car).additionalDriver, days, _fr, true)}</span>
<span className="extra-text">{helper.getAdditionalDriverOption((booking.car as bookcarsTypes.Car).additionalDriver, days, language as string, true)}</span>
</div>
)}
</div>
Expand All @@ -592,7 +592,7 @@ const BookingList = ({

<div className="booking-detail" style={{ height: bookingDetailHeight }}>
<span className="booking-detail-title">{strings.COST}</span>
<div className="booking-detail-value booking-price">{`${bookcarsHelper.formatNumber(booking.price)} ${commonStrings.CURRENCY}`}</div>
<div className="booking-detail-value booking-price">{bookcarsHelper.formatPrice(booking.price as number, commonStrings.CURRENCY, language as string)}</div>
</div>

<div className="bs-buttons">
Expand Down
Loading

0 comments on commit 2eaf17d

Please sign in to comment.