import { useIntl } from "react-intl"

import { CurrencyEnum } from "@scandic-hotels/common/constants/currency"
import Caption from "../../Caption"

import styles from "./hotelChequeCard.module.css"
import { Typography } from "../../Typography"

type ProductTypeCheque = {
  localPrice: {
    numberOfCheques: number
    additionalPricePerStay: number
    currency: CurrencyEnum | null | undefined
  }
  requestedPrice?: {
    numberOfCheques: number
    additionalPricePerStay: number
    currency: CurrencyEnum | null | undefined
  }
}

export default function HotelChequeCard({
  productTypeCheque,
}: {
  productTypeCheque: ProductTypeCheque
}) {
  const intl = useIntl()
  return (
    <div className={styles.chequeCard}>
      <div className={styles.chequeRow}>
        <Caption>
          {intl.formatMessage({
            id: "common.from",
            defaultMessage: "From",
          })}
        </Caption>
        <div className={styles.cheque}>
          <Typography variant="Title/Subtitle/md">
            <p>{productTypeCheque.localPrice.numberOfCheques}</p>
          </Typography>
          <Caption color="uiTextHighContrast">{CurrencyEnum.CC}</Caption>
          {productTypeCheque.localPrice.additionalPricePerStay > 0 ? (
            // eslint-disable-next-line formatjs/no-literal-string-in-jsx
            <>
              +
              <Typography variant="Title/Subtitle/md">
                <p>{productTypeCheque.localPrice.additionalPricePerStay}</p>
              </Typography>
              <Caption color="uiTextHighContrast">
                {productTypeCheque.localPrice.currency}
              </Caption>
            </>
          ) : null}
        </div>
      </div>
      {productTypeCheque.requestedPrice &&
      productTypeCheque.requestedPrice.additionalPricePerStay > 0 ? (
        <div className={styles.chequeRow}>
          <Caption color="uiTextMediumContrast">
            {intl.formatMessage({
              id: "booking.approx",
              defaultMessage: "Approx.",
            })}
          </Caption>
          <Caption color="uiTextMediumContrast">
            {productTypeCheque.requestedPrice.numberOfCheques} {CurrencyEnum.CC}
            {productTypeCheque.requestedPrice.additionalPricePerStay
              ? // eslint-disable-next-line formatjs/no-literal-string-in-jsx
                " + "
              : ""}
            {/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
            {`${productTypeCheque.requestedPrice.additionalPricePerStay} ${productTypeCheque.requestedPrice.currency}`}
          </Caption>
        </div>
      ) : null}
    </div>
  )
}
