-- Création de la base de données et sélection
CREATE DATABASE IF NOT EXISTS user;
USE user;

SET NAMES utf8mb4;

-- Table `utilisateur`
CREATE TABLE IF NOT EXISTS `utilisateur` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `nom` VARCHAR(100) NOT NULL,
  `prenom` VARCHAR(100) NOT NULL,
  `sexe` ENUM('Homme', 'Femme', 'Autre') NOT NULL,
  `age` INT DEFAULT NULL,
  `date_naissance` DATE NOT NULL,
  `identifiant` VARCHAR(50) NOT NULL UNIQUE,
  `email` VARCHAR(255) NOT NULL UNIQUE,
  `mot_de_passe` VARCHAR(255) NOT NULL,
  `photo` VARCHAR(255) DEFAULT NULL,
  `situation` VARCHAR(255) DEFAULT NULL,
  `etat` ENUM('en attente', 'validé') DEFAULT 'en attente',
  `statut` ENUM('visiteur','simple','complexe','administrateur') DEFAULT 'visiteur',
  PRIMARY KEY (`id`)
);

INSERT INTO `utilisateur` VALUES
(1, 'Dupont', 'Jean', 'Homme', 30, '1994-05-12', 'jdupont', 'jean.dupont@mail.com', '$2b$10$sOFuc/cZzpK1P8fINfmsAOQ33K0xyCeEXD.OCilFH0SPyuMC.3LNC', './photos/jean.jpg', 'Ingénieur', 'validé', 'complexe'), -- mots de passe dupont
(2, 'Martin', 'Sophie', 'Femme', 25, '1999-08-21', 'smartin', 'sophie.martin@mail.com', '$2b$10$ydWLQyCvL8PVAN18KCWBWe.oMdtm7Y.R4oCVVJenP9fJqfyBLR26C', './photos/sophie.jpg', 'Étudiante', 'en attente', 'visiteur'), -- mots de passe martin
(3, 'Durand', 'Paul', 'Homme', 45, '1979-11-30', 'pdurand', 'paul.durand@mail.com', '$2b$10$HnhXjkKOPNLE.2erAwzg.e5zVVRK/wNeegd8GrNxWv2f3U660xQbW', './photos/paul.jpg', 'Directeur', 'validé', 'administrateur'), -- mots de passe durand
(4, 'Bernard', 'Alice', 'Femme', 28, '1996-02-15', 'aliceb', 'alice.bernard@mail.com', '$2b$10$6BslSk7oJc6fGzQx3YQRHu6Op8xtVQIGFznA0vsmZX40Ix4ywBTfy', './photos/alice.jpg', 'Développeuse', 'validé', 'simple'), -- mots de passe bernard
(5, 'Lemoine', 'Alex', 'Autre', 32, '1992-07-19', 'alemoine', 'alex.lemoine@mail.com', '$2b$10$lZebS.LIRJi9Z5yDaLSNxujY0piysZAb9BRjGOLVW3Hr2wDPoYTgO', './photos/alex.jpg', 'Freelance', 'en attente', 'simple'), -- mots de passe lemoine
(6, 'Arricastres', 'Guillaume', 'Homme', 26, '1998-01-15', 'garricastres', 'guillaume.arricastres@mail.com', '$2b$10$StE4wQ2Mox/CUpuR.o/1nObQMT/rAAndmKXOgAJ7r.V/YGvEs7isy', './photos/guillaume.jpg', 'Étudiant', 'validé', 'simple'), -- mots de passe 1234
(7, 'Chosson', 'Clément', 'Homme', 25, '1999-06-15', 'clement_cx', 'clement.chosson@mail.com', '$2b$10$StE4wQ2Mox/CUpuR.o/1nObQMT/rAAndmKXOgAJ7r.V/YGvEs7isy', NULL, 'Technicien', 'validé', 'complexe'),  -- mots de passe 1234
(8, 'Admin', 'Root', 'Homme', 30, '1993-12-31', 'admin', 'admin@smartbuilding.com', '$2b$10$StE4wQ2Mox/CUpuR.o/1nObQMT/rAAndmKXOgAJ7r.V/YGvEs7isy', NULL, 'Administrateur', 'validé', 'administrateur');  -- mots de passe 1234


-- Table `objet`
CREATE TABLE IF NOT EXISTS `objet` (
  `adresse_ip` VARCHAR(45) NOT NULL,
  `niveau` ENUM('débutant','intermédiaire','avancé','expert') NOT NULL,
  `denomination` VARCHAR(255) NOT NULL,
  `etat` ENUM('Actif','Inactif') NOT NULL,
  `derniere_interaction` DATETIME DEFAULT NULL,
  `type` ENUM('Climatisation','Lumière','thermostat','securite','Enceinte connectée','Capteur','appareil_menager','Prise') NOT NULL,
  PRIMARY KEY (`adresse_ip`)
);

