-- ============================================================
-- MODIFICATIONS BASE DE DONNÉES — JeTeGageQue
-- À exécuter dans phpMyAdmin ou via MySQL CLI
-- ============================================================

-- 1. Ajouter le champ 'hidden' dans bets (masquer un gage au public)
ALTER TABLE bets ADD COLUMN IF NOT EXISTS hidden TINYINT(1) DEFAULT 0;

-- 2. Ajouter le champ 'bet_code' dans bets (code unique ex: 4T6G71)
ALTER TABLE bets ADD COLUMN IF NOT EXISTS bet_code VARCHAR(10) DEFAULT NULL;

-- 3. Ajouter owner_id dans bets si absent (déjà dans ta structure, vérification)
-- ALTER TABLE bets ADD COLUMN IF NOT EXISTS owner_id INT(11) DEFAULT NULL;

-- 4. Ajouter les colonnes manquantes dans users si elles n'existent pas
ALTER TABLE users ADD COLUMN IF NOT EXISTS nickname       VARCHAR(50)  DEFAULT NULL;
ALTER TABLE users ADD COLUMN IF NOT EXISTS phone          VARCHAR(20)  DEFAULT NULL;
ALTER TABLE users ADD COLUMN IF NOT EXISTS phone_private  TINYINT(1)   DEFAULT 1;
ALTER TABLE users ADD COLUMN IF NOT EXISTS email_private  TINYINT(1)   DEFAULT 1;
ALTER TABLE users ADD COLUMN IF NOT EXISTS language       VARCHAR(10)  DEFAULT 'CA-FR';
ALTER TABLE users ADD COLUMN IF NOT EXISTS font_preference VARCHAR(50) DEFAULT NULL;
ALTER TABLE users ADD COLUMN IF NOT EXISTS profile_bg_image VARCHAR(255) DEFAULT NULL;
ALTER TABLE users ADD COLUMN IF NOT EXISTS recovery_code  VARCHAR(255) DEFAULT NULL;
ALTER TABLE users ADD COLUMN IF NOT EXISTS last_spin_at   TIMESTAMP    DEFAULT NULL;
ALTER TABLE users ADD COLUMN IF NOT EXISTS last_activity  TIMESTAMP    DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE users ADD COLUMN IF NOT EXISTS role_status    ENUM('online','offline','dnd') DEFAULT 'offline';
ALTER TABLE users ADD COLUMN IF NOT EXISTS interaction_points INT(11)  DEFAULT 0;
ALTER TABLE users ADD COLUMN IF NOT EXISTS is_admin_store TINYINT(1)   DEFAULT 0;
ALTER TABLE users ADD COLUMN IF NOT EXISTS renewal_date   DATE         DEFAULT NULL;

