Skip to content
Snippets Groups Projects
quiz.model.ts 1.25 KiB
import {
  CustomQuestionType,
  TimeStep,
  UserQuestionState,
  UserQuizState,
} from 'enums'
import { DateTime } from 'luxon'

export interface Answer {
  answerLabel: string
  isTrue: boolean
}

export interface QuestionEntity {
  questionLabel: string
  answers: Answer[]
  explanation: string
  source: string
}

export interface UserQuestion extends QuestionEntity {
  result: UserQuestionState
}

export interface CustomQuestionEntity {
  questionLabel: string
  type: CustomQuestionType
  timeStep: TimeStep
  interval: TimeStep
  period: CustomPeriod
  singleFluid: boolean
}

export interface UserCustomQuestion extends CustomQuestionEntity {
  result: UserQuestionState
}
export interface CustomPeriod {
  day?: number
  month?: number
  year?: number
  weekday?: number
}
export interface QuizEntity {
  id: string
  questions: QuestionEntity[]
  customQuestion: CustomQuestionEntity
  startDate: string | null
}

export interface UserQuiz
  extends Omit<QuizEntity, 'questions' | 'customQuestion' | 'startDate'> {
  questions: UserQuestion[]
  customQuestion: UserCustomQuestion
  state: UserQuizState
  result: number
  startDate: DateTime | null
}

export interface IntervalAnswer {
  date: DateTime
  value: number
}
export interface OtherAnswer {
  value: number
}