-- =============================================
-- TRIGGERS POUR LA COHÉRENCE AUTOMATIQUE DES STATUTS MEMBRES
-- Garantit que status est toujours cohérent avec date_expiration
-- =============================================

DELIMITER $$

-- =============================================
-- TRIGGER 1: Vérification lors de la création d'un membre
-- =============================================
DROP TRIGGER IF EXISTS check_member_expiry_on_insert$$

CREATE TRIGGER check_member_expiry_on_insert
BEFORE INSERT ON club_membre
FOR EACH ROW
BEGIN
  -- Utiliser DATEDIFF pour une comparaison fiable des dates
  IF DATEDIFF(NEW.date_expiration, CURDATE()) < 0 THEN
    SET NEW.status = 'expiré';
  ELSE
    SET NEW.status = 'active';
  END IF;
END$$

-- =============================================
-- TRIGGER 2: Vérification lors de la modification d'un membre
-- =============================================
DROP TRIGGER IF EXISTS check_member_expiry_on_update$$

CREATE TRIGGER check_member_expiry_on_update
BEFORE UPDATE ON club_membre
FOR EACH ROW
BEGIN
  -- Utiliser DATEDIFF pour une comparaison fiable des dates
  IF NEW.date_expiration IS NOT NULL THEN
    IF DATEDIFF(NEW.date_expiration, CURDATE()) < 0 THEN
      SET NEW.status = 'expiré';
    ELSE
      SET NEW.status = 'active';
    END IF;
  END IF;
END$$

DELIMITER ;

-- =============================================
-- VALIDATION: Vérifier que les triggers sont créés
-- =============================================
SELECT
    TRIGGER_NAME,
    EVENT_MANIPULATION,
    EVENT_OBJECT_TABLE,
    ACTION_TIMING,
    CREATED
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA = 'gym_saas'
  AND TRIGGER_NAME LIKE '%member%'
ORDER BY TRIGGER_NAME;

SELECT '✅ Triggers créés avec succès!' AS Status;
SELECT '📧 La cohérence status/date_expiration est maintenant garantie automatiquement' AS Info;
