-- ============================================================
-- 02_seed.sql : Données de test réalistes (Sprint 1)
-- A exécuter après :
--   01_init.sql  (création des tables)
--   02_indexes.sql
--   03_checks.sql
--   04_fk_policies.sql
--   05_triggers.sql
-- ============================================================

BEGIN;

-- ------------------------------------------------------------
-- Utilisateurs (super_admin, gestionnaire, 2 parents + co-parent, 1 AM)
-- ------------------------------------------------------------

-- UUIDs fixes pour faciliter les tests / jointures
-- super_admin
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('11111111-1111-1111-1111-111111111111', 'admin@ptits-pas.fr', '$2y$10$hashAdminIci', 'Super', 'Admin', 'super_admin', 'accepte')
ON CONFLICT (id) DO NOTHING;

-- gestionnaire
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('22222222-2222-2222-2222-222222222222', 'gestion@ptits-pas.fr', '$2y$10$hashGestionIci', 'Gina', 'Gestion', 'gestionnaire', 'accepte')
ON CONFLICT (id) DO NOTHING;

-- parent #1
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('33333333-3333-3333-3333-333333333333', 'parent1@example.com', '$2y$10$hashParent1', 'Paul', 'Parent', 'parent', 'accepte')
ON CONFLICT (id) DO NOTHING;

-- co-parent du parent #1
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('44444444-4444-4444-4444-444444444444', 'coparent1@example.com', '$2y$10$hashCoParent1', 'Clara', 'CoParent', 'parent', 'accepte')
ON CONFLICT (id) DO NOTHING;

-- parent #2
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('55555555-5555-5555-5555-555555555555', 'parent2@example.com', '$2y$10$hashParent2', 'Nora', 'Parent', 'parent', 'accepte')
ON CONFLICT (id) DO NOTHING;

-- assistante maternelle #1
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('66666666-6666-6666-6666-666666666666', 'am1@example.com', '$2y$10$hashAM1', 'Alice', 'AM', 'am', 'accepte')
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Extensions de rôles (parents / AM)
-- ------------------------------------------------------------

-- parents (id_co_parent nullable)
INSERT INTO parents (id_utilisateur, id_co_parent)
VALUES ('33333333-3333-3333-3333-333333333333', '44444444-4444-4444-4444-444444444444')  -- parent1 avec co-parent
ON CONFLICT (id_utilisateur) DO NOTHING;

INSERT INTO parents (id_utilisateur, id_co_parent)
VALUES ('55555555-5555-5555-5555-555555555555', NULL) -- parent2 sans co-parent
ON CONFLICT (id_utilisateur) DO NOTHING;

-- assistantes_maternelles
INSERT INTO assistantes_maternelles (id_utilisateur, numero_agrement, nb_max_enfants, disponible, ville_residence)
VALUES ('66666666-6666-6666-6666-666666666666', 'AGR-2025-0001', 3, true, 'Lille')
ON CONFLICT (id_utilisateur) DO NOTHING;

-- ------------------------------------------------------------
-- Enfants
--  - child A : déjà né (statut = 'actif' et date_naissance requise)
--  - child B : à naître (statut = 'a_naitre' et date_prevue_naissance requise)
-- ------------------------------------------------------------

INSERT INTO enfants (id, prenom, nom, statut, date_naissance, jumeau_multiple)
VALUES ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Léo', 'Parent', 'actif', '2022-04-12', false)
ON CONFLICT (id) DO NOTHING;

