import { DateTime } from 'luxon'

export interface ProfileEntity {
  id: string
  /** Hash used to verify the content of ecogestures */
  ecogestureHash: string
  /** Hash used to verify the content of challenges */
  challengeHash: string
  /** Hash used to verify the content of duels */
  duelHash: string
  /** Hash used to verify the content of quiz */
  quizHash: string
  /** Hash used to verify the content of exploration */
  explorationHash: string
  /** Boolean used to inform if the user connects for the first time */
  isFirstConnection: boolean
  /** Date of the last user connection */
  lastConnectionDate: string
  /** Boolean used to inform if user has seen the last analysis */
  haveSeenLastAnalysis: boolean
  /** Boolean used to inform if user has seen the analysis notification */
  sendAnalysisNotification: boolean
  isAnalysisReminderEnabled: boolean
  /** Date of the last monthly analysis */
  monthlyAnalysisDate: string
  sendConsumptionAlert: boolean
  waterDailyConsumptionLimit: number
  /** Check if a user has completed his consumption profile */
  isProfileTypeCompleted: boolean
  isProfileEcogestureCompleted: boolean
  onboarding: {
    isWelcomeSeen: boolean
  }
  mailToken: string
  partnersIssueSeenDate: {
    enedis?: string
    egl?: string
    grdf?: string
  }
  haveSeenEcogestureModal: boolean
  activateHalfHourDate: string
  customPopupDate: string
  _id?: string
  _rev?: string
}

export interface Profile
  extends Omit<
    ProfileEntity,
    | 'lastConnectionDate'
    | 'monthlyAnalysisDate'
    | 'partnersIssueSeenDate'
    | 'activateHalfHourDate'
    | 'customPopupDate'
  > {
  lastConnectionDate: DateTime
  monthlyAnalysisDate: DateTime
  partnersIssueSeenDate: {
    enedis: DateTime
    egl: DateTime
    grdf: DateTime
  }
  customPopupDate: DateTime
  activateHalfHourDate: DateTime
}