/**
 * Control Definitions - Compliance Domains
 *
 * Controls for: TRANSFER, AUDIT, DELETION, INCIDENT
 */

import { Control } from '../types'

// ==========================================
// TRANSFER - Drittlandtransfer Controls
// ==========================================

export const TRANSFER_CONTROLS: Control[] = [
  {
    id: 'VND-TRF-01',
    domain: 'TRANSFER',
    title: {
      de: 'Drittlandtransfer nur mit Rechtsgrundlage',
      en: 'Third country transfer with legal basis',
    },
    description: {
      de: 'Drittlandtransfers erfolgen nur auf Basis von SCC, BCR oder Angemessenheitsbeschluss',
      en: 'Third country transfers only based on SCC, BCR or adequacy decision',
    },
    passCriteria: {
      de: 'SCC oder BCR vertraglich vereinbart ODER Angemessenheitsbeschluss vorhanden',
      en: 'SCC or BCR contractually agreed OR adequacy decision exists',
    },
    requirements: ['Art. 44-49 DSGVO', 'ISO 27001 A.15.1.2'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-TRF-02',
    domain: 'TRANSFER',
    title: {
      de: 'Aktuelle Standardvertragsklauseln',
      en: 'Current Standard Contractual Clauses',
    },
    description: {
      de: 'Bei SCC-Nutzung: Verwendung der aktuellen EU-Kommission-Klauseln (2021)',
      en: 'When using SCC: Current EU Commission clauses (2021) are used',
    },
    passCriteria: {
      de: 'SCC 2021 (Durchführungsbeschluss (EU) 2021/914) verwendet',
      en: 'SCC 2021 (Implementing Decision (EU) 2021/914) used',
    },
    requirements: ['Art. 46 Abs. 2 lit. c DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-TRF-03',
    domain: 'TRANSFER',
    title: {
      de: 'Transfer Impact Assessment (TIA)',
      en: 'Transfer Impact Assessment (TIA)',
    },
    description: {
      de: 'Bei Transfers in Drittländer ohne Angemessenheitsbeschluss ist TIA durchzuführen',
      en: 'TIA required for transfers to third countries without adequacy decision',
    },
    passCriteria: {
      de: 'TIA dokumentiert und bewertet Risiken als akzeptabel',
      en: 'TIA documented and risks assessed as acceptable',
    },
    requirements: ['Schrems II Urteil', 'EDSA Empfehlungen 01/2020'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-TRF-04',
    domain: 'TRANSFER',
    title: {
      de: 'Zusätzliche Schutzmaßnahmen',
      en: 'Supplementary Measures',
    },
    description: {
      de: 'Bei Bedarf sind zusätzliche technische/organisatorische Maßnahmen implementiert',
      en: 'Supplementary technical/organizational measures implemented where needed',
    },
    passCriteria: {
      de: 'Ergänzende Maßnahmen dokumentiert (Verschlüsselung, Pseudonymisierung, etc.)',
      en: 'Supplementary measures documented (encryption, pseudonymization, etc.)',
    },
    requirements: ['EDSA Empfehlungen 01/2020'],
    isRequired: false,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-TRF-05',
    domain: 'TRANSFER',
    title: {
      de: 'Überwachung Angemessenheitsbeschlüsse',
      en: 'Monitoring Adequacy Decisions',
    },
    description: {
      de: 'Änderungen bei Angemessenheitsbeschlüssen werden überwacht',
      en: 'Changes to adequacy decisions are monitored',
    },
    passCriteria: {
      de: 'Prozess zur Überwachung und Reaktion auf Änderungen etabliert',
      en: 'Process for monitoring and responding to changes established',
    },
    requirements: ['Art. 45 DSGVO'],
    isRequired: false,
    defaultFrequency: 'QUARTERLY',
  },
]

// ==========================================
// AUDIT - Auditrechte Controls
// ==========================================

export const AUDIT_CONTROLS: Control[] = [
  {
    id: 'VND-AUD-01',
    domain: 'AUDIT',
    title: {
      de: 'Auditrecht vertraglich vereinbart',
      en: 'Audit right contractually agreed',
    },
    description: {
      de: 'Vertrag enthält wirksames Auditrecht ohne unangemessene Einschränkungen',
      en: 'Contract contains effective audit right without unreasonable restrictions',
    },
    passCriteria: {
      de: 'Auditrecht im AVV enthalten, max. 30 Tage Vorlaufzeit, keine Ausschlussklausel',
      en: 'Audit right in DPA, max 30 days notice, no exclusion clause',
    },
    requirements: ['Art. 28 Abs. 3 lit. h DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-AUD-02',
    domain: 'AUDIT',
    title: {
      de: 'Vor-Ort-Inspektionen möglich',
      en: 'On-site inspections possible',
    },
    description: {
      de: 'Vertrag erlaubt Vor-Ort-Inspektionen bei dem Auftragsverarbeiter',
      en: 'Contract allows on-site inspections at the processor',
    },
    passCriteria: {
      de: 'Vor-Ort-Audit explizit erlaubt, Zugang zu relevanten Bereichen',
      en: 'On-site audit explicitly allowed, access to relevant areas',
    },
    requirements: ['Art. 28 Abs. 3 lit. h DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-AUD-03',
    domain: 'AUDIT',
    title: {
      de: 'Aktuelle Zertifizierungen',
      en: 'Current Certifications',
    },
    description: {
      de: 'Relevante Sicherheitszertifizierungen sind aktuell und gültig',
      en: 'Relevant security certifications are current and valid',
    },
    passCriteria: {
      de: 'ISO 27001, SOC 2 oder vergleichbar, nicht abgelaufen',
      en: 'ISO 27001, SOC 2 or equivalent, not expired',
    },
    requirements: ['Art. 32 DSGVO', 'ISO 27001 A.15.1.1'],
    isRequired: false,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-AUD-04',
    domain: 'AUDIT',
    title: {
      de: 'Letzte Prüfung durchgeführt',
      en: 'Last review conducted',
    },
    description: {
      de: 'Vendor wurde innerhalb des Review-Zyklus geprüft',
      en: 'Vendor was reviewed within the review cycle',
    },
    passCriteria: {
      de: 'Dokumentierte Prüfung innerhalb des festgelegten Intervalls',
      en: 'Documented review within the defined interval',
    },
    requirements: ['Art. 28 Abs. 3 lit. h DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-AUD-05',
    domain: 'AUDIT',
    title: {
      de: 'Prüfberichte verfügbar',
      en: 'Audit reports available',
    },
    description: {
      de: 'Aktuelle Prüfberichte (SOC 2, Penetrationstest, etc.) liegen vor',
      en: 'Current audit reports (SOC 2, penetration test, etc.) are available',
    },
    passCriteria: {
      de: 'Prüfberichte nicht älter als 12 Monate',
      en: 'Audit reports not older than 12 months',
    },
    requirements: ['ISO 27001 A.18.2.1'],
    isRequired: false,
    defaultFrequency: 'ANNUAL',
  },
]

// ==========================================
// DELETION - Löschung Controls
// ==========================================

export const DELETION_CONTROLS: Control[] = [
  {
    id: 'VND-DEL-01',
    domain: 'DELETION',
    title: {
      de: 'Löschung/Rückgabe nach Vertragsende',
      en: 'Deletion/return after contract end',
    },
    description: {
      de: 'Klare Regelung zur Löschung oder Rückgabe aller Daten nach Vertragsende',
      en: 'Clear provision for deletion or return of all data after contract end',
    },
    passCriteria: {
      de: 'Löschfrist max. 30 Tage, Löschbestätigung vorgesehen',
      en: 'Deletion within max 30 days, deletion confirmation provided',
    },
    requirements: ['Art. 28 Abs. 3 lit. g DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-DEL-02',
    domain: 'DELETION',
    title: {
      de: 'Löschbestätigung',
      en: 'Deletion confirmation',
    },
    description: {
      de: 'Schriftliche Bestätigung der vollständigen Datenlöschung',
      en: 'Written confirmation of complete data deletion',
    },
    passCriteria: {
      de: 'Löschbestätigung vertraglich vereinbart und einforderbar',
      en: 'Deletion confirmation contractually agreed and enforceable',
    },
    requirements: ['Art. 28 Abs. 3 lit. g DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-DEL-03',
    domain: 'DELETION',
    title: {
      de: 'Löschung bei Unterauftragnehmern',
      en: 'Deletion at sub-processors',
    },
    description: {
      de: 'Löschpflicht erstreckt sich auf alle Unterauftragnehmer',
      en: 'Deletion obligation extends to all sub-processors',
    },
    passCriteria: {
      de: 'Weitergabe der Löschpflicht an Unterauftragnehmer vertraglich vereinbart',
      en: 'Transfer of deletion obligation to sub-processors contractually agreed',
    },
    requirements: ['Art. 28 Abs. 3 lit. g, d DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-DEL-04',
    domain: 'DELETION',
    title: {
      de: 'Backup-Löschung',
      en: 'Backup deletion',
    },
    description: {
      de: 'Daten werden auch aus Backups gelöscht',
      en: 'Data is also deleted from backups',
    },
    passCriteria: {
      de: 'Backup-Löschung geregelt, max. Aufbewahrungsfrist für Backups definiert',
      en: 'Backup deletion regulated, max retention period for backups defined',
    },
    requirements: ['Art. 28 Abs. 3 lit. g DSGVO'],
    isRequired: false,
    defaultFrequency: 'ANNUAL',
  },
]

// ==========================================
// INCIDENT - Incident Response Controls
// ==========================================

export const INCIDENT_CONTROLS: Control[] = [
  {
    id: 'VND-INC-01',
    domain: 'INCIDENT',
    title: {
      de: 'Meldepflicht bei Datenpannen',
      en: 'Data breach notification obligation',
    },
    description: {
      de: 'Unverzügliche Meldung von Datenschutzverletzungen',
      en: 'Immediate notification of data protection violations',
    },
    passCriteria: {
      de: 'Meldepflicht vereinbart, Frist max. 24-48h, Mindestinhalte definiert',
      en: 'Notification obligation agreed, deadline max 24-48h, minimum content defined',
    },
    requirements: ['Art. 33 Abs. 2 DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-INC-02',
    domain: 'INCIDENT',
    title: {
      de: 'Incident Response Plan',
      en: 'Incident Response Plan',
    },
    description: {
      de: 'Vendor hat dokumentierten Incident Response Plan',
      en: 'Vendor has documented incident response plan',
    },
    passCriteria: {
      de: 'Incident Response Plan liegt vor und wurde getestet',
      en: 'Incident response plan exists and has been tested',
    },
    requirements: ['ISO 27001 A.16.1'],
    isRequired: false,
    defaultFrequency: 'ANNUAL',
  },
  {
    id: 'VND-INC-03',
    domain: 'INCIDENT',
    title: {
      de: 'Kontaktstelle für Incidents',
      en: 'Contact point for incidents',
    },
    description: {
      de: 'Definierte Kontaktstelle für Datenschutzvorfälle',
      en: 'Defined contact point for data protection incidents',
    },
    passCriteria: {
      de: 'Kontaktdaten für Incident-Meldungen bekannt und aktuell',
      en: 'Contact details for incident reporting known and current',
    },
    requirements: ['Art. 33 Abs. 2 DSGVO'],
    isRequired: true,
    defaultFrequency: 'QUARTERLY',
  },
  {
    id: 'VND-INC-04',
    domain: 'INCIDENT',
    title: {
      de: 'Unterstützung bei Incident-Dokumentation',
      en: 'Support with incident documentation',
    },
    description: {
      de: 'Vendor unterstützt bei der Dokumentation von Vorfällen',
      en: 'Vendor supports documentation of incidents',
    },
    passCriteria: {
      de: 'Unterstützungspflicht bei Dokumentation vertraglich vereinbart',
      en: 'Support obligation for documentation contractually agreed',
    },
    requirements: ['Art. 33 Abs. 5 DSGVO'],
    isRequired: true,
    defaultFrequency: 'ANNUAL',
  },
]
