-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1:3306
-- Généré le : dim. 08 mars 2026 à 21:47
-- Version du serveur : 8.4.7
-- Version de PHP : 8.3.28

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de données : `firstcar_reservations`
--

-- --------------------------------------------------------

--
-- Structure de la table `cars`
--

DROP TABLE IF EXISTS `cars`;
CREATE TABLE IF NOT EXISTS `cars` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  `category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT 'Berline',
  `seats` tinyint NOT NULL DEFAULT '4',
  `price_km` decimal(5,2) NOT NULL DEFAULT '2.50',
  `active` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `cars`
--

INSERT INTO `cars` (`id`, `name`, `image`, `description`, `category`, `seats`, `price_km`, `active`) VALUES
(1, 'Tesla Model Y', 'tesla_modele_y.jpg', 'SUV électrique dernière génération. Technologie de pointe, intérieur épuré et conduite ultrasilencieuse.', 'SUV Électrique', 5, 3.20, 1),
(2, 'Toyota', 'toyota.jpg', 'Berline hybride fiable et réputée pour sa douceur de conduite et sa consommation maîtrisée.', 'Berline', 4, 2.20, 1),
(3, 'Mercedes Viano', 'mercedes_viano.jpeg', 'Monospace de prestige, spacieux et raffiné. Idéal pour les groupes et les transferts VIP.', 'Monospace VIP', 7, 3.80, 1),
(4, 'Volkswagen Jetta', 'jetta.jpg', 'Berline élégante alliant dynamisme et raffinement. Finitions premium et technologies de confort.', 'Berline Sport', 4, 2.50, 1);

-- --------------------------------------------------------

--
-- Structure de la table `chauffeurs`
--

DROP TABLE IF EXISTS `chauffeurs`;
CREATE TABLE IF NOT EXISTS `chauffeurs` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `bio` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  `experience_years` int DEFAULT NULL,
  `languages` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `vehicle_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `photo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '1',
  `total_trips` int DEFAULT '0',
  `punctuality_rate` int DEFAULT '98',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `chauffeurs`
--

INSERT INTO `chauffeurs` (`id`, `name`, `phone`, `bio`, `experience_years`, `languages`, `vehicle_type`, `photo`, `active`, `total_trips`, `punctuality_rate`) VALUES
(1, 'Jean Dupont', '06 12 34 56 78', 'Chauffeur professionnel avec 10 ans d\'expérience dans le transport de luxe. Spécialiste des trajets longue distance. Ponctuel, discret et courtois.', 10, 'Français, Anglais', 'Berline Premium', 'jean.jpg', 1, 245, 99),
(2, 'Marie Lambert', '06 23 45 67 89', 'Chauffeur passionné et ponctuel. Excellente connaissance de la région parisienne et des aéroports. Conduite douce et sécurisée.', 5, 'Français, Anglais, Espagnol', 'SUV Électrique', 'marie.jpg', 1, 178, 97),
(3, 'Pierre Martin', '06 34 56 78 90', 'Ancien chauffeur de maître, spécialiste des trajets VIP. Discrétion et professionnalisme assurés. Connaît parfaitement les itinéraires.', 15, 'Français, Anglais, Allemand', 'Monospace de Luxe', 'pierre.jpg', 1, 312, 100),
(4, 'Sophie Durand', '06 45 67 89 01', 'Jeune chauffeur dynamique avec 3 ans d\'expérience. Parfait pour les trajets urbains et les transferts. Très appréciée pour sa sympathie.', 3, 'Français, Anglais', 'Berline Sport', 'sophie.jpg', 1, 89, 96);

-- --------------------------------------------------------

--
-- Structure de la table `chauffeur_availability`
--

DROP TABLE IF EXISTS `chauffeur_availability`;
CREATE TABLE IF NOT EXISTS `chauffeur_availability` (
  `id` int NOT NULL AUTO_INCREMENT,
  `chauffeur_id` int NOT NULL,
  `day_of_week` tinyint NOT NULL,
  `start_time` time NOT NULL,
  `end_time` time NOT NULL,
  PRIMARY KEY (`id`),
  KEY `chauffeur_id` (`chauffeur_id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `chauffeur_availability`
--

