-- ============================================
-- Migration 0019: Nettoyage final id_reparation
-- Date: 2026-01-30
-- ============================================
-- Prerequis: Migrations 0017 et 0018 appliquées
-- Supprime la table Reparations
-- Supprime les colonnes id_reparation obsolètes
-- Nettoie les index associés
-- ============================================

PRINT 'Démarrage migration 0019 - Nettoyage final id_reparation...';

-- ============================================
-- 1. Supprimer la table Reparations (table temporelle)
-- ============================================

IF OBJECT_ID('Reparations', 'U') IS NOT NULL
BEGIN
    DROP TABLE Reparations;
    PRINT 'Table Reparations supprimée';
END
ELSE
    PRINT 'Table Reparations déjà supprimée';

-- ============================================
-- 2. Supprimer id_reparation de Interventions
-- ============================================

DECLARE @constraintName NVARCHAR(200);

IF OBJECT_ID('Interventions', 'U') IS NOT NULL
BEGIN
    -- D'abord supprimer la contrainte DEFAULT si elle existe
    SELECT @constraintName = dc.name
    FROM sys.default_constraints dc
    JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
    WHERE dc.parent_object_id = OBJECT_ID('Interventions') AND c.name = 'id_reparation';

    IF @constraintName IS NOT NULL
    BEGIN
        EXEC('ALTER TABLE Interventions DROP CONSTRAINT ' + @constraintName);
        PRINT 'Contrainte ' + @constraintName + ' supprimée de Interventions';
    END

    IF EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'Interventions' AND COLUMN_NAME = 'id_reparation'
    )
    BEGIN
        ALTER TABLE Interventions DROP COLUMN id_reparation;
        PRINT 'Colonne id_reparation supprimée de Interventions';
    END
    ELSE
        PRINT 'Colonne id_reparation déjà absente de Interventions';
END
ELSE
    PRINT 'Table Interventions inexistante - rien à faire';

-- ============================================
-- 3. Supprimer id_reparation de PiecesManquantes
-- ============================================

IF OBJECT_ID('PiecesManquantes', 'U') IS NOT NULL
BEGIN
    -- D'abord supprimer l'index s'il existe
    IF EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_PiecesManquantes_Reparation' AND object_id = OBJECT_ID('PiecesManquantes'))
    BEGIN
        DROP INDEX IX_PiecesManquantes_Reparation ON PiecesManquantes;
        PRINT 'Index IX_PiecesManquantes_Reparation supprimé';
    END

    -- Supprimer la contrainte DEFAULT si elle existe
    SET @constraintName = NULL;
    SELECT @constraintName = dc.name
    FROM sys.default_constraints dc
    JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
    WHERE dc.parent_object_id = OBJECT_ID('PiecesManquantes') AND c.name = 'id_reparation';

    IF @constraintName IS NOT NULL
    BEGIN
        EXEC('ALTER TABLE PiecesManquantes DROP CONSTRAINT ' + @constraintName);
        PRINT 'Contrainte ' + @constraintName + ' supprimée de PiecesManquantes';
    END

    IF EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'PiecesManquantes' AND COLUMN_NAME = 'id_reparation'
    )
    BEGIN
        ALTER TABLE PiecesManquantes DROP COLUMN id_reparation;
        PRINT 'Colonne id_reparation supprimée de PiecesManquantes';
    END
    ELSE
        PRINT 'Colonne id_reparation déjà absente de PiecesManquantes';
END
ELSE
    PRINT 'Table PiecesManquantes inexistante - rien à faire';

-- ============================================
-- 4. Migrer PiecesConsommees: id_reparation -> id_equipement
-- ============================================

IF OBJECT_ID('PiecesConsommees', 'U') IS NOT NULL
BEGIN
    -- Ajouter id_equipement si n'existe pas
    IF NOT EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'PiecesConsommees' AND COLUMN_NAME = 'id_equipement'
    )
    BEGIN
        ALTER TABLE PiecesConsommees ADD id_equipement VARCHAR(50) NULL;
        PRINT 'Colonne id_equipement ajoutée à PiecesConsommees';
    END

    -- Supprimer la contrainte DEFAULT si elle existe
    SET @constraintName = NULL;
    SELECT @constraintName = dc.name
    FROM sys.default_constraints dc
    JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
    WHERE dc.parent_object_id = OBJECT_ID('PiecesConsommees') AND c.name = 'id_reparation';

    IF @constraintName IS NOT NULL
    BEGIN
        EXEC('ALTER TABLE PiecesConsommees DROP CONSTRAINT ' + @constraintName);
        PRINT 'Contrainte ' + @constraintName + ' supprimée de PiecesConsommees';
    END

    -- Supprimer id_reparation de PiecesConsommees
    IF EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'PiecesConsommees' AND COLUMN_NAME = 'id_reparation'
    )
    BEGIN
        ALTER TABLE PiecesConsommees DROP COLUMN id_reparation;
        PRINT 'Colonne id_reparation supprimée de PiecesConsommees';
    END
    ELSE
        PRINT 'Colonne id_reparation déjà absente de PiecesConsommees';
END
ELSE
    PRINT 'Table PiecesConsommees inexistante - rien à faire';

-- ============================================
-- 5. Nettoyer RetourEquipement
-- ============================================

IF OBJECT_ID('RetourEquipement', 'U') IS NOT NULL
BEGIN
    -- Renommer id_reparation_origine en id_intervention_origine (plus clair)
    IF EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'RetourEquipement' AND COLUMN_NAME = 'id_reparation_origine'
    )
    BEGIN
        EXEC sp_rename 'RetourEquipement.id_reparation_origine', 'id_intervention_origine', 'COLUMN';
        PRINT 'Colonne id_reparation_origine renommée en id_intervention_origine';
    END

    -- Renommer nouvelle_reparation_id en nouvelle_intervention_id
    IF EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'RetourEquipement' AND COLUMN_NAME = 'nouvelle_reparation_id'
    )
    BEGIN
        EXEC sp_rename 'RetourEquipement.nouvelle_reparation_id', 'nouvelle_intervention_id', 'COLUMN';
        PRINT 'Colonne nouvelle_reparation_id renommée en nouvelle_intervention_id';
    END
END
ELSE
    PRINT 'Table RetourEquipement inexistante - rien à faire';

PRINT 'Migration 0019 terminée avec succès';
