-- ===========================================
-- API Centralisee Althea — Donnees initiales
-- ===========================================
-- A executer apres schema.sql
-- Les api_key et api_secret sont des exemples
-- GENERER DE NOUVELLES CLES EN PRODUCTION !
-- ===========================================

-- -------------------------------------------
-- Applications enregistrees
-- -------------------------------------------

INSERT INTO apps (slug, name, api_key, api_secret, base_url) VALUES
('ecole',   'Ecole Althea',         'CHANGE_ME_ecole_api_key_64chars_0000000000000000000000000000',   'CHANGE_ME_ecole_api_secret_64chars_000000000000000000000000000', 'https://ecole.altheaprovence.com'),
('qaliopi', 'QALIOPI ALTHEA',       'CHANGE_ME_qaliopi_api_key_64chars_00000000000000000000000000',  'CHANGE_ME_qaliopi_api_secret_64chars_0000000000000000000000000', 'https://gestion.altheaprovence.com'),
('tableau', 'Tableau Joyeux',       'CHANGE_ME_tableau_api_key_64chars_00000000000000000000000000',  'CHANGE_ME_tableau_api_secret_64chars_0000000000000000000000000', 'https://manager.altheaprovence.com')
;

-- -------------------------------------------
-- Types d'evenements V1
-- -------------------------------------------

-- Ecole Althea (source) — 12 event types
INSERT INTO event_types (slug, description, source_app_id) VALUES
('inscription.created',       'Nouvelle inscription confirmee',                        (SELECT id FROM apps WHERE slug = 'ecole')),
('inscription.updated',       'Inscription ou infos eleve mises a jour',               (SELECT id FROM apps WHERE slug = 'ecole')),
('inscription.cancelled',     'Inscription annulee',                                   (SELECT id FROM apps WHERE slug = 'ecole')),
('paiement.received',         'Paiement ou echeance recu (Stripe)',                    (SELECT id FROM apps WHERE slug = 'ecole')),
('paiement.failed',           'Echec de paiement (Stripe)',                            (SELECT id FROM apps WHERE slug = 'ecole')),
('questionnaire.completed',   'Questionnaire Qualiopi complete par un eleve',          (SELECT id FROM apps WHERE slug = 'ecole')),
('contrat.signed',            'Contrat signe via SignRequest',                         (SELECT id FROM apps WHERE slug = 'ecole')),
('contrat.declined',          'Contrat refuse par le signataire',                      (SELECT id FROM apps WHERE slug = 'ecole')),
('formation.updated',         'Formation mise a jour (prix, duree, modules, statut)',  (SELECT id FROM apps WHERE slug = 'ecole')),
('reclamation.created',       'Reclamation qualite identifiee (indicateur 31 Qualiopi)', (SELECT id FROM apps WHERE slug = 'ecole')),
('reclamation.resolved',      'Reclamation qualite resolue',                           (SELECT id FROM apps WHERE slug = 'ecole')),
('user.created',              'Nouveau compte utilisateur cree',                       (SELECT id FROM apps WHERE slug = 'ecole'))
;

-- QALIOPI (source) — 4 event types
INSERT INTO event_types (slug, description, source_app_id) VALUES
('document.status_changed',   'Statut document change dans le suivi QALIOPI',         (SELECT id FROM apps WHERE slug = 'qaliopi')),
('paiement.retard_detected',  'Retard ou probleme de paiement detecte',               (SELECT id FROM apps WHERE slug = 'qaliopi')),
('formation.completion',      'Avancement Teachizy atteint 100%',                     (SELECT id FROM apps WHERE slug = 'qaliopi')),
('inscription.archived',      'Commande archivee dans le dashboard QALIOPI',          (SELECT id FROM apps WHERE slug = 'qaliopi'))
;

-- Tableau Joyeux (source) — 1 event type
INSERT INTO event_types (slug, description, source_app_id) VALUES
('ticket.status_changed',     'Ticket interne change de statut',                      (SELECT id FROM apps WHERE slug = 'tableau'))
;

