import ICurrency from '@/models/ICurrency'

export const money = (
  value: number,
  currency: ICurrency | null | undefined,
  country: string = 'fr-FR'
): string => {
  if (!currency) {
    return value.toString()
  }

  return new Intl.NumberFormat(country, {
    style: 'currency',
    currency: currency.code,
    minimumFractionDigits: 2
  }).format(value)
}

export const moneypad = (
  value: number,
  currency: ICurrency | null | undefined
): string => {
  const m = money(value, currency)
  const s: string[] = m.split('\xa0')
  const cur: string | undefined = s.pop()

  return `${s.join('\xa0')}\xa0${(cur || '').padEnd(3, '\xa0')}`
}

export const date = (value: string, country: string = 'fr-FR') => {
  return new Intl.DateTimeFormat(country).format(new Date(value))
}

export const fulldate = (value: string, country: string = 'fr-FR') => {
  return new Intl.DateTimeFormat(country, {
    weekday: 'long',
    year: 'numeric',
    month: 'long',
    day: 'numeric'
  }).format(new Date(value))
}

export default {
  money,
  moneypad,
  date,
  fulldate
} as { [key: string]: (...args: any[]) => any }
