{
  "$schema": "https://themost-framework.github.io/themost/models/2018/2/schema.json",
  "@id": "http://schema.org/StudyProgramEvaluationEvent",
  "name": "StudyProgramEvaluationEvent",
  "title": "StudyProgramEvaluationEvents",
  "abstract": false,
  "sealed": false,
  "inherits": "EvaluationEvent",
  "version": "1.0",
  "classPath": "./models/study-program-evaluation-event-model",
  "fields": [
    {
      "@id": "http://schema.org/studyProgram",
      "name": "studyProgram",
      "title": "Study program",
      "type": "StudyProgram",
      "nullable": false
    },
    {
      "@id": "http://schema.org/academicYear",
      "name": "academicYear",
      "title": "Academic year",
      "type": "AcademicYear",
      "nullable": false
    },
    {
      "@id": "http://schema.org/academicPeriod",
      "name": "academicPeriod",
      "title": "Academic Period",
      "type": "AcademicPeriod",
      "nullable": false
    },
    {
      "@id": "http://schema.org/organizer",
      "name": "organizer",
      "title": "organizer",
      "description": "An organizer of an Event.",
      "type": "Department",
      "nullable": false
    },
    {
      "name": "tokens",
      "title": "Evaluation tokens",
      "type": "EvaluationAccessToken",
      "many": true,
      "mapping": {
        "parentModel": "StudyProgramEvaluationEvent",
        "childModel": "EvaluationAccessToken",
        "parentField": "id",
        "childField": "evaluationEvent",
        "cascade": "delete",
        "associationType": "association"
      }
    },
    {
      "name": "actions",
      "title": "Generate token actions",
      "type": "GenerateTokenAction",
      "many": true,
      "mapping": {
        "parentModel": "StudyProgramEvaluationEvent",
        "childModel": "GenerateStudyProgramTokenAction",
        "parentField": "id",
        "childField": "event",
        "cascade": "delete",
        "associationType": "association"
      }
    },
    {
      "name": "sendActions",
      "title": "Send token actions",
      "type": "SendTokenAction",
      "many": true,
      "mapping": {
        "parentModel": "StudyProgramEvaluationEvent",
        "childModel": "SendStudyProgramTokenAction",
        "parentField": "id",
        "childField": "event",
        "cascade": "delete",
        "associationType": "association"
      }
    },
    {
      "name": "numberOfStudents",
      "title": "Μέγιστος αριθμός φοιτητών",
      "description": "Αριθμός φοιτητών που μπορούν να αξιολογήσουν",
      "type": "Integer",
      "nullable": true
    }
  ],
  "constraints": [
    {
      "type": "unique",
      "fields": [
        "studyProgram",
        "academicYear",
        "academicPeriod"
      ]
    }
  ],
  "privileges": [
    {
      "mask": 31,
      "type": "global"
    },
    {
      "mask": 31,
      "type": "global",
      "account": "Administrators"
    },
    {
      "mask": 17,
      "type": "self",
      "account": "Registrar",
      "filter": "studyProgram/department eq departments()",
      "scope": [
        "qa"
      ]
    },
    {
      "mask": 31,
      "type": "global",
      "account": "QualityAssuranceUnit"
    },
    {
      "mask": 31,
      "type": "self",
      "account": "QualityAssuranceDepartment",
      "filter": "studyProgram/department eq departments()",
      "scope": [
        "qa"
      ]
    }
  ],
  "eventListeners": [
    {
      "type": "@themost/data/previous-state-listener"
    },
    {
      "type": "./listeners/class-instructor-event-listener"
    }
  ]
}
