-- Migration: Remplacement de acces_doc (BIT) par type_acces_doc (TINYINT)
-- Cette migration ne s'applique qu'a commun6 (table utilisateur)
-- Les bases de production ont une VUE utilisateur, pas une table
--
-- Valeurs type_acces_doc:
--   0 = Tous les documents (pas de filtre)
--   1 = Mes documents uniquement (Id_utilisateur)
--   2 = Mes documents + ceux où je suis commercial (Id_utilisateur OU IDcommercial)
--   3 = Par commercial (respecte options_commercial.Comercial_par)
--
-- Note: Si type_acces_doc = 2 ou 3 et l'utilisateur n'est pas lié a un commercial,
--       on retombe sur le cas 1 (mes documents uniquement)

-- Verifier que 'utilisateur' est bien une TABLE (pas une vue) avant de continuer
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = 'utilisateur')
BEGIN
    PRINT 'utilisateur est une vue, migration ignoree (base de production)';
    RETURN;
END

-- Vérifier si la colonne acces_doc existe et type_acces_doc n'existe pas
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'utilisateur' AND COLUMN_NAME = 'acces_doc')
   AND NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'utilisateur' AND COLUMN_NAME = 'type_acces_doc')
BEGIN
    -- Ajouter la nouvelle colonne
    ALTER TABLE utilisateur ADD type_acces_doc TINYINT NOT NULL DEFAULT 0;

    -- Migrer les données existantes (acces_doc=1 -> type_acces_doc=1)
    EXEC('UPDATE utilisateur SET type_acces_doc = 1 WHERE acces_doc = 1');

    -- Supprimer la contrainte DEFAULT sur acces_doc (nom dynamique)
    DECLARE @constraintName NVARCHAR(200);
    SELECT @constraintName = d.name
    FROM sys.default_constraints d
    JOIN sys.columns c ON d.parent_object_id = c.object_id AND d.parent_column_id = c.column_id
    WHERE d.parent_object_id = OBJECT_ID('utilisateur') AND c.name = 'acces_doc';

    IF @constraintName IS NOT NULL
    BEGIN
        EXEC('ALTER TABLE utilisateur DROP CONSTRAINT ' + @constraintName);
    END

    -- Supprimer l'ancienne colonne
    ALTER TABLE utilisateur DROP COLUMN acces_doc;

    PRINT 'Migration acces_doc -> type_acces_doc effectuee avec succes';
END
ELSE IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'utilisateur' AND COLUMN_NAME = 'type_acces_doc')
BEGIN
    -- Cas ou acces_doc n'existe pas (nouvelle base) - juste creer type_acces_doc
    ALTER TABLE utilisateur ADD type_acces_doc TINYINT NOT NULL DEFAULT 0;
    PRINT 'Colonne type_acces_doc creee';
END
ELSE
BEGIN
    PRINT 'Migration deja effectuee - rien a faire';
END