INSERT INTO enfants (id, prenom, nom, statut, date_prevue_naissance, jumeau_multiple)
VALUES ('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'Mila', 'Parent', 'a_naitre', '2026-02-15', false)
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Liaison N:N parents_enfants
--  - parent1 + co-parent ↔ enfant A & B
--  - parent2 ↔ enfant B
-- ------------------------------------------------------------

-- parent1 ↔ enfant A
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('33333333-3333-3333-3333-333333333333', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
ON CONFLICT DO NOTHING;

-- co-parent1 ↔ enfant A
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('44444444-4444-4444-4444-444444444444', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
ON CONFLICT DO NOTHING;

-- parent1 ↔ enfant B
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('33333333-3333-3333-3333-333333333333', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb')
ON CONFLICT DO NOTHING;

-- parent2 ↔ enfant B
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('55555555-5555-5555-5555-555555555555', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb')
ON CONFLICT DO NOTHING;

-- ------------------------------------------------------------
-- Dossier (parent1 ↔ enfant A)
-- ------------------------------------------------------------
INSERT INTO dossiers (id, id_parent, id_enfant, presentation, type_contrat, repas, budget, planning_souhaite)
VALUES (
  'dddddddd-dddd-dddd-dddd-dddddddddddd',
  '33333333-3333-3333-3333-333333333333',
  'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
  'Besoin garde périscolaire lundi/mardi/jeudi/vendredi.',
  'mensuel',
  true,
  600.00,
  '{"lun_ven":{"matin":false,"midi":true,"soir":true}}'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Messages (sur le dossier)
-- ------------------------------------------------------------
INSERT INTO messages (id, id_dossier, id_expediteur, contenu)
VALUES ('m0000000-0000-0000-0000-000000000001', 'dddddddd-dddd-dddd-dddd-dddddddddddd', '33333333-3333-3333-3333-333333333333', 'Bonjour, nous cherchons une garde périscolaire.')
ON CONFLICT (id) DO NOTHING;

INSERT INTO messages (id, id_dossier, id_expediteur, contenu)
VALUES ('m0000000-0000-0000-0000-000000000002', 'dddddddd-dddd-dddd-dddd-dddddddddddd', '66666666-6666-6666-6666-666666666666', 'Bonjour, je suis disponible les soirs. Discutons du contrat.')
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Contrat (1:1 avec le dossier)
-- ------------------------------------------------------------
INSERT INTO contrats (id, id_dossier, planning, tarif_horaire, indemnites_repas, date_debut, statut, signe_parent, signe_am)
VALUES (
  'cccccccc-cccc-cccc-cccc-cccccccccccc',
  'dddddddd-dddd-dddd-dddd-dddddddddddd',
  '{"lun_ven":{"17h-19h":true}}'::jsonb,
  12.50,
  3.50,
  '2025-09-01',
  'brouillon',
  false,
  false
)
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Avenant de contrat
-- ------------------------------------------------------------
INSERT INTO avenants_contrats (id, id_contrat, modifications, initie_par, statut)
VALUES (
  'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee',
  'cccccccc-cccc-cccc-cccc-cccccccccccc',
  '{"changement_horaire":{"vendredi":{"17h-20h":true}}}'::jsonb,
  '33333333-3333-3333-3333-333333333333',
  'propose'
)
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Événement (absence enfant)
-- ------------------------------------------------------------
INSERT INTO evenements (id, type, id_enfant, id_am, id_parent, cree_par, date_debut, date_fin, commentaires, statut, urgence)
VALUES (
  'e0000000-0000-0000-0000-000000000001',
  'absence_enfant',
  'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
  '66666666-6666-6666-6666-666666666666',
  '33333333-3333-3333-3333-333333333333',
  '33333333-3333-3333-3333-333333333333',
  '2025-09-12',
  '2025-09-12',
  'Enfant malade (rhume).',
  'propose',
  false
)
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Upload (justificatif lié au dossier)
-- ------------------------------------------------------------
INSERT INTO uploads (id, id_utilisateur, id_dossier_lie, fichier_url, type_fichier)
VALUES (
  'u0000000-0000-0000-0000-000000000001',
  '33333333-3333-3333-3333-333333333333',
  'dddddddd-dddd-dddd-dddd-dddddddddddd',
  '/uploads/justificatifs/dossier_dddddddd_attestation.pdf',
  'application/pdf'
)
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Notification (pour le parent1)
-- ------------------------------------------------------------
INSERT INTO notifications (id, id_utilisateur, type, contenu, lu)
VALUES (
  'n0000000-0000-0000-0000-000000000001',
  '33333333-3333-3333-3333-333333333333',
  'nouveau_message',
  'Vous avez un nouveau message sur le dossier #dddd…',
  false
)
ON CONFLICT (id) DO NOTHING;

-- ------------------------------------------------------------
-- Validation (compte de l’AM validé par le gestionnaire)
-- ------------------------------------------------------------
INSERT INTO validations (id, id_utilisateur, statut, commentaire, cree_le)
VALUES (
  'v0000000-0000-0000-0000-000000000001',
  '66666666-6666-6666-6666-666666666666',
  'accepte',
  'Dossier AM vérifié par gestionnaire.',
  NOW()
)
ON CONFLICT (id) DO NOTHING;

COMMIT;
