-- Migration: Ajout des champs de suivi aux phases/jalons
-- Date: 2025-01-XX
-- Description: Ajoute les champs taux_realisation, retard_mois, retard_cumule et statut_projet pour le suivi des délais de réalisation.

SET @dbname = DATABASE();
SET @tablename = 'projet_phases_jalons';
SET @column1 = 'taux_realisation';
SET @column2 = 'retard_mois';
SET @column3 = 'retard_cumule';
SET @column4 = 'statut_projet';

-- Vérifier et ajouter taux_realisation
SET @preparedStatement1 = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = @tablename)
      AND (COLUMN_NAME = @column1)
  ) > 0,
  'SELECT "La colonne taux_realisation existe déjà." AS message;',
  CONCAT('ALTER TABLE `', @tablename, '` ADD COLUMN `', @column1, '` DECIMAL(5, 2) NULL DEFAULT NULL COMMENT "Taux de réalisation en pourcentage" AFTER `date_fin`;')
));
PREPARE alterIfNotExists1 FROM @preparedStatement1;
EXECUTE alterIfNotExists1;
DEALLOCATE PREPARE alterIfNotExists1;

-- Vérifier et ajouter retard_mois
SET @preparedStatement2 = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = @tablename)
      AND (COLUMN_NAME = @column2)
  ) > 0,
  'SELECT "La colonne retard_mois existe déjà." AS message;',
  CONCAT('ALTER TABLE `', @tablename, '` ADD COLUMN `', @column2, '` DECIMAL(5, 2) NULL DEFAULT NULL COMMENT "Retard en mois" AFTER `taux_realisation`;')
));
PREPARE alterIfNotExists2 FROM @preparedStatement2;
EXECUTE alterIfNotExists2;
DEALLOCATE PREPARE alterIfNotExists2;

-- Vérifier et ajouter retard_cumule
SET @preparedStatement3 = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = @tablename)
      AND (COLUMN_NAME = @column3)
  ) > 0,
  'SELECT "La colonne retard_cumule existe déjà." AS message;',
  CONCAT('ALTER TABLE `', @tablename, '` ADD COLUMN `', @column3, '` DECIMAL(5, 2) NULL DEFAULT NULL COMMENT "Retard cumulé en mois" AFTER `retard_mois`;')
));
PREPARE alterIfNotExists3 FROM @preparedStatement3;
EXECUTE alterIfNotExists3;
DEALLOCATE PREPARE alterIfNotExists3;

-- Vérifier et ajouter statut_projet (pour le projet global, pas pour chaque phase)
-- Note: Ce champ sera dans la table projets, pas dans projet_phases_jalons
SET @tablename2 = 'projets';
SET @preparedStatement4 = (SELECT IF(
  (
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      (TABLE_SCHEMA = @dbname)
      AND (TABLE_NAME = @tablename2)
      AND (COLUMN_NAME = @column4)
  ) > 0,
  'SELECT "La colonne statut_projet existe déjà." AS message;',
  CONCAT('ALTER TABLE `', @tablename2, '` ADD COLUMN `', @column4, '` ENUM(\'Démarré\',\'En cours de réalisation\',\'Achevé\') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT "Statut du projet pour le suivi" AFTER `statut`;')
));
PREPARE alterIfNotExists4 FROM @preparedStatement4;
EXECUTE alterIfNotExists4;
DEALLOCATE PREPARE alterIfNotExists4;

-- Message de confirmation
SELECT "Migration 018: Ajout des champs de suivi aux phases/jalons et projets terminée avec succès." AS message;

