-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later

-- Description of all primary schools managed by uni2work
-- Each school must have a unique human-readable shorthand which is used as database row key
School json
    name          (CI Text)
    shorthand     SchoolShorthand -- type SchoolShorthand = (CI Text)  -- SchoolKey :: SchoolShorthand -> SchoolId
    examMinimumRegisterBeforeStart NominalDiffTime Maybe
    examMinimumRegisterDuration    NominalDiffTime Maybe
    examRequireModeForRegistration Bool default=false
    examDiscouragedModes ExamModeDNF
    examCloseMode ExamCloseMode default='separate' 
    sheetAuthorshipStatementMode SchoolAuthorshipStatementMode default='optional'
    sheetAuthorshipStatementDefinition AuthorshipStatementDefinitionId Maybe
    sheetAuthorshipStatementAllowOther Bool default=true
    sheetExamAuthorshipStatementMode SchoolAuthorshipStatementMode default='optional'
    sheetExamAuthorshipStatementDefinition AuthorshipStatementDefinitionId Maybe
    sheetExamAuthorshipStatementAllowOther Bool default=true
    UniqueSchool name
    UniqueSchoolShorthand shorthand -- required for Normalisation of CI Text
    Primary shorthand        -- newtype Key School = SchoolKey { unSchoolKey :: SchoolShorthand }
    deriving Ord Eq Show Generic
SchoolLdap
    school  SchoolId Maybe
    orgUnit (CI Text)
    UniqueOrgUnit orgUnit
    deriving Generic
SchoolTerms
    school  SchoolId
    terms   StudyTermsId
    UniqueSchoolTerms school terms
    deriving Generic