-- ============================================================================
-- V3.7 — Données de test : Membres et Cotisations
-- Tables cibles :
--   utilisateurs         -> entité JPA Membre
--   organisations        -> entité JPA Organisation (V1.2)
--   membres_organisations -> jointure membre <> organisation
--   cotisations          -> entité JPA Cotisation
-- ============================================================================

-- ─────────────────────────────────────────────────────────────────────────────
-- 0.  Nettoyage (idempotent)
-- ─────────────────────────────────────────────────────────────────────────────

DELETE FROM cotisations
WHERE membre_id IN (
    SELECT id FROM utilisateurs
    WHERE email IN (
        'membre.mukefi@unionflow.test',
        'admin.mukefi@unionflow.test',
        'membre.meska@unionflow.test'
    )
);

DELETE FROM membres_organisations
WHERE utilisateur_id IN (
    SELECT id FROM utilisateurs
    WHERE email IN (
        'membre.mukefi@unionflow.test',
        'admin.mukefi@unionflow.test',
        'membre.meska@unionflow.test'
    )
);

DELETE FROM utilisateurs
WHERE email IN (
    'membre.mukefi@unionflow.test',
    'admin.mukefi@unionflow.test',
    'membre.meska@unionflow.test'
);

-- ─────────────────────────────────────────────────────────────────────────────
-- 0b. S'assurer que MUKEFI et MESKA existent dans "organisations" (table JPA).
--     Si V3.6 les a déjà insérées, ON CONFLICT (email) DO NOTHING évite le doublon.
-- ─────────────────────────────────────────────────────────────────────────────

INSERT INTO organisations (
    id, nom, nom_court, type_organisation, statut, email, telephone,
    site_web, date_fondation, numero_enregistrement, devise,
    budget_annuel, cotisation_obligatoire, montant_cotisation_annuelle,
    objectifs, activites_principales, partenaires, latitude, longitude,
    date_creation, date_modification, cree_par, modifie_par, version, actif,
    accepte_nouveaux_membres, est_organisation_racine, niveau_hierarchique,
    nombre_membres, nombre_administrateurs, organisation_publique
) VALUES (
    gen_random_uuid(),
    'Mutuelle d''Épargne et de Crédit des Fonctionnaires et Indépendants',
    'MUKEFI', 'ASSOCIATION', 'ACTIVE',
    'contact@mukefi.org', '+225 07 00 00 00 01', 'https://mukefi.org',
    '2020-01-15', 'MUT-CI-2020-001', 'XOF',
    500000000, true, 50000,
    'Favoriser l''épargne et l''accès au crédit pour les membres',
    'Épargne, crédit, micro-crédit, formation financière',
    'BCEAO', 5.3364, -4.0267,
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true,
    true, true, 0, 0, 0, true
) ON CONFLICT (email) DO NOTHING;

INSERT INTO organisations (
    id, nom, nom_court, type_organisation, statut, email, telephone,
    site_web, date_fondation, numero_enregistrement, devise,
    budget_annuel, cotisation_obligatoire, montant_cotisation_annuelle,
    objectifs, activites_principales, partenaires, latitude, longitude,
    date_creation, date_modification, cree_par, modifie_par, version, actif,
    accepte_nouveaux_membres, est_organisation_racine, niveau_hierarchique,
    nombre_membres, nombre_administrateurs, organisation_publique
) VALUES (
    gen_random_uuid(),
    'Mouvement d''Entraide et de Solidarité de Koumassi et Adjamé',
    'MESKA', 'ASSOCIATION', 'ACTIVE',
    'contact@meska.org', '+225 07 00 00 00 02', 'https://meska.org',
    '2018-06-20', 'ASSO-CI-2018-045', 'XOF',
    25000000, true, 25000,
    'Promouvoir la solidarité et l''entraide entre les membres des communes de Koumassi et Adjamé',
    'Aide sociale, événements communautaires, formations, projets collectifs',
    'Mairie de Koumassi, Mairie d''Adjamé', 5.2931, -3.9468,
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true,
    true, true, 0, 0, 0, true
) ON CONFLICT (email) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────
-- 1.  MEMBRE : membre.mukefi@unionflow.test  (MUKEFI)
-- ─────────────────────────────────────────────────────────────────────────────

