import ApiModel from "~/models/ApiModel";
import {Bool, Num, Str, Uid, Attr} from "pinia-orm/dist/decorators";

/**
 * AP2i Model : Parameters
 *
 * @see https://gitlab.2iopenservice.com/opentalent/ap2i/-/blob/develop/src/Entity/Organization/Parameters.php
 */
export default class Parameters extends ApiModel {
  static entity = 'parameters'

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

  @Str(null)
  declare financialDate: string|null

  @Str(null)
  declare musicalDate: string|null

  @Str(null)
  declare startCourseDate: string|null

  @Str(null)
  declare endCourseDate: string|null

  @Bool(false, { notNullable: true })
  declare trackingValidation: boolean

  @Num(20)
  declare average: number

  @Bool(true, { notNullable: true })
  declare editCriteriaNotationByAdminOnly: boolean

  @Str(null)
  declare smsSenderName: string|null

  @Bool(true, { notNullable: true })
  declare logoDonorsMove: boolean

  @Str(null)
  declare otherWebsite: string|null

  @Str(null)
  declare customDomain: string|null

  @Bool(false, { notNullable: true })
  declare desactivateOpentalentSiteWeb: boolean

  @Attr([])
  declare publicationDirectors: []

  @Str(null)
  declare bulletinPeriod: string|null

  @Bool(false, { notNullable: true })
  declare bulletinWithTeacher: boolean

  @Bool(false, { notNullable: true })
  declare bulletinPrintAddress: boolean

  @Bool(true, { notNullable: true })
  declare bulletinSignatureDirector: boolean

  @Bool(true, { notNullable: true })
  declare bulletinDisplayLevelAcquired: boolean

  @Bool(false, { notNullable: true })
  declare bulletinShowEducationWithoutEvaluation: boolean

  @Bool(false, { notNullable: true })
  declare bulletinViewTestResults: boolean

  @Bool(false, { notNullable: true })
  declare bulletinShowAbsences: boolean

  @Bool(true, { notNullable: true })
  declare bulletinShowAverages: boolean

  @Str(null)
  declare bulletinOutput: string|null

  @Bool(true, { notNullable: true })
  declare bulletinEditWithoutEvaluation: boolean

  @Str('STUDENTS_AND_THEIR_GUARDIANS')
  declare bulletinReceiver: string|null

  @Str(null)
  declare usernameSMS: string|null

  @Str(null)
  declare passwordSMS: string|null

  @Bool(true, { notNullable: true })
  declare showAdherentList: boolean

  @Bool(false, { notNullable: true })
  declare studentsAreAdherents: boolean

  @Str(null)
  declare qrCode: string|null

  @Str('Europe/Paris')
  declare timezone: string|null

  @Str('ANNUAL')
  declare educationPeriodicity: string|null

  @Str('BY_EDUCATION')
  declare advancedEducationNotationType: string|null

  @Bool(false, { notNullable: true })
  declare sendAttendanceEmail: boolean

  @Bool(false, { notNullable: true })
  declare sendAttendanceSms: boolean

  @Attr([])
  declare subdomains: []
}
