-- Migration: Ajouter le statut "Annulé" à toutes les tables de conventions
-- Date: 2025-01-XX
-- Description: Ajoute le statut "Annulé" à l'enum du statut pour toutes les tables de conventions, programmations et avenants

SET @dbname = DATABASE();

-- 1. Modifier convention_cadre
SET @preparedStatement = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = 'convention_cadre')
      AND (COLUMN_NAME = 'statut')
  ) > 0,
  'ALTER TABLE `convention_cadre` 
   MODIFY COLUMN `statut` ENUM(
       \'Votée\',
       \'En cours d\'\'ajustement\',
       \'En cours de signature par les partenaires\',
       \'En cours de signature\',
       \'En cours de Visa\',
       \'Visé\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulé\'
   ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT \'Votée\';',
  'SELECT "La colonne statut n\'existe pas dans convention_cadre." AS message;'
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

-- 2. Modifier conventions
SET @preparedStatement = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = 'conventions')
      AND (COLUMN_NAME = 'statut')
  ) > 0,
  'ALTER TABLE `conventions` 
   MODIFY COLUMN `statut` ENUM(
       \'Votée\',
       \'En cours d\'\'ajustement\',
       \'En cours de signature par les partenaires\',
       \'En cours de signature\',
       \'En cours de Visa\',
       \'Visé\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulé\'
   ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT \'Votée\';',
  'SELECT "La colonne statut n\'existe pas dans conventions." AS message;'
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

-- 3. Modifier convention_specifique
SET @preparedStatement = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = 'convention_specifique')
      AND (COLUMN_NAME = 'statut')
  ) > 0,
  'ALTER TABLE `convention_specifique` 
   MODIFY COLUMN `statut` ENUM(
       \'Votée\',
       \'En cours d\'\'ajustement\',
       \'En cours de signature par les partenaires\',
       \'En cours de signature\',
       \'En cours de Visa\',
       \'Visé\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulé\'
   ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT \'Votée\';',
  'SELECT "La colonne statut n\'existe pas dans convention_specifique." AS message;'
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

-- 4. Modifier programmations
SET @preparedStatement = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = 'programmations')
      AND (COLUMN_NAME = 'statut')
  ) > 0,
  'ALTER TABLE `programmations` 
   MODIFY COLUMN `statut` ENUM(
       \'Votée\',
       \'En cours de signature\',
       \'En cours de Visa\',
       \'Visé\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulé\'
   ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT \'Votée\';',
  'SELECT "La colonne statut n\'existe pas dans programmations." AS message;'
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

-- 5. Modifier avenants
SET @preparedStatement = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = 'avenants')
      AND (COLUMN_NAME = 'statut')
  ) > 0,
  'ALTER TABLE `avenants` 
   MODIFY COLUMN `statut` ENUM(
       \'Votée\',
       \'En cours de signature\',
       \'En cours de Visa\',
       \'Visé\',
       \'Bloquée\',
       \'Annulé\'
   ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT \'Votée\';',
  'SELECT "La colonne statut n\'existe pas dans avenants." AS message;'
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

-- Message de confirmation
SELECT "Migration 059: Ajout du statut 'Annulé' à toutes les tables terminée avec succès." AS message;