INSERT INTO utilisateurs (
    id, numero_membre, prenom, nom, email, telephone, date_naissance,
    nationalite, profession, statut_compte,
    date_creation, date_modification, cree_par, modifie_par, version, actif
) VALUES (
    gen_random_uuid(), 'MBR-MUKEFI-001', 'Membre', 'MUKEFI',
    'membre.mukefi@unionflow.test', '+22507000101', '1985-06-15',
    'Ivoirien', 'Fonctionnaire', 'ACTIF',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true
);

-- ─────────────────────────────────────────────────────────────────────────────
-- 2.  MEMBRE : admin.mukefi@unionflow.test  (admin MUKEFI)
-- ─────────────────────────────────────────────────────────────────────────────

INSERT INTO utilisateurs (
    id, numero_membre, prenom, nom, email, telephone, date_naissance,
    nationalite, profession, statut_compte,
    date_creation, date_modification, cree_par, modifie_par, version, actif
) VALUES (
    gen_random_uuid(), 'MBR-MUKEFI-ADMIN', 'Admin', 'MUKEFI',
    'admin.mukefi@unionflow.test', '+22507000102', '1978-04-22',
    'Ivoirien', 'Administrateur', 'ACTIF',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true
);

-- ─────────────────────────────────────────────────────────────────────────────
-- 3.  MEMBRE : membre.meska@unionflow.test  (MESKA)
-- ─────────────────────────────────────────────────────────────────────────────

INSERT INTO utilisateurs (
    id, numero_membre, prenom, nom, email, telephone, date_naissance,
    nationalite, profession, statut_compte,
    date_creation, date_modification, cree_par, modifie_par, version, actif
) VALUES (
    gen_random_uuid(), 'MBR-MESKA-001', 'Membre', 'MESKA',
    'membre.meska@unionflow.test', '+22507000201', '1990-11-30',
    'Ivoirienne', 'Commercante', 'ACTIF',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true
);

-- ─────────────────────────────────────────────────────────────────────────────
-- 4.  RATTACHEMENTS membres_organisations
-- ─────────────────────────────────────────────────────────────────────────────

INSERT INTO membres_organisations (
    id, utilisateur_id, organisation_id, statut_membre, date_adhesion,
    date_creation, date_modification, cree_par, modifie_par, version, actif
) VALUES (
    gen_random_uuid(),
    (SELECT id FROM utilisateurs WHERE email = 'membre.mukefi@unionflow.test'),
    (SELECT id FROM organisations WHERE nom_court = 'MUKEFI' LIMIT 1),
    'ACTIF', '2020-03-01',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true
);

INSERT INTO membres_organisations (
    id, utilisateur_id, organisation_id, statut_membre, date_adhesion,
    date_creation, date_modification, cree_par, modifie_par, version, actif
) VALUES (
    gen_random_uuid(),
    (SELECT id FROM utilisateurs WHERE email = 'admin.mukefi@unionflow.test'),
    (SELECT id FROM organisations WHERE nom_court = 'MUKEFI' LIMIT 1),
    'ACTIF', '2020-01-15',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true
);

INSERT INTO membres_organisations (
    id, utilisateur_id, organisation_id, statut_membre, date_adhesion,
    date_creation, date_modification, cree_par, modifie_par, version, actif
) VALUES (
    gen_random_uuid(),
    (SELECT id FROM utilisateurs WHERE email = 'membre.meska@unionflow.test'),
    (SELECT id FROM organisations WHERE nom_court = 'MESKA' LIMIT 1),
    'ACTIF', '2018-09-01',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true
);

