{
    "$schema": "https://themost-framework.github.io/themost/models/2018/2/schema.json",
    "@id": "http://schema.org/CourseClassEvaluationEvent",
    "name": "CourseClassEvaluationEvent",
    "title": "CourseClassEvaluationEvents",
    "abstract": false,
    "sealed": false,
    "inherits": "EvaluationEvent",
    "version": "1.0",
    "classPath": "./models/course-class-evaluation-event-model",
    "fields": [
        {
            "@id": "http://schema.org/courseClass",
            "name": "courseClass",
            "title": "Course Class",
            "type": "CourseClass",
            "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": "CourseClassEvaluationEvent",
                "childModel": "EvaluationAccessToken",
                "parentField": "id",
                "childField": "evaluationEvent",
                "cascade": "delete",
                "associationType": "association"
            }
        },
        {
            "name": "actions",
            "title": "Generate token actions",
            "type": "GenerateTokenAction",
            "many": true,
            "mapping": {
                "parentModel": "CourseClassEvaluationEvent",
                "childModel": "GenerateCourseClassTokenAction",
                "parentField": "id",
                "childField": "event",
                "cascade": "delete",
                "associationType": "association"
            }
        },
        {
            "name": "sendActions",
            "title": "Send token actions",
            "type": "SendTokenAction",
            "many": true,
            "mapping": {
                "parentModel": "CourseClassEvaluationEvent",
                "childModel": "SendCourseClassTokenAction",
                "parentField": "id",
                "childField": "event",
                "cascade": "delete",
                "associationType": "association"
            }
        },
        {
            "name": "numberOfStudents",
            "title": "Μέγιστος αριθμός φοιτητών",
            "description": "Αριθμός φοιτητών που μπορούν να αξιολογήσουν",
            "type": "Integer",
            "nullable": true
        }
    ],
    "privileges": [
        {
            "mask": 15,
            "type": "global"
        },
        {
            "mask": 31,
            "type": "global",
            "account": "Administrators"
        },
        {
            "mask": 17,
            "type": "self",
            "account": "Registrar",
            "filter": "courseClass/course/department eq departments()",
            "scope": [
                "qa"
            ]
        },
        {
            "mask": 31,
            "type": "global",
            "account": "QualityAssuranceUnit"
        },
        {
            "mask": 31,
            "type": "self",
            "account": "QualityAssuranceDepartment",
            "filter": "courseClass/course/department eq departments()",
            "scope": [
                "qa"
            ]
        },
        {
            "mask": 17,
            "type": "self",
            "account": "Instructors",
            "filter": "courseClass/instructors/instructor eq instructor()",
            "scope": [
                "teachers"
            ]
        }
    ],
    "resultPrivileges": [
        {
            "mask": 1,
            "type": "self",
            "account": "Instructors",
            "filter": "courseClass/instructors/instructor eq instructor()",
            "scope": [
                "teachers"
            ]

        },
        {
            "mask": 1,
            "type": "self",
            "account": "Registrar",
            "filter": "organizer eq departments()",
            "scope": [
                "qa"
            ]
        }
    ],
    "eventListeners": [
        {
            "type": "@themost/data/previous-state-listener"
        },
        {
            "type": "./listeners/class-event-listener"
        }
    ]
}
