-- ============================================================
-- GESTION PARC AUTOMOBILE - Province Al Haouz v3.0
-- Migration 002 : Nouvelles fonctionnalités
-- ============================================================

USE gestion_parc;

-- Prix carburant du jour (modifiable dans Paramètres)
CREATE TABLE IF NOT EXISTS prix_carburants (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    carburant_id INT UNSIGNED NOT NULL,
    prix DECIMAL(10,2) NOT NULL DEFAULT 0,
    date_effet DATE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (carburant_id) REFERENCES carburants(id) ON DELETE CASCADE,
    UNIQUE KEY uk_carb_date (carburant_id, date_effet)
) ENGINE=InnoDB;

-- Ajouter prix_unitaire et montant aux missions
ALTER TABLE missions ADD COLUMN IF NOT EXISTS prix_unitaire DECIMAL(10,2) DEFAULT 0 AFTER quantite;
ALTER TABLE missions ADD COLUMN IF NOT EXISTS montant DECIMAL(12,2) DEFAULT 0 AFTER prix_unitaire;

-- Paramètres application (logo, nom, intitulé)
CREATE TABLE IF NOT EXISTS app_settings (
    setting_key VARCHAR(50) PRIMARY KEY,
    setting_value TEXT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

INSERT IGNORE INTO app_settings (setting_key, setting_value) VALUES
('app_name', 'Gestion Parc Automobile'),
('app_subtitle', 'Province Al Haouz'),
('app_logo', ''),
('organisme', 'Province Al Haouz'),
('adresse', ''),
('telephone', ''),
('app_theme_color', '#0d6efd');

-- Suivi vidanges / entretiens périodiques
CREATE TABLE IF NOT EXISTS suivi_entretien (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    vehicule_id INT UNSIGNED NOT NULL,
    type_entretien VARCHAR(100) NOT NULL DEFAULT 'Vidange',
    date_entretien DATE NOT NULL,
    kilometrage INT UNSIGNED DEFAULT 0,
    prochain_km INT UNSIGNED DEFAULT 0,
    prochaine_date DATE NULL,
    prestataire_id INT UNSIGNED NULL,
    cout DECIMAL(12,2) DEFAULT 0,
    observation TEXT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (vehicule_id) REFERENCES vehicules(id) ON DELETE CASCADE,
    FOREIGN KEY (prestataire_id) REFERENCES prestataires(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- Ajouter le kilométrage actuel au véhicule
ALTER TABLE vehicules ADD COLUMN IF NOT EXISTS kilometrage INT UNSIGNED DEFAULT 0 AFTER statut;

-- Permissions pour les nouvelles fonctionnalités
INSERT IGNORE INTO permissions (code, module, label_fr, description, ordre) VALUES
('suivi_view',   'Suivi Entretien', 'Consulter le suivi entretien', NULL, 100),
('suivi_create', 'Suivi Entretien', 'Ajouter un suivi entretien',   NULL, 101),
('suivi_edit',   'Suivi Entretien', 'Modifier un suivi entretien',  NULL, 102),
('suivi_delete', 'Suivi Entretien', 'Supprimer un suivi entretien', NULL, 103),
('param_prix_carburants_view', 'Param. Prix Carburants', 'Voir les prix carburants', NULL, 84),
('param_prix_carburants_edit', 'Param. Prix Carburants', 'Gérer les prix carburants', NULL, 85),
('param_app_settings_view',    'Param. Application',     'Voir les paramètres app',   NULL, 86),
('param_app_settings_edit',    'Param. Application',     'Gérer les paramètres app',  NULL, 87);

-- SuperAdmin : ajouter les nouvelles permissions
INSERT IGNORE INTO role_permissions (role_id, permission_id) SELECT 1, id FROM permissions WHERE code IN ('suivi_view','suivi_create','suivi_edit','suivi_delete','param_prix_carburants_view','param_prix_carburants_edit','param_app_settings_view','param_app_settings_edit');

-- Administrateur : ajouter consultation + gestion
INSERT IGNORE INTO role_permissions (role_id, permission_id) SELECT 2, id FROM permissions WHERE code IN ('suivi_view','suivi_create','suivi_edit','param_prix_carburants_view','param_prix_carburants_edit','param_app_settings_view');

-- Utilisateur : consultation suivi
INSERT IGNORE INTO role_permissions (role_id, permission_id) SELECT 3, id FROM permissions WHERE code IN ('suivi_view','suivi_create','param_prix_carburants_view');

-- Prix initiaux carburants
INSERT IGNORE INTO prix_carburants (carburant_id, prix, date_effet) 
SELECT id, CASE WHEN ref_carburant='Gasoil' THEN 11.29 ELSE 13.43 END, CURDATE() FROM carburants;
