package ucca

// ============================================================================
// Control Definitions
// ============================================================================

var ControlLibrary = map[string]RequiredControl{
	"C-CONSENT": {
		ID:          "C-CONSENT",
		Title:       "Einwilligungsmanagement",
		Description: "Implementieren Sie ein System zur Einholung und Verwaltung von Einwilligungen.",
		Severity:    SeverityWARN,
		Category:    "organizational",
		GDPRRef:     "Art. 7 DSGVO",
	},
	"C-PII-DETECT": {
		ID:          "C-PII-DETECT",
		Title:       "PII-Erkennung",
		Description: "Implementieren Sie automatische Erkennung personenbezogener Daten.",
		Severity:    SeverityWARN,
		Category:    "technical",
		GDPRRef:     "Art. 32 DSGVO",
	},
	"C-ANONYMIZE": {
		ID:          "C-ANONYMIZE",
		Title:       "Anonymisierung/Pseudonymisierung",
		Description: "Implementieren Sie Anonymisierung oder Pseudonymisierung vor der Verarbeitung.",
		Severity:    SeverityWARN,
		Category:    "technical",
		GDPRRef:     "Art. 32 DSGVO",
	},
	"C-ACCESS-CONTROL": {
		ID:          "C-ACCESS-CONTROL",
		Title:       "Zugriffskontrollen",
		Description: "Implementieren Sie rollenbasierte Zugriffskontrollen.",
		Severity:    SeverityWARN,
		Category:    "technical",
		GDPRRef:     "Art. 32 DSGVO",
	},
	"C-AUDIT-LOG": {
		ID:          "C-AUDIT-LOG",
		Title:       "Audit-Logging",
		Description: "Protokollieren Sie alle Zugriffe und Verarbeitungen.",
		Severity:    SeverityINFO,
		Category:    "technical",
		GDPRRef:     "Art. 5(2) DSGVO",
	},
	"C-RETENTION": {
		ID:          "C-RETENTION",
		Title:       "Aufbewahrungsfristen",
		Description: "Definieren und implementieren Sie automatische Löschfristen.",
		Severity:    SeverityWARN,
		Category:    "organizational",
		GDPRRef:     "Art. 5(1)(e) DSGVO",
	},
	"C-HITL": {
		ID:          "C-HITL",
		Title:       "Human-in-the-Loop",
		Description: "Implementieren Sie menschliche Überprüfung für KI-Entscheidungen.",
		Severity:    SeverityBLOCK,
		Category:    "organizational",
		GDPRRef:     "Art. 22 DSGVO",
	},
	"C-TRANSPARENCY": {
		ID:          "C-TRANSPARENCY",
		Title:       "Transparenz",
		Description: "Informieren Sie Betroffene über KI-Verarbeitung.",
		Severity:    SeverityWARN,
		Category:    "organizational",
		GDPRRef:     "Art. 13/14 DSGVO",
	},
	"C-DSR-PROCESS": {
		ID:          "C-DSR-PROCESS",
		Title:       "Betroffenenrechte-Prozess",
		Description: "Implementieren Sie Prozesse für Auskunft, Löschung, Berichtigung.",
		Severity:    SeverityWARN,
		Category:    "organizational",
		GDPRRef:     "Art. 15-22 DSGVO",
	},
	"C-DSFA": {
		ID:          "C-DSFA",
		Title:       "DSFA durchführen",
		Description: "Führen Sie eine Datenschutz-Folgenabschätzung durch.",
		Severity:    SeverityWARN,
		Category:    "organizational",
		GDPRRef:     "Art. 35 DSGVO",
	},
	"C-SCC": {
		ID:          "C-SCC",
		Title:       "Standardvertragsklauseln",
		Description: "Schließen Sie EU-Standardvertragsklauseln für Drittlandtransfers ab.",
		Severity:    SeverityBLOCK,
		Category:    "legal",
		GDPRRef:     "Art. 46 DSGVO",
	},
	"C-ENCRYPTION": {
		ID:          "C-ENCRYPTION",
		Title:       "Verschlüsselung",
		Description: "Verschlüsseln Sie Daten in Übertragung und Speicherung.",
		Severity:    SeverityWARN,
		Category:    "technical",
		GDPRRef:     "Art. 32 DSGVO",
	},
	"C-MINOR-CONSENT": {
		ID:          "C-MINOR-CONSENT",
		Title:       "Elterneinwilligung",
		Description: "Holen Sie Einwilligung der Erziehungsberechtigten ein.",
		Severity:    SeverityBLOCK,
		Category:    "organizational",
		GDPRRef:     "Art. 8 DSGVO",
	},
	"C-ART9-BASIS": {
		ID:          "C-ART9-BASIS",
		Title:       "Art. 9 Rechtsgrundlage",
		Description: "Dokumentieren Sie die Rechtsgrundlage für besondere Datenkategorien.",
		Severity:    SeverityBLOCK,
		Category:    "legal",
		GDPRRef:     "Art. 9 DSGVO",
	},
}

// GetControlByID returns a control by its ID
func GetControlByID(id string) *RequiredControl {
	if ctrl, exists := ControlLibrary[id]; exists {
		return &ctrl
	}
	return nil
}