-- 5. Créer user_stats si absent
CREATE TABLE IF NOT EXISTS user_stats (
    user_id         INT(11)  NOT NULL PRIMARY KEY,
    total_bets      INT(11)  DEFAULT 0,
    won_bets        INT(11)  DEFAULT 0,
    lost_bets       INT(11)  DEFAULT 0,
    reliability_score INT(11) DEFAULT 100,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

-- 6. Insérer une ligne dans user_stats pour chaque utilisateur existant (si pas encore fait)
INSERT IGNORE INTO user_stats (user_id)
SELECT id FROM users;

-- 7. Créer la table admin_config si absente
CREATE TABLE IF NOT EXISTS admin_config (
    config_key   VARCHAR(50) NOT NULL PRIMARY KEY,
    config_value INT(11)     DEFAULT NULL
);

-- 8. Insérer les valeurs par défaut des points
INSERT IGNORE INTO admin_config (config_key, config_value) VALUES
    ('pts_chat',     1),
    ('pts_message',  10),
    ('pts_vote',     5),
    ('pts_login',    2),
    ('pts_bet_view', 1),
    ('pts_profile',  1);

-- 9. Table marquee (bande défilante) — vérification
CREATE TABLE IF NOT EXISTS marquee (
    id         INT(11)      NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id    INT(11)      DEFAULT NULL,
    circle_id  INT(11)      DEFAULT NULL,
    message    TEXT         DEFAULT NULL,
    text_color VARCHAR(20)  DEFAULT '#FFFFFF',
    speed      ENUM('slow','normal','quick','super_quick') DEFAULT 'normal',
    image_path VARCHAR(255) DEFAULT NULL,
    start_date DATETIME     DEFAULT CURRENT_TIMESTAMP,
    end_date   DATETIME     DEFAULT NULL,
    is_active  TINYINT(1)   DEFAULT 1
);

-- 10. Table reports — vérification
CREATE TABLE IF NOT EXISTS reports (
    id          INT(11)     NOT NULL AUTO_INCREMENT PRIMARY KEY,
    reporter_id INT(11)     DEFAULT NULL,
    target_id   INT(11)     DEFAULT NULL,
    target_type ENUM('bet','chat','user') DEFAULT NULL,
    reason      ENUM('violent','sexual','inadequate','other') DEFAULT NULL,
    notes       TEXT        DEFAULT NULL,
    status      ENUM('new','pending','closed') DEFAULT 'new',
    created_at  DATETIME    DEFAULT CURRENT_TIMESTAMP
);

-- 11. Table trophy_levels — vérification
CREATE TABLE IF NOT EXISTS trophy_levels (
    id                INT(11)     NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title             VARCHAR(100) DEFAULT NULL,
    description       TEXT        DEFAULT NULL,
    icon_path         VARCHAR(255) DEFAULT NULL,
    requirement_type  ENUM('win_count','win_percent','interaction','reliability') DEFAULT NULL,
    requirement_value INT(11)     DEFAULT NULL
);

-- 12. Insérer quelques trophées de départ
INSERT IGNORE INTO trophy_levels (id, title, description, requirement_type, requirement_value) VALUES
    (1, 'Premier Sang',   'A lancé son premier défi.',          'win_count',   1),
    (2, 'En forme',       '5 victoires au total.',              'win_count',   5),
    (3, 'Inarrêtable',    '10 victoires au total.',             'win_count',   10),
    (4, 'La machine',     '25 victoires au total.',             'win_count',   25),
    (5, 'Fiable',         'Score de fiabilité à 100%.',         'reliability', 100),
    (6, 'Participatif',   '50 points d\'interaction.',          'interaction', 50),
    (7, 'Social',         '200 points d\'interaction.',         'interaction', 200),
    (8, 'Taux de succès', '75% de taux de victoire (min 5).',   'win_percent', 75);

-- 13. Table notifications — vérification
CREATE TABLE IF NOT EXISTS notifications (
    id         INT(11)  NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id    INT(11)  NOT NULL,
    message    TEXT     NOT NULL,
    link       VARCHAR(255) DEFAULT NULL,
    is_read    TINYINT(1)   DEFAULT 0,
    created_at DATETIME     DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

-- 14. Table friends — vérification
CREATE TABLE IF NOT EXISTS friends (
    id          INT(11)  NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id     INT(11)  NOT NULL,
    friend_id   INT(11)  NOT NULL,
    status      ENUM('active','blocked') DEFAULT 'active',
    is_favorite TINYINT(1) DEFAULT 0,
    created_at  TIMESTAMP  DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY unique_friendship (user_id, friend_id)
);

-- 15. Ajouter les index manquants pour performance
ALTER TABLE bets     ADD INDEX IF NOT EXISTS idx_hidden   (hidden);
ALTER TABLE messages ADD INDEX IF NOT EXISTS idx_circle   (circle_id);
ALTER TABLE friends  ADD INDEX IF NOT EXISTS idx_user     (user_id);

-- ============================================================
-- FIN — Vérifie que tout s'est exécuté sans erreur
-- ============================================================
