import {Str, Model, Uid, Bool, Num, Attr} from '@vuex-orm/core'

export class Parameters extends Model {
  static entity = 'parameters'

  @Uid()
  id!: number | string | null

  @Str(null, { nullable: true })
  financialDate!: string|null

  @Str(null, { nullable: true })
  musicalDate!: string|null

  @Str(null, { nullable: true })
  startCourseDate!: string|null

  @Str(null, { nullable: true })
  endCourseDate!: string|null

  @Bool(false, { nullable: false })
  trackingValidation!: boolean

  @Num(20, { nullable: true })
  average!: number

  @Bool(true, { nullable: false })
  editCriteriaNotationByAdminOnly!: boolean

  @Str(null, { nullable: true })
  smsSenderName!: string|null

  @Bool(true, { nullable: false })
  logoDonorsMove!: boolean

  @Str(null, { nullable: true })
  subDomain!: string|null

  @Str(null, { nullable: true })
  website!: string|null

  @Str(null, { nullable: true })
  otherWebsite!: string|null

  @Bool(false, { nullable: false })
  desactivateOpentalentSiteWeb!: boolean

  @Attr([])
  publicationDirectors!: []

  @Str(null, { nullable: true })
  bulletinPeriod!: string|null

  @Bool(false, { nullable: false })
  bulletinWithTeacher!: boolean

  @Bool(false, { nullable: false })
  bulletinPrintAddress!: boolean

  @Bool(true, { nullable: false })
  bulletinSignatureDirector!: boolean

  @Bool(true, { nullable: false })
  bulletinDisplayLevelAcquired!: boolean

  @Bool(false, { nullable: false })
  bulletinShowEducationWithoutEvaluation!: boolean

  @Bool(false, { nullable: false })
  bulletinViewTestResults!: boolean

  @Bool(false, { nullable: false })
  bulletinShowAbsences!: boolean

  @Bool(true, { nullable: false })
  bulletinShowAverages!: boolean

  @Str(null, { nullable: true })
  bulletinOutput!: string|null

  @Bool(true, { nullable: false })
  bulletinEditWithoutEvaluation!: boolean

  @Str('STUDENTS_AND_THEIR_GUARDIANS', { nullable: true })
  bulletinReceiver!: string|null

  @Str(null, { nullable: true })
  usernameSMS!: string|null

  @Str(null, { nullable: true })
  passwordSMS!: string|null

  @Bool(true, { nullable: false })
  showAdherentList!: boolean

  @Bool(false, { nullable: false })
  studentsAreAdherents!: boolean

  @Str(null, { nullable: true })
  qrCode!: string|null

  @Str('Europe/Paris', { nullable: true })
  timezone!: string|null

  @Str('ANNUAL', { nullable: true })
  educationPeriodicity!: string|null

  @Str('BY_EDUCATION', { nullable: true })
  advancedEducationNotationType!: string|null

  @Bool(false, { nullable: false })
  sendAttendanceEmail!: boolean

  @Bool(false, { nullable: false })
  sendAttendanceSms!: boolean
}
