-- Migration 007 — Synchronisation des clients WooCommerce depuis les sites marchands
-- À exécuter UNE FOIS via phpMyAdmin > base 'monitoring' > onglet SQL.

-- 1) Enrichir la table clients avec toutes les colonnes WC + traçage de l'origine
ALTER TABLE clients
    ADD COLUMN source_site_id INT UNSIGNED NULL COMMENT 'Site marchand source (NULL = client créé manuellement sur la plateforme)' AFTER id,
    ADD COLUMN wc_customer_id INT UNSIGNED NULL COMMENT 'ID WC du client sur le site marchand source' AFTER source_site_id,
    ADD COLUMN billing_address_1 VARCHAR(255) NULL AFTER phone,
    ADD COLUMN billing_address_2 VARCHAR(255) NULL AFTER billing_address_1,
    ADD COLUMN billing_postcode VARCHAR(20) NULL AFTER billing_address_2,
    ADD COLUMN billing_city VARCHAR(120) NULL AFTER billing_postcode,
    ADD COLUMN billing_state VARCHAR(80) NULL AFTER billing_city,
    ADD COLUMN billing_country VARCHAR(2) NULL COMMENT 'Code ISO 2 lettres' AFTER billing_state,
    ADD COLUMN project_url VARCHAR(255) NULL COMMENT 'Champ custom WC : nom du projet ou URL du site du client' AFTER billing_country,
    ADD COLUMN last_synced_at DATETIME NULL AFTER project_url,
    -- Index unique : un même client WC ne peut apparaître qu'une fois par site source
    ADD UNIQUE KEY uniq_source_wc_customer (source_site_id, wc_customer_id),
    ADD KEY idx_email_source (email, source_site_id),
    ADD CONSTRAINT fk_clients_source FOREIGN KEY (source_site_id) REFERENCES sites(id) ON DELETE SET NULL;

-- 2) Lier subscriptions à clients pour faciliter le matching email→client
ALTER TABLE subscriptions
    ADD COLUMN client_id INT UNSIGNED NULL AFTER source_site_id,
    ADD KEY idx_client (client_id),
    ADD CONSTRAINT fk_sub_client FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE SET NULL;

-- 3) Mettre à jour subscriptions.client_id pour les abos déjà existants en BDD
-- (matching par email + source_site_id : un abo de limbus.fr doit pointer vers
--  le client de limbus.fr qui a le même email)
-- À exécuter APRÈS le premier push depuis le plugin Subscriptions Sync mis à jour.
-- UPDATE subscriptions sub
-- INNER JOIN clients c ON c.email = sub.customer_email AND c.source_site_id = sub.source_site_id
-- SET sub.client_id = c.id
-- WHERE sub.client_id IS NULL;
