import { DateTime } from 'luxon'

export default class DateTimeWrapper {
  constructor({ locale = 'en-GB', text, timeZone = 'utc' } = {}) {
    if (!timeZone) {
      timeZone = 'utc'
    }
    if (
      timeZone.includes(':') &&
      timeZone.substring(0, 3).toUpperCase() !== 'UTC'
    ) {
      timeZone = 'UTC' + timeZone
    }
    this.dateTime = DateTime.fromISO(text, { locale, zone: timeZone })
  }

  getShortDate() {
    return this.dateTime.toLocaleString(DateTime.DATE_SHORT)
  }

  getShortOffsetName() {
    return this.dateTime.offsetNameShort
  }

  get24Time() {
    return this.dateTime.toLocaleString(DateTime.TIME_24_SIMPLE)
  }

  equalsDate(other) {
    return (
      this.dateTime &&
      other.dateTime &&
      this.dateTime.day === other.dateTime.day &&
      this.dateTime.month === other.dateTime.month &&
      this.dateTime.year === other.dateTime.year
    )
  }

  static getCurrentDatetimeAsString() {
    return DateTime.now().toString()
  }
}