-- =====================================================================
--  ALTALYS PROTECTION — Accès, portail client et demandes du personnel
--  Import via phpMyAdmin > moso8599_altalys > Importer
--  Rejouable : ne peut pas s'arrêter en cours de route.
-- =====================================================================
SET NAMES utf8mb4;

-- ---------------------------------------------------------------------
-- 1. Rôle « client » et rattachement
-- ---------------------------------------------------------------------
ALTER TABLE `utilisateurs`
  MODIFY `role` ENUM('admin','exploitation','secretariat','chef_poste','agent','client')
  NOT NULL DEFAULT 'chef_poste';

SET @sql := (SELECT IF(COUNT(*) = 0,
  'ALTER TABLE `utilisateurs` ADD COLUMN `client_id` BIGINT UNSIGNED NULL',
  'DO 0') FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME='utilisateurs' AND COLUMN_NAME='client_id');
PREPARE r FROM @sql; EXECUTE r; DEALLOCATE PREPARE r;

-- Première connexion : changement de mot de passe imposé
SET @sql := (SELECT IF(COUNT(*) = 0,
  'ALTER TABLE `utilisateurs` ADD COLUMN `doit_changer` TINYINT(1) NOT NULL DEFAULT 0',
  'DO 0') FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME='utilisateurs' AND COLUMN_NAME='doit_changer');
PREPARE r FROM @sql; EXECUTE r; DEALLOCATE PREPARE r;

-- Accès temporaire à la facturation (secrétariat) : se coupe seul à l'échéance
SET @sql := (SELECT IF(COUNT(*) = 0,
  'ALTER TABLE `utilisateurs` ADD COLUMN `acces_facturation` TINYINT(1) NOT NULL DEFAULT 0',
  'DO 0') FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME='utilisateurs' AND COLUMN_NAME='acces_facturation');
PREPARE r FROM @sql; EXECUTE r; DEALLOCATE PREPARE r;

SET @sql := (SELECT IF(COUNT(*) = 0,
  'ALTER TABLE `utilisateurs` ADD COLUMN `acces_facturation_fin` DATE NULL',
  'DO 0') FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME='utilisateurs' AND COLUMN_NAME='acces_facturation_fin');
PREPARE r FROM @sql; EXECUTE r; DEALLOCATE PREPARE r;

-- ---------------------------------------------------------------------
-- 2. Sites accessibles à un compte (client ou chef de poste multi-sites)
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `acces_sites` (
  `utilisateur_id` BIGINT UNSIGNED NOT NULL,
  `site_id`        BIGINT UNSIGNED NOT NULL,
  PRIMARY KEY (`utilisateur_id`,`site_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- 3. Demandes du personnel (équipement, congés, doléances)
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `demandes` (
  `id`         BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `agent_id`   BIGINT UNSIGNED NULL,
  `auteur`     VARCHAR(120) NULL,
  `type`       VARCHAR(40) NOT NULL,      -- equipement, conges, planning, doleance, autre
  `objet`      VARCHAR(200) NOT NULL,
  `message`    TEXT NULL,
  `site_id`    BIGINT UNSIGNED NULL,
  `urgence`    ENUM('normale','elevee') NOT NULL DEFAULT 'normale',
  `statut`     ENUM('nouvelle','en_cours','traitee','refusee') NOT NULL DEFAULT 'nouvelle',
  `reponse`    TEXT NULL,
  `cree_le`    DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `traite_le`  DATETIME NULL,
  PRIMARY KEY (`id`),
  KEY `idx_statut` (`statut`),
  KEY `idx_agent` (`agent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- 4. Paramètres
-- ---------------------------------------------------------------------
INSERT INTO `parametres` (`cle`,`valeur`) VALUES
 ('email_demandes','contact@altalys.fr'),
 ('smtp_hote',''),
 ('smtp_port','465'),
 ('smtp_user',''),
 ('smtp_pass',''),
 ('portail_client_actif','1'),
 ('email_comptable','')
ON DUPLICATE KEY UPDATE `cle` = `cle`;