INSERT INTO `objet` VALUES
('192.168.1.10', 'débutant', 'Ampoule connectée', 'Inactif', '2025-04-08 10:40:50', 'Lumière'),
('192.168.1.11', 'débutant', 'Cuisinière', 'Inactif', '2025-04-08 10:40:50', 'appareil_menager'),
('192.168.1.12', 'débutant', 'Machine à café', 'Inactif', '2025-04-08 10:40:50', 'appareil_menager'),
('192.168.1.20', 'intermédiaire', 'Thermostat intelligent', 'Actif', '2025-04-08 10:40:50', 'thermostat'),
('192.168.1.30', 'avancé', 'Caméra de surveillance', 'Actif', '2025-04-08 10:40:50', 'Capteur'),
('192.168.1.40', 'débutant', 'Machine à laver', 'Inactif', '2025-04-08 10:40:50', 'appareil_menager'),
('192.168.1.50', 'débutant', 'Enceinte intelligente', 'Inactif', '2025-04-08 10:40:50', 'Enceinte connectée'),
('192.168.1.60', 'intermédiaire', 'Prise connectée', 'Actif', '2025-04-08 10:40:50', 'Prise'),
('192.168.1.70', 'avancé', 'Serrure connectée', 'Actif', '2025-04-08 10:40:50', 'securite'),
('192.168.1.80', 'expert', 'Porte connectée salle de contrôle', 'Actif', '2025-04-08 10:40:50', 'securite'),
('192.168.1.90', 'avancé', 'Climatisation', 'Actif', '2025-04-08 10:40:50', 'Climatisation');

-- Table `thermostat`
CREATE TABLE `thermostat` (
  `adresse_ip` VARCHAR(45) NOT NULL,
  `temperature_actuelle` FLOAT DEFAULT NULL,
  `temperature_cible` FLOAT DEFAULT NULL,
  `mode` ENUM('Automatique','Manuel') NOT NULL,
  PRIMARY KEY (`adresse_ip`),
  FOREIGN KEY (`adresse_ip`) REFERENCES `objet` (`adresse_ip`)
);

INSERT INTO `thermostat` VALUES
('192.168.1.20', 17, 20, 'Automatique');

-- Table `climatisation_chauffage`
CREATE TABLE `climatisation_chauffage` (
  `adresse_ip` VARCHAR(45) NOT NULL,
  `thermostat` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`adresse_ip`),
  FOREIGN KEY (`adresse_ip`) REFERENCES `objet` (`adresse_ip`),
  FOREIGN KEY (`thermostat`) REFERENCES `thermostat` (`adresse_ip`)
);

INSERT INTO `climatisation_chauffage` VALUES
('192.168.1.90', '192.168.1.20');

-- Table `appareil_menager`
CREATE TABLE `appareil_menager` (
  `adresse_ip` VARCHAR(45) NOT NULL,
  `depart_differe` TIME DEFAULT NULL,
  `etat_de_la_tache` ENUM('Complété','En cours','En attente','Aucune') NOT NULL,
  PRIMARY KEY (`adresse_ip`),
  FOREIGN KEY (`adresse_ip`) REFERENCES `objet` (`adresse_ip`) ON DELETE RESTRICT ON UPDATE CASCADE
);

INSERT INTO `appareil_menager` VALUES
('192.168.1.11', NULL, 'Aucune'),
('192.168.1.12', NULL, 'Aucune'),
('192.168.1.40', NULL, 'Aucune');

-- Table `securite`
CREATE TABLE `securite` (
  `adresse_ip` VARCHAR(45) NOT NULL,
  `situation` ENUM('Verouillé','Ouvert') NOT NULL,
  PRIMARY KEY (`adresse_ip`),
  FOREIGN KEY (`adresse_ip`) REFERENCES `objet` (`adresse_ip`) ON DELETE RESTRICT ON UPDATE CASCADE
);

INSERT INTO `securite` VALUES
('192.168.1.70', 'Ouvert'),
('192.168.1.80', 'Verouillé');

-- Table `gestion`
CREATE TABLE `gestion` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `id_utilisateur` INT NOT NULL,
  `competence` VARCHAR(255) NOT NULL,
  `niveau` ENUM('débutant','intermédiaire','avancé','expert') NOT NULL,
  `categorie_experience` FLOAT DEFAULT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`id_utilisateur`) REFERENCES `utilisateur` (`id`) ON DELETE CASCADE
);

INSERT INTO `gestion` (`id`, `id_utilisateur`, `competence`, `niveau`, `categorie_experience`) VALUES
(1, 1, 'Informatique', 'expert', 5),
(2, 1, 'Electronique', 'avancé', 3.5),
(3, 2, 'Internet', 'intermédiaire', 2),
(4, 2, 'Assistance numerique', 'débutant', 1),
(5, 3, 'Cuisine', 'expert', 10),
(6, 3, 'Aménagement', 'avancé', 7),
(7, 4, 'Securite', 'avancé', 4),
(8, 4, 'Acceuil', 'intermédiaire', 2.5),
(9, 5, 'Entretien', 'intermédiaire', 3),
(10, 5, 'Securite', 'débutant', 1.5);


CREATE TABLE `ressources` (
  `id` int NOT NULL,
  `nom` varchar(50) NOT NULL,
  `consommation` varchar(50) NOT NULL,
  `consommation_max` varchar(50) NOT NULL,
  `fournisseur` varchar(100) NOT NULL,
  `abonnement` varchar(100) NOT NULL,
  `echeance` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `ressources` (`id`, `nom`, `consommation`, `consommation_max`, `fournisseur`, `abonnement`, `echeance`) VALUES
(0, 'Électricité', '250 kWh', '500 kWh', 'EDF', '50 € / mois', '2025-12-30'),
(1, 'Gaz', '90 m³', '200 m³', 'Engie', '40 € / mois', '2025-06-30'),
(2, 'Eau', '1200 L', '3000 L', 'Veolia', '20 € / mois', '2025-08-15');

CREATE TABLE IF NOT EXISTS contact (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nom VARCHAR(100) NOT NULL,
  email VARCHAR(255) NOT NULL,
  message TEXT NOT NULL,
  date_envoi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