INSERT INTO `chauffeur_availability` (`id`, `chauffeur_id`, `day_of_week`, `start_time`, `end_time`) VALUES
(1, 1, 1, '06:00:00', '23:00:00'),
(2, 1, 2, '06:00:00', '23:00:00'),
(3, 1, 3, '06:00:00', '23:00:00'),
(4, 1, 4, '06:00:00', '23:00:00'),
(5, 1, 5, '06:00:00', '23:00:00'),
(6, 1, 6, '06:00:00', '23:00:00'),
(7, 1, 7, '06:00:00', '23:00:00'),
(8, 2, 1, '07:00:00', '22:00:00'),
(9, 2, 2, '07:00:00', '22:00:00'),
(10, 2, 3, '07:00:00', '22:00:00'),
(11, 2, 4, '07:00:00', '22:00:00'),
(12, 2, 5, '07:00:00', '22:00:00'),
(13, 2, 6, '07:00:00', '22:00:00'),
(14, 2, 7, '07:00:00', '22:00:00'),
(15, 3, 1, '08:00:00', '23:30:00'),
(16, 3, 2, '08:00:00', '23:30:00'),
(17, 3, 3, '08:00:00', '23:30:00'),
(18, 3, 4, '08:00:00', '23:30:00'),
(19, 3, 5, '08:00:00', '23:30:00'),
(20, 3, 6, '08:00:00', '23:30:00'),
(21, 3, 7, '08:00:00', '23:30:00'),
(22, 4, 1, '06:30:00', '21:00:00'),
(23, 4, 2, '06:30:00', '21:00:00'),
(24, 4, 3, '06:30:00', '21:00:00'),
(25, 4, 4, '06:30:00', '21:00:00'),
(26, 4, 5, '06:30:00', '21:00:00'),
(27, 4, 6, '06:30:00', '21:00:00'),
(28, 4, 7, '06:30:00', '21:00:00');

-- --------------------------------------------------------

--
-- Structure de la table `password_reset_tokens`
--

