import type { IntlShape } from "react-intl"

/**
 * Function to parse number with single decimal if any
 * @param n
 * @returns number in float type with single digit decimal if any
 */
export function getSingleDecimal(n: Number | string) {
  return parseFloat(Number(n).toFixed(1))
}

/**
 * Function to parse number for i18n format for prices with currency
 * @param intl - react-intl object
 * @param price - number to be formatted
 * @param currency - currency code
 * @param additionalPrice - number (obtained in reward nights and Corporate cheque scenarios)
 * @param additionalPriceCurrency - currency code (obtained in reward nights and Corporate cheque scenarios)
 * @returns localized and formatted number in string type with currency
 */
export function formatPrice(
  intl: IntlShape,
  price: number,
  currency: string,
  additionalPrice?: number,
  additionalPriceCurrency?: string
) {
  const localizedPrice = intl.formatNumber(price, {
    minimumFractionDigits: 0,
  })

  let formattedAdditionalPrice: string = ""
  if (additionalPrice && additionalPriceCurrency) {
    const localizedAdditionalPrice = intl.formatNumber(additionalPrice, {
      minimumFractionDigits: 0,
    })
    formattedAdditionalPrice = ` + ${localizedAdditionalPrice} ${additionalPriceCurrency}`
  }

  return `${localizedPrice} ${currency}${formattedAdditionalPrice}`
}
