-- ============================================================
-- Money+Xfer — Migration v1.9 — Dossiers KYC Portail Client
-- À exécuter sur une base existante (migration cumulative)
-- ============================================================

USE akuxfer;

-- ============================================================
-- TABLE : kyc_dossiers  (soumis depuis le portail client)
-- ============================================================
CREATE TABLE IF NOT EXISTS kyc_dossiers (
    id                    INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

    -- Lien vers le portail client
    account_id            INT UNSIGNED  DEFAULT NULL,   -- ID dans client_accounts (portail)
    portal_email          VARCHAR(160)  DEFAULT NULL,   -- email de rapprochement

    -- Lien éventuel vers un client akuxfer existant
    client_id             INT UNSIGNED  DEFAULT NULL,
    FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE SET NULL,

    -- Identité
    civility              VARCHAR(10)   DEFAULT NULL,
    first_name            VARCHAR(80)   NOT NULL,
    last_name             VARCHAR(80)   NOT NULL,
    maiden_name           VARCHAR(80)   DEFAULT NULL,
    birth_date            DATE          DEFAULT NULL,
    birth_city            VARCHAR(80)   DEFAULT NULL,
    birth_country         VARCHAR(80)   DEFAULT NULL,
    nationality           VARCHAR(60)   DEFAULT NULL,
    second_nationality    VARCHAR(60)   DEFAULT NULL,

    -- Adresse
    address_line1         VARCHAR(200)  DEFAULT NULL,
    address_line2         VARCHAR(200)  DEFAULT NULL,
    address_city          VARCHAR(80)   DEFAULT NULL,
    address_postal        VARCHAR(20)   DEFAULT NULL,
    address_country       VARCHAR(80)   DEFAULT NULL,
    residence_since       DATE          DEFAULT NULL,

    -- Pièce d'identité
    id_type               VARCHAR(30)   DEFAULT NULL,
    id_number             VARCHAR(80)   DEFAULT NULL,
    id_issued_by          VARCHAR(100)  DEFAULT NULL,
    id_issued_date        DATE          DEFAULT NULL,
    id_expiry_date        DATE          DEFAULT NULL,

    -- Situation professionnelle
    employment_status     VARCHAR(60)   DEFAULT NULL,
    profession            VARCHAR(100)  DEFAULT NULL,
    employer_name         VARCHAR(120)  DEFAULT NULL,
    employer_address      VARCHAR(200)  DEFAULT NULL,
    monthly_income_range  VARCHAR(60)   DEFAULT NULL,
    income_source         VARCHAR(100)  DEFAULT NULL,

    -- PPE / Conformité
    is_pep                TINYINT(1)    NOT NULL DEFAULT 0,
    pep_details           TEXT          DEFAULT NULL,
    is_pep_family         TINYINT(1)    NOT NULL DEFAULT 0,
    pep_family_details    TEXT          DEFAULT NULL,

    -- Objectif des transferts
    transfer_purpose      VARCHAR(255)  DEFAULT NULL,
    transfer_frequency    VARCHAR(60)   DEFAULT NULL,
    expected_monthly_vol  VARCHAR(60)   DEFAULT NULL,
    destination_countries VARCHAR(255)  DEFAULT NULL,

    -- Documents uploadés (chemins relatifs depuis portail/public/uploads/kyc/)
    doc_id_recto          VARCHAR(255)  DEFAULT NULL,
    doc_id_verso          VARCHAR(255)  DEFAULT NULL,
    doc_selfie            VARCHAR(255)  DEFAULT NULL,
    doc_domicile          VARCHAR(255)  DEFAULT NULL,
    doc_revenus           VARCHAR(255)  DEFAULT NULL,

    -- Consentements
    consent_data          TINYINT(1)    NOT NULL DEFAULT 0,
    consent_aml           TINYINT(1)    NOT NULL DEFAULT 0,
    consent_date          DATETIME      DEFAULT NULL,

    -- Statut du dossier
    status                ENUM('soumis','en_cours','approuve','rejete','complement') NOT NULL DEFAULT 'soumis',
    reject_reason         TEXT          DEFAULT NULL,
    notes_agent           TEXT          DEFAULT NULL,
    risk_level            ENUM('faible','moyen','eleve') DEFAULT 'faible',
    risk_notes            TEXT          DEFAULT NULL,

    -- Traitement
    reviewed_by           INT UNSIGNED  DEFAULT NULL,
    reviewed_at           DATETIME      DEFAULT NULL,
    FOREIGN KEY (reviewed_by) REFERENCES users(id) ON DELETE SET NULL,

    created_at            DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at            DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    INDEX idx_status(status),
    INDEX idx_account(account_id),
    INDEX idx_email(portal_email)
) ENGINE=InnoDB;

-- ============================================================
-- Permissions pour les dossiers portail
-- ============================================================
INSERT IGNORE INTO permissions (module, action, label) VALUES
('kyc_dossiers', 'view',    'Voir les dossiers KYC portail'),
('kyc_dossiers', 'review',  'Traiter les dossiers KYC portail'),
('kyc_dossiers', 'approve', 'Approuver / Rejeter un dossier KYC');

-- Super Admin & Admin : tout
INSERT IGNORE INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id FROM roles r, permissions p
WHERE r.id IN (1,2) AND p.module = 'kyc_dossiers';

-- Manager : view + review
INSERT IGNORE INTO role_permissions (role_id, permission_id)
SELECT 3, id FROM permissions WHERE module='kyc_dossiers' AND action IN ('view','review');
