-- 1. Table des Bureaux (Multi-tenant)
CREATE TABLE IF NOT EXISTS tenants (
    id_tenant INTEGER PRIMARY KEY AUTOINCREMENT,
    nom_bureau TEXT NOT NULL,
    ville TEXT
);

-- 2. Table des Portefeuilles
CREATE TABLE IF NOT EXISTS portefeuilles (
    id_portefeuille INTEGER PRIMARY KEY AUTOINCREMENT,
    tenant_id INTEGER,
    nom_portefeuille TEXT NOT NULL,
    description TEXT,
    FOREIGN KEY (tenant_id) REFERENCES tenants(id_tenant)
);

-- 3. Table des Collaborateurs
CREATE TABLE IF NOT EXISTS collaborateurs (
    id_user INTEGER PRIMARY KEY AUTOINCREMENT,
    tenant_id INTEGER,
    id_superieur INTEGER,
    nom TEXT,
    prenom TEXT,
    email TEXT UNIQUE,
    fonction TEXT,
    entite TEXT,
    FOREIGN KEY (tenant_id) REFERENCES tenants(id_tenant),
    FOREIGN KEY (id_superieur) REFERENCES collaborateurs(id_user)
);

-- 4. Table des Projets
CREATE TABLE IF NOT EXISTS projets (
    id_projet INTEGER PRIMARY KEY AUTOINCREMENT,
    tenant_id INTEGER,
    id_portefeuille INTEGER,
    nom_projet TEXT,
    priorite TEXT CHECK(priorite IN ('Strategique', 'Standard', 'Support')),
    statut TEXT DEFAULT 'En cours',
    date_debut DATE,
    date_fin DATE,
    chef_projet TEXT,
    entite_projet TEXT,
    chef_projet_amoa TEXT,
    owner TEXT,
    chef_projet_infra TEXT,
    charge_projet REAL,
    duree INTEGER,
    FOREIGN KEY (tenant_id) REFERENCES tenants(id_tenant),
    FOREIGN KEY (id_portefeuille) REFERENCES portefeuilles(id_portefeuille)
);

-- 5. Table des Risques
CREATE TABLE IF NOT EXISTS risques (
    id_risque INTEGER PRIMARY KEY AUTOINCREMENT,
    id_projet INTEGER,
    description TEXT,
    probabilite INTEGER,
    gravite INTEGER,
    FOREIGN KEY (id_projet) REFERENCES projets(id_projet)
);

-- 6. Table des Affectations de Projets
CREATE TABLE IF NOT EXISTS projet_affectations (
    id_affectation INTEGER PRIMARY KEY AUTOINCREMENT,
    id_projet INTEGER,
    id_user INTEGER,
    role_in_project TEXT,
    FOREIGN KEY (id_projet) REFERENCES projets(id_projet),
    FOREIGN KEY (id_user) REFERENCES users(id_user)
);

-- 7. Table des Profils
CREATE TABLE IF NOT EXISTS profils (
    id_profil INTEGER PRIMARY KEY AUTOINCREMENT,
    nom_profil TEXT,
    type_profil TEXT CHECK(type_profil IN ('interne', 'externe')),
    date_affectation DATE
);

-- 8. Table des Entités
CREATE TABLE IF NOT EXISTS entites (
    id_entite INTEGER PRIMARY KEY AUTOINCREMENT,
    nom_entite TEXT,
    manager_entite TEXT
);
