-- Migration: Standardiser tous les statuts pour toutes les tables
-- Date: 2025-01-XX
-- Description: Standardise les statuts pour convention_cadre, conventions, convention_specifique, programmations, et avenants
--              Liste des statuts: Votée, En cours d'ajustement, En cours de signature par les partenaires,
--              En cours de signature par le CRCS, En cours de visa, Visée, Non démarrée, En cours d'exécution,
--              Bloquée, Achevée, Annulée

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 par le CRCS\',
       \'En cours de visa\',
       \'Visée\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulée\'
   ) 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 par le CRCS\',
       \'En cours de visa\',
       \'Visée\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulée\'
   ) 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 par le CRCS\',
       \'En cours de visa\',
       \'Visée\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulée\'
   ) 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 d\'\'ajustement\',
       \'En cours de signature par les partenaires\',
       \'En cours de signature par le CRCS\',
       \'En cours de visa\',
       \'Visée\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulée\'
   ) 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 d\'\'ajustement\',
       \'En cours de signature par les partenaires\',
       \'En cours de signature par le CRCS\',
       \'En cours de visa\',
       \'Visée\',
       \'Non démarrée\',
       \'En cours d\'\'exécution\',
       \'Bloquée\',
       \'Achevée\',
       \'Annulée\'
   ) 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 069: Standardisation de tous les statuts terminée avec succès." AS message;

