package ucca

import "time"

// loadHardcodedObligations populates the NIS2 module with built-in fallback data.
func (m *NIS2Module) loadHardcodedObligations() {
	bsiDeadline := time.Date(2025, 1, 17, 0, 0, 0, 0, time.UTC)

	m.obligations = []Obligation{
		{
			ID:          "NIS2-OBL-001",
			RegulationID: "nis2",
			Title:       "BSI-Registrierung",
			Description: "Registrierung beim BSI über das Meldeportal. Anzugeben sind: Kontaktdaten, IP-Bereiche, verantwortliche Ansprechpartner.",
			LegalBasis:  []LegalReference{{Norm: "§ 33 BSIG-E", Article: "Registrierungspflicht"}},
			Category:    CategoryMeldepflicht,
			Responsible: RoleManagement,
			Deadline:    &Deadline{Type: DeadlineAbsolute, Date: &bsiDeadline},
			Sanctions:   &SanctionInfo{MaxFine: "500.000 EUR", PersonalLiability: false},
			Evidence:    []EvidenceItem{{Name: "Registrierungsbestätigung BSI", Required: true}, {Name: "Dokumentierte Ansprechpartner", Required: true}},
			Priority:    PriorityCritical,
			AppliesWhen: "classification in ['wichtige_einrichtung', 'besonders_wichtige_einrichtung']",
		},
		{
			ID:          "NIS2-OBL-002",
			RegulationID: "nis2",
			Title:       "Risikomanagement-Maßnahmen implementieren",
			Description: "Umsetzung angemessener technischer, operativer und organisatorischer Maßnahmen zur Beherrschung der Risiken für die Sicherheit der Netz- und Informationssysteme.",
			LegalBasis:  []LegalReference{{Norm: "Art. 21 NIS2"}, {Norm: "§ 30 BSIG-E"}},
			Category:    CategoryGovernance,
			Responsible: RoleCISO,
			Deadline:    &Deadline{Type: DeadlineRelative, Duration: "18 Monate nach Inkrafttreten"},
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz", PersonalLiability: true},
			Evidence:    []EvidenceItem{{Name: "ISMS-Dokumentation", Required: true}, {Name: "Risikoanalyse", Required: true}, {Name: "Maßnahmenkatalog", Required: true}},
			Priority:    PriorityHigh,
			ISO27001Mapping: []string{"A.5", "A.6", "A.8"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-003",
			RegulationID: "nis2",
			Title:       "Geschäftsführungs-Verantwortung",
			Description: "Die Geschäftsleitung muss die Risikomanagementmaßnahmen genehmigen, deren Umsetzung überwachen und kann für Verstöße persönlich haftbar gemacht werden.",
			LegalBasis:  []LegalReference{{Norm: "Art. 20 NIS2"}, {Norm: "§ 38 BSIG-E"}},
			Category:    CategoryGovernance,
			Responsible: RoleManagement,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz", PersonalLiability: true},
			Evidence:    []EvidenceItem{{Name: "Vorstandsbeschluss zur Cybersicherheit", Required: true}, {Name: "Dokumentierte Genehmigung der Maßnahmen", Required: true}},
			Priority:    PriorityCritical,
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-004",
			RegulationID: "nis2",
			Title:       "Cybersicherheits-Schulung der Geschäftsführung",
			Description: "Mitglieder der Leitungsorgane müssen an Schulungen teilnehmen, um ausreichende Kenntnisse und Fähigkeiten zur Erkennung und Bewertung von Risiken zu erlangen.",
			LegalBasis:  []LegalReference{{Norm: "Art. 20 Abs. 2 NIS2"}, {Norm: "§ 38 Abs. 3 BSIG-E"}},
			Category:    CategoryTraining,
			Responsible: RoleManagement,
			Deadline:    &Deadline{Type: DeadlineRecurring, Interval: "jährlich"},
			Evidence:    []EvidenceItem{{Name: "Schulungsnachweise der Geschäftsführung", Required: true}, {Name: "Schulungsplan", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-005",
			RegulationID: "nis2",
			Title:       "Incident-Response-Prozess etablieren",
			Description: "Etablierung eines Prozesses zur Erkennung, Analyse und Meldung von Sicherheitsvorfällen gemäß den gesetzlichen Meldefristen.",
			LegalBasis:  []LegalReference{{Norm: "Art. 23 NIS2"}, {Norm: "§ 32 BSIG-E"}},
			Category:    CategoryTechnical,
			Responsible: RoleCISO,
			Evidence:    []EvidenceItem{{Name: "Incident-Response-Plan", Required: true}, {Name: "Meldeprozess-Dokumentation", Required: true}, {Name: "Kontaktdaten BSI", Required: true}},
			Priority:    PriorityCritical,
			ISO27001Mapping: []string{"A.16"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-006",
			RegulationID: "nis2",
			Title:       "Business Continuity Management",
			Description: "Maßnahmen zur Aufrechterhaltung des Betriebs, Backup-Management, Notfallwiederherstellung und Krisenmanagement.",
			LegalBasis:  []LegalReference{{Norm: "Art. 21 Abs. 2 lit. c NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 3 BSIG-E"}},
			Category:    CategoryTechnical,
			Responsible: RoleCISO,
			Evidence:    []EvidenceItem{{Name: "BCM-Dokumentation", Required: true}, {Name: "Backup-Konzept", Required: true}, {Name: "Disaster-Recovery-Plan", Required: true}, {Name: "Testprotokolle", Required: true}},
			Priority:    PriorityHigh,
			ISO27001Mapping: []string{"A.17"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-007",
			RegulationID: "nis2",
			Title:       "Lieferketten-Sicherheit",
			Description: "Sicherheit in der Lieferkette, einschließlich sicherheitsbezogener Aspekte der Beziehungen zwischen Einrichtung und direkten Anbietern oder Diensteanbietern.",
			LegalBasis:  []LegalReference{{Norm: "Art. 21 Abs. 2 lit. d NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 4 BSIG-E"}},
			Category:    CategoryOrganizational,
			Responsible: RoleCISO,
			Evidence:    []EvidenceItem{{Name: "Lieferanten-Risikobewertung", Required: true}, {Name: "Sicherheitsanforderungen in Verträgen", Required: true}},
			Priority:    PriorityMedium,
			ISO27001Mapping: []string{"A.15"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-008",
			RegulationID: "nis2",
			Title:       "Schwachstellenmanagement",
			Description: "Umgang mit Schwachstellen und deren Offenlegung, Maßnahmen zur Erkennung und Behebung von Schwachstellen.",
			LegalBasis:  []LegalReference{{Norm: "Art. 21 Abs. 2 lit. e NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 5 BSIG-E"}},
			Category:    CategoryTechnical,
			Responsible: RoleCISO,
			Evidence:    []EvidenceItem{{Name: "Schwachstellen-Management-Prozess", Required: true}, {Name: "Patch-Management-Richtlinie", Required: true}, {Name: "Vulnerability-Scan-Berichte", Required: true}},
			Priority:    PriorityHigh,
			ISO27001Mapping: []string{"A.12.6"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-009",
			RegulationID: "nis2",
			Title:       "Zugangs- und Identitätsmanagement",
			Description: "Konzepte für die Zugangskontrolle und das Management von Anlagen sowie Verwendung von MFA und kontinuierlicher Authentifizierung.",
			LegalBasis:  []LegalReference{{Norm: "Art. 21 Abs. 2 lit. i NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 9 BSIG-E"}},
			Category:    CategoryTechnical,
			Responsible: RoleITLeitung,
			Evidence:    []EvidenceItem{{Name: "Zugangskontroll-Richtlinie", Required: true}, {Name: "MFA-Implementierungsnachweis", Required: true}, {Name: "Identity-Management-Dokumentation", Required: true}},
			Priority:    PriorityHigh,
			ISO27001Mapping: []string{"A.9"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-010",
			RegulationID: "nis2",
			Title:       "Kryptographie und Verschlüsselung",
			Description: "Konzepte und Verfahren für den Einsatz von Kryptographie und gegebenenfalls Verschlüsselung.",
			LegalBasis:  []LegalReference{{Norm: "Art. 21 Abs. 2 lit. h NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 8 BSIG-E"}},
			Category:    CategoryTechnical,
			Responsible: RoleCISO,
			Evidence:    []EvidenceItem{{Name: "Kryptographie-Richtlinie", Required: true}, {Name: "Verschlüsselungskonzept", Required: true}, {Name: "Key-Management-Dokumentation", Required: true}},
			Priority:    PriorityMedium,
			ISO27001Mapping: []string{"A.10"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-011",
			RegulationID: "nis2",
			Title:       "Personalsicherheit",
			Description: "Sicherheit des Personals, Konzepte für die Zugriffskontrolle und das Management von Anlagen.",
			LegalBasis:  []LegalReference{{Norm: "Art. 21 Abs. 2 lit. j NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 10 BSIG-E"}},
			Category:    CategoryOrganizational,
			Responsible: RoleManagement,
			Evidence:    []EvidenceItem{{Name: "Personalsicherheits-Richtlinie", Required: true}, {Name: "Schulungskonzept", Required: true}},
			Priority:    PriorityMedium,
			ISO27001Mapping: []string{"A.7"},
			AppliesWhen: "classification != 'nicht_betroffen'",
		},
		{
			ID:          "NIS2-OBL-012",
			RegulationID: "nis2",
			Title:       "Regelmäßige Audits (besonders wichtige Einrichtungen)",
			Description: "Besonders wichtige Einrichtungen unterliegen regelmäßigen Sicherheitsüberprüfungen durch das BSI.",
			LegalBasis:  []LegalReference{{Norm: "Art. 32 NIS2"}, {Norm: "§ 39 BSIG-E"}},
			Category:    CategoryAudit,
			Responsible: RoleCISO,
			Deadline:    &Deadline{Type: DeadlineRecurring, Interval: "alle 2 Jahre"},
			Evidence:    []EvidenceItem{{Name: "Audit-Berichte", Required: true}, {Name: "Maßnahmenplan aus Audits", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "classification == 'besonders_wichtige_einrichtung'",
		},
	}

	m.controls = []ObligationControl{
		{
			ID:           "NIS2-CTRL-001",
			RegulationID: "nis2",
			Name:         "ISMS implementieren",
			Description:  "Implementierung eines Informationssicherheits-Managementsystems",
			Category:     "Governance",
			WhatToDo:     "Aufbau eines ISMS nach ISO 27001 oder BSI IT-Grundschutz",
			ISO27001Mapping: []string{"4", "5", "6", "7"},
			Priority:     PriorityHigh,
		},
		{
			ID:           "NIS2-CTRL-002",
			RegulationID: "nis2",
			Name:         "Netzwerksegmentierung",
			Description:  "Segmentierung kritischer Netzwerkbereiche",
			Category:     "Technisch",
			WhatToDo:     "Implementierung von VLANs, Firewalls und Mikrosegmentierung für kritische Systeme",
			ISO27001Mapping: []string{"A.13.1"},
			Priority:     PriorityHigh,
		},
		{
			ID:           "NIS2-CTRL-003",
			RegulationID: "nis2",
			Name:         "Security Monitoring",
			Description:  "Kontinuierliche Überwachung der IT-Sicherheit",
			Category:     "Technisch",
			WhatToDo:     "Implementierung von SIEM, Log-Management und Anomalie-Erkennung",
			ISO27001Mapping: []string{"A.12.4"},
			Priority:     PriorityHigh,
		},
		{
			ID:           "NIS2-CTRL-004",
			RegulationID: "nis2",
			Name:         "Awareness-Programm",
			Description:  "Regelmäßige Sicherheitsschulungen für alle Mitarbeiter",
			Category:     "Organisatorisch",
			WhatToDo:     "Durchführung von Phishing-Simulationen, E-Learning und Präsenzschulungen",
			ISO27001Mapping: []string{"A.7.2.2"},
			Priority:     PriorityMedium,
		},
	}

	m.incidentDeadlines = []IncidentDeadline{
		{
			RegulationID: "nis2",
			Phase:        "Frühwarnung",
			Deadline:     "24 Stunden",
			Content:      "Unverzügliche Meldung erheblicher Sicherheitsvorfälle. Angabe ob böswilliger Angriff vermutet und ob grenzüberschreitende Auswirkungen möglich.",
			Recipient:    "BSI",
			LegalBasis:   []LegalReference{{Norm: "§ 32 Abs. 1 BSIG-E"}},
		},
		{
			RegulationID: "nis2",
			Phase:        "Vorfallmeldung",
			Deadline:     "72 Stunden",
			Content:      "Aktualisierung der Frühwarnung. Erste Bewertung des Vorfalls, Schweregrad, Auswirkungen, Kompromittierungsindikatoren (IoCs).",
			Recipient:    "BSI",
			LegalBasis:   []LegalReference{{Norm: "§ 32 Abs. 2 BSIG-E"}},
		},
		{
			RegulationID: "nis2",
			Phase:        "Abschlussbericht",
			Deadline:     "1 Monat",
			Content:      "Ausführliche Beschreibung des Vorfalls, Ursachenanalyse (Root Cause), ergriffene Abhilfemaßnahmen, grenzüberschreitende Auswirkungen.",
			Recipient:    "BSI",
			LegalBasis:   []LegalReference{{Norm: "§ 32 Abs. 3 BSIG-E"}},
		},
	}
}