-- ─────────────────────────────────────────────────────────────────────────────
-- 5.  COTISATIONS pour membre.mukefi@unionflow.test
-- ─────────────────────────────────────────────────────────────────────────────

-- 2023 – PAYÉE
INSERT INTO cotisations (
    id, numero_reference, membre_id, organisation_id,
    type_cotisation, libelle, montant_du, montant_paye, code_devise,
    statut, date_echeance, date_paiement, annee, periode,
    date_creation, date_modification, cree_par, modifie_par, version, actif, nombre_rappels, recurrente
) VALUES (
    gen_random_uuid(), 'COT-MUKEFI-2023-001',
    (SELECT id FROM utilisateurs WHERE email = 'membre.mukefi@unionflow.test'),
    (SELECT id FROM organisations WHERE nom_court = 'MUKEFI' LIMIT 1),
    'ANNUELLE', 'Cotisation annuelle 2023', 50000, 50000, 'XOF',
    'PAYEE', '2023-12-31', '2023-03-15 10:00:00', 2023, '2023',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true, 0, true
);

-- 2024 – PAYÉE
INSERT INTO cotisations (
    id, numero_reference, membre_id, organisation_id,
    type_cotisation, libelle, montant_du, montant_paye, code_devise,
    statut, date_echeance, date_paiement, annee, periode,
    date_creation, date_modification, cree_par, modifie_par, version, actif, nombre_rappels, recurrente
) VALUES (
    gen_random_uuid(), 'COT-MUKEFI-2024-001',
    (SELECT id FROM utilisateurs WHERE email = 'membre.mukefi@unionflow.test'),
    (SELECT id FROM organisations WHERE nom_court = 'MUKEFI' LIMIT 1),
    'ANNUELLE', 'Cotisation annuelle 2024', 50000, 50000, 'XOF',
    'PAYEE', '2024-12-31', '2024-02-20 09:30:00', 2024, '2024',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true, 0, true
);

-- 2025 – EN ATTENTE
INSERT INTO cotisations (
    id, numero_reference, membre_id, organisation_id,
    type_cotisation, libelle, montant_du, montant_paye, code_devise,
    statut, date_echeance, annee, periode,
    date_creation, date_modification, cree_par, modifie_par, version, actif, nombre_rappels, recurrente
) VALUES (
    gen_random_uuid(), 'COT-MUKEFI-2025-001',
    (SELECT id FROM utilisateurs WHERE email = 'membre.mukefi@unionflow.test'),
    (SELECT id FROM organisations WHERE nom_court = 'MUKEFI' LIMIT 1),
    'ANNUELLE', 'Cotisation annuelle 2025', 50000, 0, 'XOF',
    'EN_ATTENTE', '2025-12-31', 2025, '2025',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true, 0, true
);

-- ─────────────────────────────────────────────────────────────────────────────
-- 6.  COTISATION pour membre.meska@unionflow.test
-- ─────────────────────────────────────────────────────────────────────────────

INSERT INTO cotisations (
    id, numero_reference, membre_id, organisation_id,
    type_cotisation, libelle, montant_du, montant_paye, code_devise,
    statut, date_echeance, date_paiement, annee, periode,
    date_creation, date_modification, cree_par, modifie_par, version, actif, nombre_rappels, recurrente
) VALUES (
    gen_random_uuid(), 'COT-MESKA-2024-001',
    (SELECT id FROM utilisateurs WHERE email = 'membre.meska@unionflow.test'),
    (SELECT id FROM organisations WHERE nom_court = 'MESKA' LIMIT 1),
    'ANNUELLE', 'Cotisation annuelle 2024', 25000, 25000, 'XOF',
    'PAYEE', '2024-12-31', '2024-01-10 14:00:00', 2024, '2024',
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'system', 'system', 0, true, 0, true
);