-- Toutes apps (demandes inter-apps) — source generique
-- ticket.create_request peut etre emis par n'importe quelle app
-- On enregistre 3 variantes (une par source possible)
INSERT INTO event_types (slug, description, source_app_id) VALUES
('ticket.create_request',     'Demande de creation de ticket dans Tableau Joyeux',    (SELECT id FROM apps WHERE slug = 'ecole'))
;

-- -------------------------------------------
-- Abonnements initiaux
-- -------------------------------------------

-- QALIOPI s'abonne aux evenements Ecole (12 subscriptions)
INSERT INTO subscriptions (app_id, event_type_id, callback_url, secret) VALUES
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'inscription.created'),       'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'inscription.updated'),       'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'inscription.cancelled'),     'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'paiement.received'),         'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'paiement.failed'),           'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'questionnaire.completed'),   'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'contrat.signed'),            'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'contrat.declined'),          'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'formation.updated'),         'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'reclamation.created'),       'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'reclamation.resolved'),      'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000'),
((SELECT id FROM apps WHERE slug = 'qaliopi'), (SELECT id FROM event_types WHERE slug = 'user.created'),              'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000')
;

-- Ecole s'abonne aux evenements QALIOPI (4 subscriptions)
INSERT INTO subscriptions (app_id, event_type_id, callback_url, secret) VALUES
((SELECT id FROM apps WHERE slug = 'ecole'), (SELECT id FROM event_types WHERE slug = 'document.status_changed'),   'https://ecole.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_ecole_64chars_00000000000000000'),
((SELECT id FROM apps WHERE slug = 'ecole'), (SELECT id FROM event_types WHERE slug = 'paiement.retard_detected'),  'https://ecole.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_ecole_64chars_00000000000000000'),
((SELECT id FROM apps WHERE slug = 'ecole'), (SELECT id FROM event_types WHERE slug = 'formation.completion'),      'https://ecole.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_ecole_64chars_00000000000000000'),
((SELECT id FROM apps WHERE slug = 'ecole'), (SELECT id FROM event_types WHERE slug = 'inscription.archived'),      'https://ecole.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_ecole_64chars_00000000000000000')
;

-- Tableau Joyeux s'abonne aux demandes de tickets + paiements echoues (optionnel)
INSERT INTO subscriptions (app_id, event_type_id, callback_url, secret) VALUES
((SELECT id FROM apps WHERE slug = 'tableau'), (SELECT id FROM event_types WHERE slug = 'ticket.create_request'),    'https://manager.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_tableau_64chars_000000000000000'),
((SELECT id FROM apps WHERE slug = 'tableau'), (SELECT id FROM event_types WHERE slug = 'paiement.failed'),          'https://manager.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_tableau_64chars_000000000000000')
;

-- -------------------------------------------
-- Compte SSO initial (super_admin)
-- -------------------------------------------
-- Le mot de passe doit etre change en production
-- Hash bcrypt de 'CHANGE_ME_password' (cost 12)

-- INSERT INTO sso_users (email, password_hash, first_name, last_name) VALUES
-- ('admin@altheaprovence.com', '$2y$12$CHANGE_ME_WITH_REAL_BCRYPT_HASH', 'Simon', 'Dougnac');
--
-- INSERT INTO sso_app_roles (user_id, app_id, role) VALUES
-- ((SELECT id FROM sso_users WHERE email = 'admin@altheaprovence.com'), (SELECT id FROM apps WHERE slug = 'ecole'), 'super_admin'),
-- ((SELECT id FROM sso_users WHERE email = 'admin@altheaprovence.com'), (SELECT id FROM apps WHERE slug = 'qaliopi'), 'super_admin'),
-- ((SELECT id FROM sso_users WHERE email = 'admin@altheaprovence.com'), (SELECT id FROM apps WHERE slug = 'tableau'), 'admin');
