import { logger } from "@scandic-hotels/common/logger" import { phoneErrors } from "@scandic-hotels/common/utils/zod/phoneValidator" import { signupErrors } from "@scandic-hotels/trpc/routers/user/schemas" import { bookingWidgetErrors } from "@/components/Forms/BookingWidget/schema" import { editProfileErrors } from "@/components/Forms/Edit/Profile/schema" import { multiroomErrors } from "@/components/HotelReservation/EnterDetails/Details/Multiroom/schema" import { roomOneErrors } from "@/components/HotelReservation/EnterDetails/Details/RoomOne/schema" import { findMyBookingErrors } from "@/components/HotelReservation/FindMyBooking/schema" import type { IntlShape } from "react-intl" export function getErrorMessage(intl: IntlShape, errorCode?: string) { switch (errorCode) { case findMyBookingErrors.BOOKING_NUMBER_INVALID: return intl.formatMessage({ defaultMessage: "Invalid booking number", }) case findMyBookingErrors.BOOKING_NUMBER_REQUIRED: return intl.formatMessage({ defaultMessage: "Invalid booking number", }) case bookingWidgetErrors.BOOKING_CODE_INVALID: return intl.formatMessage({ defaultMessage: "Booking code is invalid", }) case findMyBookingErrors.FIRST_NAME_REQUIRED: case signupErrors.FIRST_NAME_REQUIRED: case multiroomErrors.FIRST_NAME_REQUIRED: case roomOneErrors.FIRST_NAME_REQUIRED: return intl.formatMessage({ defaultMessage: "First name is required", }) case multiroomErrors.FIRST_NAME_SPECIAL_CHARACTERS: case roomOneErrors.FIRST_NAME_SPECIAL_CHARACTERS: return intl.formatMessage({ defaultMessage: "First name can't contain any special characters", }) case findMyBookingErrors.LAST_NAME_REQUIRED: case signupErrors.LAST_NAME_REQUIRED: case multiroomErrors.LAST_NAME_REQUIRED: case roomOneErrors.LAST_NAME_REQUIRED: return intl.formatMessage({ defaultMessage: "Last name is required", }) case multiroomErrors.LAST_NAME_SPECIAL_CHARACTERS: case roomOneErrors.LAST_NAME_SPECIAL_CHARACTERS: return intl.formatMessage({ defaultMessage: "Last name can't contain any special characters", }) case multiroomErrors.FIRST_AND_LAST_NAME_UNIQUE: return intl.formatMessage({ defaultMessage: "First and last name can't be the same in two different rooms", }) case findMyBookingErrors.EMAIL_REQUIRED: case multiroomErrors.EMAIL_REQUIRED: case roomOneErrors.EMAIL_REQUIRED: case signupErrors.EMAIL_REQUIRED: return intl.formatMessage({ defaultMessage: "Email address is required", }) case signupErrors.EMAIL_INVALID: return intl.formatMessage({ defaultMessage: "Email address is invalid", }) case signupErrors.COUNTRY_REQUIRED: case multiroomErrors.COUNTRY_REQUIRED: case roomOneErrors.COUNTRY_REQUIRED: case editProfileErrors.COUNTRY_REQUIRED: return intl.formatMessage({ defaultMessage: "Country is required", }) case signupErrors.PHONE_REQUIRED: case multiroomErrors.PHONE_REQUIRED: case roomOneErrors.PHONE_REQUIRED: case editProfileErrors.PHONE_REQUIRED: return intl.formatMessage({ defaultMessage: "Phone is required", }) case phoneErrors.PHONE_NUMBER_TOO_SHORT: return intl.formatMessage({ defaultMessage: "The number you have entered is too short", }) case phoneErrors.PHONE_REQUESTED: case signupErrors.PHONE_REQUESTED: case multiroomErrors.PHONE_REQUESTED: case roomOneErrors.PHONE_REQUESTED: case editProfileErrors.PHONE_REQUESTED: return intl.formatMessage({ defaultMessage: "Please enter a valid phone number", }) case signupErrors.BIRTH_DATE_REQUIRED: case roomOneErrors.BIRTH_DATE_REQUIRED: return intl.formatMessage({ defaultMessage: "Date of birth is required", }) case roomOneErrors.BIRTH_DATE_AGE_18: return intl.formatMessage({ defaultMessage: "Must be at least 18 years of age to continue", }) case roomOneErrors.ZIP_CODE_REQUIRED: case editProfileErrors.ZIP_CODE_REQUIRED: case signupErrors.ZIP_CODE_REQUIRED: return intl.formatMessage({ defaultMessage: "Zip code is required", }) case roomOneErrors.ZIP_CODE_INVALID: case editProfileErrors.ZIP_CODE_INVALID: case signupErrors.ZIP_CODE_INVALID: return intl.formatMessage({ defaultMessage: "The postal code can only contain numbers and letters", }) case signupErrors.PASSWORD_REQUIRED: return intl.formatMessage({ defaultMessage: "Password is required", }) case editProfileErrors.PASSWORD_NEW_REQUIRED: return intl.formatMessage({ defaultMessage: "New password is required", }) case editProfileErrors.PASSWORD_RETYPE_NEW_REQUIRED: return intl.formatMessage({ defaultMessage: "Confirm your new password", }) case editProfileErrors.PASSWORD_CURRENT_REQUIRED: return intl.formatMessage({ defaultMessage: "Current password is required", }) case editProfileErrors.PASSWORD_NEW_NOT_MATCH: return intl.formatMessage({ defaultMessage: "Passwords do not match", }) case multiroomErrors.MEMBERSHIP_NO_ONLY_DIGITS: case roomOneErrors.MEMBERSHIP_NO_ONLY_DIGITS: return intl.formatMessage({ defaultMessage: "Only digits are allowed", }) case multiroomErrors.MEMBERSHIP_NO_INVALID: case roomOneErrors.MEMBERSHIP_NO_INVALID: return intl.formatMessage({ defaultMessage: "Invalid membership number format", }) case multiroomErrors.MEMBERSHIP_NO_UNIQUE: return intl.formatMessage({ defaultMessage: "Membership number can't be the same for two different rooms", }) case bookingWidgetErrors.AGE_REQUIRED: return intl.formatMessage({ defaultMessage: "Age is required", }) case bookingWidgetErrors.BED_CHOICE_REQUIRED: return intl.formatMessage({ defaultMessage: "Bed choice is required", }) case bookingWidgetErrors.CHILDREN_EXCEEDS_ADULTS: return intl.formatMessage({ defaultMessage: "You cannot have more children in adults bed than adults in the room", }) case bookingWidgetErrors.REQUIRED: return intl.formatMessage({ defaultMessage: "Required", }) case bookingWidgetErrors.DESTINATION_REQUIRED: return intl.formatMessage({ defaultMessage: "Destination required", }) case bookingWidgetErrors.MULTIROOM_BOOKING_CODE_UNAVAILABLE: return intl.formatMessage({ defaultMessage: "Multi-room booking is not available with this booking code.", }) case bookingWidgetErrors.MULTIROOM_REWARD_NIGHT_UNAVAILABLE: return intl.formatMessage({ defaultMessage: "Multi-room booking is not available with reward night.", }) case bookingWidgetErrors.CODE_VOUCHER_REWARD_NIGHT_UNAVAILABLE: return intl.formatMessage({ defaultMessage: "Reward nights can't be combined with codes or vouchers.", }) default: logger.warn("Error code not supported:", errorCode) return errorCode } }