DROP TABLE IF EXISTS `password_reset_tokens`;
CREATE TABLE IF NOT EXISTS `password_reset_tokens` (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `expires_at` datetime NOT NULL,
  `used` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `token` (`token`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Structure de la table `ratings`
--

DROP TABLE IF EXISTS `ratings`;
CREATE TABLE IF NOT EXISTS `ratings` (
  `id` int NOT NULL AUTO_INCREMENT,
  `reservation_id` int NOT NULL,
  `user_id` int NOT NULL,
  `stars` tinyint UNSIGNED NOT NULL,
  `comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `one_rating_per_res` (`reservation_id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `ratings`
--

INSERT INTO `ratings` (`id`, `reservation_id`, `user_id`, `stars`, `comment`, `created_at`) VALUES
(1, 3, 1, 5, 'Jean est un chauffeur exceptionnel, très ponctuel et agréable. La Tesla était impeccable !', '2026-02-16 09:30:00'),
(2, 4, 1, 4, 'Très bon service avec Marie, conductrice professionnelle. Je recommande.', '2026-02-11 14:20:00'),
(3, 5, 1, 5, 'Pierre est excellent, très courtois et conduite sécurisée. Parfait pour les trajets VIP.', '2026-01-21 08:45:00'),
(4, 6, 1, 5, 'Sophie est adorable ! À l\'heure et très sympathique. La voiture était propre.', '2026-01-06 13:10:00'),
(5, 7, 1, 4, 'Bon service avec Marie, légèrement en retard mais très professionnelle.', '2026-02-26 10:30:00'),
(6, 8, 1, 5, 'Pierre connaît très bien Paris, a pris des itinéraires rapides. Top !', '2026-02-19 07:15:00'),
(7, 9, 1, 5, 'Sophie est une super chauffeur, conduite douce et agréable. Je referai appel à elle.', '2026-02-23 16:40:00'),
(8, 10, 1, 4, 'Très bien avec Jean, rien à redire. Chauffeur professionnel.', '2026-02-09 19:00:00');

-- --------------------------------------------------------

--
-- Structure de la table `reservations`
--

DROP TABLE IF EXISTS `reservations`;
CREATE TABLE IF NOT EXISTS `reservations` (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `car_id` int NOT NULL,
  `chauffeur_id` int NOT NULL,
  `pickup_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `dropoff_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `reservation_date` date NOT NULL,
  `reservation_time` time NOT NULL,
  `status` enum('confirmée','annulée','terminée') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'confirmée',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `car_id` (`car_id`),
  KEY `chauffeur_id` (`chauffeur_id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `reservations`
--

INSERT INTO `reservations` (`id`, `user_id`, `car_id`, `chauffeur_id`, `pickup_address`, `dropoff_address`, `reservation_date`, `reservation_time`, `status`, `created_at`) VALUES
(1, 1, 1, 2, '48 rue de l\'alma, 92400', 'Lyon', '2026-03-09', '12:40:00', 'annulée', '2026-03-08 19:38:30'),
(2, 1, 1, 3, 'Paris', 'Lyon', '2026-03-09', '20:51:00', 'annulée', '2026-03-08 19:51:29'),
(3, 1, 1, 1, '12 rue de la Paix, Paris', 'Aéroport CDG', '2026-02-15', '14:30:00', 'terminée', '2026-02-01 09:00:00'),
(4, 1, 2, 2, 'Gare de Lyon, Paris', 'Lyon Part-Dieu', '2026-02-10', '09:15:00', 'terminée', '2026-02-01 10:30:00'),
(5, 1, 3, 3, 'Opéra Garnier, Paris', 'Château de Versailles', '2026-01-20', '18:45:00', 'terminée', '2026-01-15 13:20:00'),
(6, 1, 4, 4, 'Aéroport Orly', 'Disneyland Paris', '2026-01-05', '11:30:00', 'terminée', '2026-01-02 08:45:00'),
(7, 1, 1, 2, 'Tour Eiffel, Paris', 'Montmartre', '2026-02-25', '08:20:00', 'terminée', '2026-02-20 15:10:00'),
(8, 1, 2, 3, 'Gare Montparnasse', 'Bordeaux', '2026-02-18', '16:10:00', 'terminée', '2026-02-10 12:25:00'),
(9, 1, 3, 4, 'Stade de France', 'Aéroport Roissy', '2026-02-22', '13:40:00', 'terminée', '2026-02-18 10:00:00'),
(10, 1, 4, 1, 'La Défense', 'Versailles', '2026-02-08', '19:15:00', 'terminée', '2026-02-05 16:30:00'),
(11, 1, 2, 3, '48 rue de l\'alma, 92400', 'Lyon', '2026-03-11', '22:03:00', 'confirmée', '2026-03-08 20:03:27');

-- --------------------------------------------------------

--
-- Structure de la table `users`
--

DROP TABLE IF EXISTS `users`;
CREATE TABLE IF NOT EXISTS `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `age` tinyint UNSIGNED NOT NULL,
  `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `is_admin` tinyint(1) NOT NULL DEFAULT '0',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `users`
--

INSERT INTO `users` (`id`, `name`, `email`, `password`, `age`, `phone`, `is_admin`, `created_at`) VALUES
(1, 'Lalienne Ethan', 'ethanlalienne92@gmail.com', '$2y$12$fw.M6q6yNKh.TAWohFR.0e1PIw/GC7z3XKfEkOaUyvCnP7V4ncN.G', 18, '06 12 34 56 78', 1, '2026-03-08 13:51:26');

--
-- Contraintes pour les tables déchargées
--

--
-- Contraintes pour la table `chauffeur_availability`
--
ALTER TABLE `chauffeur_availability`
  ADD CONSTRAINT `fk_ca_chauffeur` FOREIGN KEY (`chauffeur_id`) REFERENCES `chauffeurs` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `password_reset_tokens`
--
ALTER TABLE `password_reset_tokens`
  ADD CONSTRAINT `fk_prt_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `ratings`
--
ALTER TABLE `ratings`
  ADD CONSTRAINT `fk_rat_reservation` FOREIGN KEY (`reservation_id`) REFERENCES `reservations` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_rat_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `reservations`
--
ALTER TABLE `reservations`
  ADD CONSTRAINT `fk_res_car` FOREIGN KEY (`car_id`) REFERENCES `cars` (`id`) ON DELETE RESTRICT,
  ADD CONSTRAINT `fk_res_chauffeur` FOREIGN KEY (`chauffeur_id`) REFERENCES `chauffeurs` (`id`) ON DELETE RESTRICT,
  ADD CONSTRAINT `fk_res_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
