-- ===========================================
-- Migration 003 : Enregistrement app LMS
-- ===========================================
-- Ajoute l'app LMS, les event_types associés,
-- et les abonnements nécessaires.
-- ===========================================

-- -------------------------------------------
-- 1. Enregistrer l'application LMS
-- -------------------------------------------

INSERT INTO apps (slug, name, api_key, api_secret, base_url) VALUES
('lms', 'LMS Formations', 'lms_22f70a9ee92af585b2324a612098f5453a94592d0bbb4cbc8bea004fe1b038a6', 'ed8cac7d7c12afde40abf4f8d7cd86ee74f95430d8c6f5e2db042dc7dbc31210', 'https://formations.altheaprovence.com')
;

-- -------------------------------------------
-- 2. Nouveaux event_types emis par l'Ecole
--    (consommes par le LMS)
-- -------------------------------------------

INSERT INTO event_types (slug, description, source_app_id) VALUES
('inscription.access_opened',    'Acces a la formation ouvert pour un eleve',            (SELECT id FROM apps WHERE slug = 'ecole')),
('inscription.access_suspended', 'Acces suspendu pour paiement en retard',               (SELECT id FROM apps WHERE slug = 'ecole')),
('inscription.access_restored',  'Acces re-ouvert apres regularisation de paiement',     (SELECT id FROM apps WHERE slug = 'ecole'))
;

-- Note : inscription.cancelled existe deja dans seed.sql

-- -------------------------------------------
-- 3. Event_types emis par le LMS
--    (consommes par Ecole et QALIOPI)
-- -------------------------------------------

INSERT INTO event_types (slug, description, source_app_id) VALUES
('lms.progress.updated',   'Progression eleve mise a jour dans le LMS',           (SELECT id FROM apps WHERE slug = 'lms')),
('lms.course.completed',   'Formation terminee dans le LMS (100%)',               (SELECT id FROM apps WHERE slug = 'lms')),
('lms.certificate.issued', 'Certificat delivre par le LMS',                       (SELECT id FROM apps WHERE slug = 'lms')),
('lms.quiz.completed',     'Quiz complete dans le LMS',                           (SELECT id FROM apps WHERE slug = 'lms')),
('lms.student.inactive',   'Eleve inactif detecte par le LMS',                    (SELECT id FROM apps WHERE slug = 'lms'))
;

-- -------------------------------------------
-- 4. Abonnements : LMS recoit les evenements Ecole
-- -------------------------------------------

INSERT INTO subscriptions (app_id, event_type_id, callback_url, secret) VALUES
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'inscription.created'),          'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37'),
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'inscription.access_opened'),    'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37'),
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'inscription.access_suspended'), 'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37'),
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'inscription.access_restored'),  'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37'),
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'inscription.cancelled'),        'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37'),
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'paiement.received'),            'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37'),
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'paiement.failed'),              'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37'),
((SELECT id FROM apps WHERE slug = 'lms'), (SELECT id FROM event_types WHERE slug = 'formation.updated'),            'https://formations.altheaprovence.com/api/webhooks/central', 'd115c6fadfdab00ee1700956b07bc6952a8e051ae0412ef54556bf68f55c2d37')
;

-- -------------------------------------------
-- 5. Abonnements : Ecole recoit les evenements LMS
-- -------------------------------------------

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 = 'lms.progress.updated'),   '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 = 'lms.course.completed'),   '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 = 'lms.certificate.issued'), '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 = 'lms.student.inactive'),   'https://ecole.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_ecole_64chars_00000000000000000')
;

-- -------------------------------------------
-- 6. Abonnements : QALIOPI recoit les evenements LMS
-- -------------------------------------------

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 = 'lms.progress.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 = 'lms.course.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 = 'lms.certificate.issued'), '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 = 'lms.quiz.completed'),     'https://gestion.altheaprovence.com/api/webhook/central', 'CHANGE_ME_subscription_secret_qaliopi_64chars_0000000000000000')
;

-- -------------------------------------------
-- 7. Role LMS pour le super_admin existant
-- -------------------------------------------
-- A decommenter et adapter avec le bon user_id en production :
-- 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 = 'lms'), 'admin');
