-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1
-- Généré le : sam. 01 nov. 2025 à 18:39
-- Version du serveur : 5.5.28
-- Version de PHP : 8.2.12

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 : `taghtil`
--

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

--
-- Structure de la table `alertes_recherche`
--

CREATE TABLE `alertes_recherche` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `nom_alerte` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `criteres_recherche` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `frequence` enum('immediate','quotidienne','hebdomadaire') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'quotidienne',
  `active` tinyint(1) NOT NULL DEFAULT '1',
  `date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `derniere_execution` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

--
-- Structure de la table `annonces`
--

CREATE TABLE `annonces` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `categorie_id` int(11) NOT NULL,
  `type_transaction_id` int(11) NOT NULL,
  `titre` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `prix` decimal(12,2) NOT NULL,
  `surface` decimal(8,2) DEFAULT NULL,
  `nb_pieces` int(11) DEFAULT NULL,
  `nb_chambres` int(11) DEFAULT NULL,
  `nb_salles_bain` int(11) DEFAULT NULL,
  `nb_etages` int(11) DEFAULT NULL,
  `annee_construction` int(11) DEFAULT NULL,
  `adresse` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ville` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `code_postal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `departement` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `region` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `pays` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'France',
  `latitude` decimal(10,8) DEFAULT NULL,
  `longitude` decimal(11,8) DEFAULT NULL,
  `caracteristiques` text COLLATE utf8mb4_unicode_ci,
  `date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `date_modification` datetime DEFAULT NULL,
  `date_publication` datetime DEFAULT NULL,
  `date_expiration` datetime DEFAULT NULL,
  `statut` enum('brouillon','en_attente','publiee','vendue','louee','expiree','supprimee') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'brouillon',
  `mise_en_avant` tinyint(1) NOT NULL DEFAULT '0',
  `date_mise_en_avant` datetime DEFAULT NULL,
  `vues` int(11) NOT NULL DEFAULT '0',
  `contacts` int(11) NOT NULL DEFAULT '0',
  `actif` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `annonces` (`id`, `user_id`, `categorie_id`, `type_transaction_id`, `titre`, `description`, `prix`, `surface`, `nb_pieces`, `nb_chambres`, `nb_salles_bain`, `nb_etages`, `annee_construction`, `adresse`, `ville`, `code_postal`, `departement`, `region`, `pays`, `latitude`, `longitude`, `caracteristiques`, `date_creation`, `date_modification`, `date_publication`, `date_expiration`, `statut`, `mise_en_avant`, `date_mise_en_avant`, `vues`, `contacts`, `actif`) VALUES
(1, 2, 1, 1, 'Magnifique T3 avec balcon - Paris 15ème', 'Superbe appartement T3 de 75m² avec balcon, entièrement rénové, dans un immeuble de standing. Cuisine équipée, parquet au sol, lumineux.', 485000.00, 75.50, 3, 2, 1, NULL, NULL, '123 Rue de Vaugirard', 'Paris', '75015', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-25 21:50:08', NULL, '2025-10-25 17:50:08', NULL, 'publiee', 0, NULL, 0, 0, 1),
(2, 3, 2, 1, 'Villa moderne avec piscine - Lyon', 'Superbe villa contemporaine de 180m² avec piscine chauffée, garage double, jardin paysager de 800m². Quartier résidentiel calme.', 750000.00, 180.00, 6, 4, 2, NULL, NULL, '45 Avenue des Pins', 'Lyon', '69003', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-25 21:50:08', NULL, '2025-10-25 17:50:08', NULL, 'publiee', 1, NULL, 0, 0, 1),
(3, 4, 1, 2, 'Studio meublé centre-ville - Marseille', 'Joli studio meublé de 25m² en plein centre-ville, proche transports et commerces. Idéal étudiant ou jeune actif.', 650.00, 25.00, 1, 0, 1, NULL, NULL, '67 Rue Saint-Ferréol', 'Marseille', '13001', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-25 21:50:08', NULL, '2025-10-25 17:50:08', NULL, 'publiee', 0, NULL, 0, 0, 1),
(4, 2, 3, 2, 'Bureau moderne 100m² - La Défense', 'Espace de bureau moderne et lumineux de 100m², entièrement aménagé, dans tour de standing. Parking inclus.', 2500.00, 100.00, 4, NULL, NULL, NULL, NULL, '15 Avenue Charles de Gaulle', 'Courbevoie', '92400', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-25 21:50:08', NULL, '2025-10-25 17:50:08', NULL, 'publiee', 0, NULL, 0, 0, 1),
(5, 3, 1, 1, 'Penthouse d\'exception avec terrasse - Nice', 'Exceptionnel penthouse de 120m² avec terrasse de 80m², vue mer panoramique, prestations haut de gamme, garage.', 1200000.00, 120.00, 4, 3, 2, NULL, NULL, '23 Promenade des Anglais', 'Nice', '06000', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-25 21:50:08', NULL, '2025-10-25 17:50:08', NULL, 'publiee', 1, NULL, 0, 0, 1),
(6, 4, 2, 1, 'Maison de ville à rénover - Bordeaux', 'Charmante maison de ville de 90m² à rénover, potentiel exceptionnel, petite cour, quartier historique.', 320000.00, 90.00, 4, 2, 1, NULL, NULL, '12 Rue Sainte-Catherine', 'Bordeaux', '33000', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-25 21:50:08', NULL, NULL, NULL, 'en_attente', 0, NULL, 0, 0, 1),
(7, 2, 1, 1, 'Magnifique T3 avec balcon - Paris 15ème', 'Superbe appartement T3 de 75m² avec balcon, entièrement rénové, dans un immeuble de standing. Cuisine équipée, parquet au sol, lumineux.', 485000.00, 75.50, 3, 2, 1, NULL, NULL, '123 Rue de Vaugirard', 'Paris', '75015', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-26 18:20:41', NULL, '2025-10-26 14:20:41', NULL, 'publiee', 0, NULL, 0, 0, 1),
(8, 3, 2, 1, 'Villa moderne avec piscine - Lyon', 'Superbe villa contemporaine de 180m² avec piscine chauffée, garage double, jardin paysager de 800m². Quartier résidentiel calme.', 750000.00, 180.00, 6, 4, 2, NULL, NULL, '45 Avenue des Pins', 'Lyon', '69003', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-26 18:20:41', NULL, '2025-10-26 14:20:41', NULL, 'publiee', 1, NULL, 0, 0, 1),
(9, 4, 1, 2, 'Studio meublé centre-ville - Marseille', 'Joli studio meublé de 25m² en plein centre-ville, proche transports et commerces. Idéal étudiant ou jeune actif.', 650.00, 25.00, 1, 0, 1, NULL, NULL, '67 Rue Saint-Ferréol', 'Marseille', '13001', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-26 18:20:41', NULL, '2025-10-26 14:20:41', NULL, 'publiee', 0, NULL, 0, 0, 1),
(10, 2, 3, 2, 'Bureau moderne 100m² - La Défense', 'Espace de bureau moderne et lumineux de 100m², entièrement aménagé, dans tour de standing. Parking inclus.', 2500.00, 100.00, 4, NULL, NULL, NULL, NULL, '15 Avenue Charles de Gaulle', 'Courbevoie', '92400', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-26 18:20:41', NULL, '2025-10-26 14:20:41', NULL, 'publiee', 0, NULL, 0, 0, 1),
(11, 3, 1, 1, 'Penthouse d\'exception avec terrasse - Nice', 'Exceptionnel penthouse de 120m² avec terrasse de 80m², vue mer panoramique, prestations haut de gamme, garage.', 1200000.00, 120.00, 4, 3, 2, NULL, NULL, '23 Promenade des Anglais', 'Nice', '06000', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-26 18:20:41', NULL, '2025-10-26 14:20:41', NULL, 'publiee', 1, NULL, 0, 0, 1),
(12, 4, 2, 1, 'Maison de ville à rénover - Bordeaux', 'Charmante maison de ville de 90m² à rénover, potentiel exceptionnel, petite cour, quartier historique.', 320000.00, 90.00, 4, 2, 1, NULL, NULL, '12 Rue Sainte-Catherine', 'Bordeaux', '33000', NULL, NULL, 'France', NULL, NULL, NULL, '2025-10-26 18:20:41', NULL, NULL, NULL, 'en_attente', 0, NULL, 0, 0, 1),
(13, 7, 1, 1, 'Appartement T3 lumineux centre-ville Bordeaux', 'Magnifique T3 de 75m?? au c??ur de Bordeaux. Enti??rement r??nov??, cuisine ??quip??e, parquet massif. Proche tramway et commerces. Id??al premier achat ou investissement locatif.', 285000.00, 75.00, 3, 2, 1, 2, 2015, '12 rue Sainte-Catherine', 'Bordeaux', '33000', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.83778900, -0.57918000, '{\"balcon\": true, \"parking\": false, \"cave\": true, \"ascenseur\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"D\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 156, 12, 1),
(14, 7, 1, 1, 'Studio moderne Bastide', 'Studio de 28m?? enti??rement refait ?? neuf dans le quartier de la Bastide. Cuisine am??ricaine ??quip??e, salle d\'eau avec douche italienne. Vue sur Garonne. Parfait pour ??tudiant ou jeune actif.', 165000.00, 28.00, 1, 0, 1, 3, 2020, '45 quai des Queyries', 'Bordeaux', '33100', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.84972200, -0.56055600, '{\"balcon\": false, \"parking\": false, \"cave\": false, \"ascenseur\": true, \"chauffage\": \"??lectrique\", \"classe_energetique\": \"C\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 89, 8, 1),
(15, 7, 1, 1, 'T4 avec terrasse Caud??ran', 'Superbe T4 de 95m?? avec terrasse de 20m?? dans r??sidence s??curis??e. 3 chambres, 2 salles de bain, cuisine ouverte sur s??jour. Parking et cave inclus. Quartier calme et r??sidentiel.', 425000.00, 95.00, 4, 3, 2, 1, 2010, '8 avenue de Beutre', 'Bordeaux', '33200', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.85194400, -0.61027800, '{\"balcon\": false, \"terrasse\": true, \"parking\": true, \"cave\": true, \"ascenseur\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"B\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 203, 18, 1),
(16, 7, 1, 1, 'Duplex T5 Chartrons', 'Exceptionnel duplex de 120m?? dans le quartier pris?? des Chartrons. 4 chambres, 2 salles de bain, s??jour cath??drale. Terrasse de 15m?? avec vue d??gag??e. Prestations haut de gamme.', 650000.00, 120.00, 5, 4, 2, 2, 2005, '25 rue Notre-Dame', 'Bordeaux', '33000', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.85527800, -0.57083300, '{\"balcon\": false, \"terrasse\": true, \"parking\": false, \"cave\": true, \"ascenseur\": false, \"chauffage\": \"gaz\", \"classe_energetique\": \"A\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 324, 25, 1),
(17, 7, 1, 1, 'T2 investissement Victoire', 'T2 de 45m?? id??alement situ?? place de la Victoire. Parfait pour investissement locatif ??tudiant. Lou?? 650???/mois. Rentabilit?? 5.2%. Charges de copropri??t?? faibles.', 150000.00, 45.00, 2, 1, 1, 4, 1980, '18 place de la Victoire', 'Bordeaux', '33000', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.83166700, -0.57305600, '{\"balcon\": true, \"parking\": false, \"cave\": false, \"ascenseur\": false, \"chauffage\": \"??lectrique\", \"classe_energetique\": \"E\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 445, 32, 1),
(18, 7, 2, 1, 'Maison bourgeoise avec jardin Pessac', 'Magnifique maison bourgeoise de 180m?? sur terrain de 800m??. 6 pi??ces, 4 chambres, 2 salles de bain. Chemin??e, parquet d\'origine. Garage double et d??pendances. Quartier r??sidentiel calme.', 750000.00, 180.00, 6, 4, 2, 2, 1925, '42 avenue du G??n??ral de Gaulle', 'Pessac', '33600', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.80638900, -0.62972200, '{\"jardin\": true, \"garage\": true, \"cheminee\": true, \"cave\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"C\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 287, 22, 1),
(19, 7, 2, 1, 'Villa contemporaine M??rignac', 'Villa moderne de 140m?? construite en 2018. Architecture contemporaine, cuisine ouverte sur salon de 50m??. 4 chambres en suite. Piscine chauff??e et pool house. Proche a??roport.', 680000.00, 140.00, 5, 4, 4, 1, 2018, '15 impasse des Roses', 'M??rignac', '33700', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.83416700, -0.67500000, '{\"jardin\": true, \"piscine\": true, \"garage\": true, \"terrasse\": true, \"chauffage\": \"pompe ?? chaleur\", \"classe_energetique\": \"A\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 198, 15, 1),
(20, 7, 2, 1, 'Maison de ville r??nov??e Talence', 'Charmante maison de ville de 110m?? enti??rement r??nov??e. 4 chambres, bureau, cuisine ??quip??e. Petit jardin arbor??. Proche universit?? et transports. Id??ale famille ou colocation ??tudiante.', 485000.00, 110.00, 5, 4, 2, 2, 1960, '7 rue de la Croix Blanche', 'Talence', '33400', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.80805600, -0.59027800, '{\"jardin\": true, \"parking\": false, \"cave\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"D\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 156, 11, 1),
(21, 7, 2, 1, 'Pavillon ann??es 70 ?? r??nover', 'Pavillon de 90m?? des ann??es 70 ?? r??nover enti??rement. Potentiel de 120m?? apr??s extension. Terrain de 600m?? bien expos??. Secteur recherch??, proche ??coles et commerces. Projet ?? pr??voir.', 320000.00, 90.00, 4, 3, 1, 1, 1975, '28 rue des Acacias', 'Gradignan', '33170', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.77472200, -0.61666700, '{\"jardin\": true, \"garage\": true, \"renovation\": true, \"chauffage\": \"??lectrique\", \"classe_energetique\": \"G\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 89, 5, 1),
(22, 7, 3, 1, 'Villa vue mer Arcachon', 'Villa d\'exception de 200m?? avec vue panoramique sur le bassin d\'Arcachon. 5 chambres, piscine ?? d??bordement, garage 3 voitures. Prestations luxueuses, calme absolu.', 1850000.00, 200.00, 6, 5, 4, 2, 2012, 'Corniche Andr?? de Joly', 'Arcachon', '33120', 'Gironde', 'Nouvelle-Aquitaine', 'France', 43.69555600, 7.26500000, '{\"vue_mer\": true, \"piscine\": true, \"garage\": true, \"jardin\": true, \"chauffage\": \"pompe ?? chaleur\", \"classe_energetique\": \"A\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 567, 45, 1),
(23, 7, 3, 1, 'Villa contemporaine Cap-Ferret', 'Villa d\'architecte de 160m?? face au bassin. Design ??pur??, baies vitr??es, terrasse bois. 4 suites, garage 2 voitures. Acc??s direct plage priv??e.', 1250000.00, 160.00, 5, 4, 4, 1, 2019, 'Boulevard de la Plage', 'L??ge-Cap-Ferret', '33950', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.66694400, -1.23222200, '{\"vue_mer\": true, \"acces_plage\": true, \"garage\": true, \"terrasse\": true, \"chauffage\": \"pompe ?? chaleur\", \"classe_energetique\": \"A\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 445, 38, 1),
(24, 7, 4, 1, 'Terrain constructible 1000m??', 'Beau terrain plat de 1000m?? en zone constructible. Viabilis??, toutes commodit??s ?? proximit??. Exposition sud, vue d??gag??e. Id??al pour maison familiale. COS 0.3.', 185000.00, 1000.00, 0, 0, 0, 0, NULL, 'Rue de la R??publique', 'Saint-M??dard-en-Jalles', '33160', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.90000000, -0.71666700, '{\"constructible\": true, \"viabilise\": true, \"plat\": true, \"exposition\": \"sud\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 67, 8, 1),
(25, 7, 4, 1, 'Terrain vue mer Arcachon', 'Terrain exceptionnel de 800m?? avec vue panoramique sur le bassin d\'Arcachon. Constructibilit?? 250m??. Acc??s direct ?? la plage. Emplacement privil??gi?? et rare.', 650000.00, 800.00, 0, 0, 0, 0, NULL, 'Avenue de la Plage', 'Arcachon', '33120', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.66666700, -1.16666700, '{\"constructible\": true, \"vue_mer\": true, \"acces_plage\": true, \"rare\": true}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 234, 28, 1),
(26, 7, 5, 2, 'Local commercial centre-ville', 'Local commercial de 80m?? en rez-de-chauss??e. Vitrine sur rue passante, r??serve, WC. Tous commerces autoris??s. Loyer attractif, charges r??duites.', 1800.00, 80.00, 1, 0, 1, 0, 1990, '45 rue du Pas-Saint-Georges', 'Bordeaux', '33000', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.83833300, -0.57694400, '{\"vitrine\": true, \"reserve\": true, \"tous_commerces\": true, \"rue_passante\": true}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 89, 12, 1),
(27, 7, 5, 2, 'Bureau 150m?? M??rignac', 'Plateau de bureaux de 150m?? climatis??. Open space modulable, 2 bureaux ferm??s, salle de r??union. Parking privatif 10 places. Proche rocade et a??roport.', 2200.00, 150.00, 5, 0, 2, 1, 2005, 'ZA du Phare', 'M??rignac', '33700', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.83444400, -0.67527800, '{\"climatisation\": true, \"parking\": true, \"modulable\": true, \"salle_reunion\": true}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 45, 6, 1),
(28, 7, 1, 2, 'T2 meubl?? hyper-centre', 'Joli T2 de 50m?? enti??rement meubl?? et ??quip??. Cuisine am??ricaine, salon lumineux, chambre avec dressing. Parfait pour s??jour temporaire ou ??tudiant. Disponible imm??diatement.', 750.00, 50.00, 2, 1, 1, 3, 2010, '5 cours de l\'Intendance', 'Bordeaux', '33000', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.84138900, -0.57361100, '{\"meuble\": true, \"balcon\": true, \"ascenseur\": true, \"chauffage\": \"??lectrique\", \"classe_energetique\": \"D\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 234, 28, 1),
(29, 7, 1, 2, 'Studio ??tudiant Victoire', 'Studio de 25m?? id??alement situ?? pour ??tudiant. Kitchenette ??quip??e, coin nuit en mezzanine. R??sidence s??curis??e avec laverie. Proche universit??s et transports en commun.', 480.00, 25.00, 1, 0, 1, 4, 2015, '12 rue Juda??que', 'Bordeaux', '33000', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.83277800, -0.57111100, '{\"meuble\": true, \"securise\": true, \"laverie\": true, \"ascenseur\": true, \"chauffage\": \"??lectrique\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 567, 45, 1),
(30, 7, 1, 2, 'T3 familial avec parking', 'Spacieux T3 de 85m?? dans r??sidence r??cente. S??jour de 35m??, cuisine ??quip??e, 2 chambres. Balcon expos?? sud, parking s??curis??. Proche ??coles et commerces. Famille bienvenue.', 980.00, 85.00, 3, 2, 1, 2, 2012, '18 avenue Thiers', 'Bordeaux', '33100', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.84750000, -0.55888900, '{\"balcon\": true, \"parking\": true, \"ascenseur\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"C\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 189, 22, 1),
(31, 7, 1, 2, 'T4 avec terrasse Caud??ran', 'Grand T4 de 105m?? avec terrasse de 25m??. Cuisine ouverte, s??jour lumineux, 3 chambres, 2 salles de bain. Cave et parking. Quartier calme, proche tramway.', 1350.00, 105.00, 4, 3, 2, 1, 2008, '32 cours de l\'Argonne', 'Bordeaux', '33000', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.85111100, -0.60388900, '{\"terrasse\": true, \"parking\": true, \"cave\": true, \"ascenseur\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"B\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 123, 15, 1),
(32, 7, 2, 2, 'Maison avec jardin Talence', 'Maison de 120m?? avec jardin de 400m??. 4 chambres, 2 salles de bain, garage. Parfaite pour famille avec enfants. Proche ??coles et universit??. Animaux accept??s sur demande.', 1650.00, 120.00, 5, 4, 2, 1, 1985, '25 rue Paul Bert', 'Talence', '33400', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.80833300, -0.59277800, '{\"jardin\": true, \"garage\": true, \"animaux_acceptes\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"D\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 78, 9, 1),
(33, 7, 2, 2, 'Villa avec piscine Pessac', 'Superbe villa de 150m?? avec piscine chauff??e. 5 chambres, 3 salles de bain, bureau. Cuisine am??ricaine, salon cath??drale. Terrain arbor?? de 800m??. Haut standing.', 2500.00, 150.00, 6, 5, 3, 1, 2000, '8 all??e des Pins', 'Pessac', '33600', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.80888900, -0.63055600, '{\"piscine\": true, \"jardin\": true, \"garage\": true, \"chauffage\": \"pompe ?? chaleur\", \"classe_energetique\": \"B\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 145, 18, 1),
(34, 7, 1, 1, 'Appartement T3 Lyon Presqu\'??le', 'Magnifique T3 de 80m?? dans immeuble haussmannien r??nov??. Plafonds moulur??s, parquet d\'origine, chemin??e. Vue sur Sa??ne. Prestations d\'exception.', 485000.00, 80.00, 3, 2, 1, 3, 1900, '12 quai Saint-Antoine', 'Lyon', '69002', 'Rh??ne', 'Auvergne-Rh??ne-Alpes', 'France', 45.76083300, 4.82722200, '{\"balcon\": true, \"cheminee\": true, \"ascenseur\": true, \"vue_riviere\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"C\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 298, 25, 1),
(35, 7, 1, 1, 'Loft atypique Paris 11??me', 'Loft de 120m?? dans ancienne usine r??habilit??e. Hauteur sous plafond 4m, verri??re, mezzanine. Cuisine ouverte design, 2 chambres. Parking en sous-sol. Proche R??publique.', 890000.00, 120.00, 3, 2, 2, 2, 2010, '45 avenue Parmentier', 'Paris', '75011', 'Paris', '??le-de-France', 'France', 48.86416700, 2.37444400, '{\"loft\": true, \"verriere\": true, \"parking\": true, \"ascenseur\": true, \"chauffage\": \"??lectrique\", \"classe_energetique\": \"B\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 734, 52, 1),
(36, 7, 1, 1, 'Studio Toulouse Capitole', 'Studio de 30m?? r??nov?? dans secteur Capitole. Parfait investissement locatif ??tudiant. Lou?? 520???/mois. Proche universit?? et transports. Charges r??duites.', 125000.00, 30.00, 1, 0, 1, 5, 1970, '8 rue du Taur', 'Toulouse', '31000', 'Haute-Garonne', 'Occitanie', 'France', 43.60444400, 1.44166700, '{\"investissement\": true, \"loue\": true, \"proche_universite\": true, \"chauffage\": \"??lectrique\", \"classe_energetique\": \"D\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 456, 38, 1),
(37, 7, 1, 1, 'T2 neuf Bassins ?? Flot', 'T2 neuf de 55m?? dans r??sidence moderne. Terrasse 12m??, parking et cave. Prestations haut de gamme, VMC double flux. Livraison d??cembre 2025. VEFA possible.', 320000.00, 55.00, 2, 1, 1, 1, 2025, '8 rue Lucien Faure', 'Bordeaux', '33300', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.85861100, -0.55000000, '{\"neuf\": true, \"terrasse\": true, \"parking\": true, \"cave\": true, \"vmc_double_flux\": true, \"chauffage\": \"pompe ?? chaleur\", \"classe_energetique\": \"A\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 89, 12, 1),
(38, 7, 2, 1, 'Maison ??cologique L??ognan', 'Maison BBC de 130m?? construite en 2020. Panneaux solaires, r??cup??ration eau de pluie, isolation renforc??e. 4 chambres, jardin paysager. Proche vignobles.', 520000.00, 130.00, 5, 4, 2, 1, 2020, '12 chemin des Graves', 'L??ognan', '33850', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.73333300, -0.61666700, '{\"ecologique\": true, \"panneaux_solaires\": true, \"jardin\": true, \"garage\": true, \"chauffage\": \"pompe ?? chaleur\", \"classe_energetique\": \"A\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 167, 18, 1),
(39, 7, 2, 1, 'Maison bourgeoise Royan', 'Belle maison bourgeoise de 170m?? proche plages. 6 pi??ces, 4 chambres, v??randa. Jardin arbor?? 600m??, garage. Architecture 1900 pr??serv??e. Potentiel chambres d\'h??tes.', 580000.00, 170.00, 6, 4, 2, 2, 1900, '25 boulevard Thiers', 'Royan', '17200', 'Charente-Maritime', 'Nouvelle-Aquitaine', 'France', 45.62500000, -1.03055600, '{\"jardin\": true, \"garage\": true, \"veranda\": true, \"proche_plages\": true, \"chauffage\": \"gaz\", \"classe_energetique\": \"D\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 145, 14, 1),
(40, 7, 2, 1, 'T4 neuf ??coquartier Lyon', 'T4 de 85m?? dans ??coquartier Confluence. Terrasse 15m??, prestations ??cologiques. 3 chambres, 2 salles de bain. Proche transports, commerces et Rh??ne.', 450000.00, 85.00, 4, 3, 2, 3, 2023, '12 cours Rambaud', 'Lyon', '69002', 'Rh??ne', 'Auvergne-Rh??ne-Alpes', 'France', 45.74083300, 4.81805600, '{\"neuf\": true, \"terrasse\": true, \"ecologique\": true, \"parking\": true, \"ascenseur\": true, \"chauffage\": \"pompe ?? chaleur\", \"classe_energetique\": \"A\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 189, 21, 1),
(41, 7, 1, 3, 'Studio ski Chamonix', 'Studio de 35m?? dans r??sidence ski aux pieds. Mezzanine, coin montagne, balcon sud. Proche t??l??ph??riques et centre. Investissement locatif saisonnier, rendement ??lev??.', 150.00, 35.00, 1, 0, 1, 4, 2015, 'Route des P??lerins', 'Chamonix-Mont-Blanc', '74400', 'Haute-Savoie', 'Auvergne-Rh??ne-Alpes', 'France', 45.92361100, 6.86944400, '{\"ski_aux_pieds\": true, \"balcon\": true, \"mezzanine\": true, \"saisonnier\": true, \"chauffage\": \"??lectrique\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 1, NULL, 423, 67, 1),
(42, 7, 2, 3, 'Villa vacances Arcachon', 'Villa de 120m?? ?? 200m de la plage. 4 chambres, 2 salles de bain, jardin clos. Parfaite pour vacances en famille. Location ?? la semaine ou au mois.', 200.00, 120.00, 5, 4, 2, 1, 1980, 'Avenue de la Plage', 'Arcachon', '33120', 'Gironde', 'Nouvelle-Aquitaine', 'France', 44.66611100, -1.16583300, '{\"proche_plage\": true, \"jardin\": true, \"parking\": true, \"location_semaine\": true, \"chauffage\": \"gaz\"}', '2025-10-27 02:05:31', '2025-10-26 22:05:31', '2025-10-26 22:05:31', NULL, 'publiee', 0, NULL, 234, 45, 1);

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

--
-- Structure de la table `avis`
--

CREATE TABLE `avis` (
  `id` int(11) NOT NULL,
  `annonce_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `note` int(11) NOT NULL,
  `commentaire` text COLLATE utf8mb4_unicode_ci,
  `date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modere` tinyint(1) NOT NULL DEFAULT '0',
  `valide` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

--
-- Structure de la table `categories_biens`
--

CREATE TABLE `categories_biens` (
  `id` int(11) NOT NULL,
  `nom` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `icone` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ordre_affichage` int(11) DEFAULT '0',
  `actif` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `categories_biens` (`id`, `nom`, `description`, `icone`, `ordre_affichage`, `actif`) VALUES
(1, 'Appartement', 'Appartements et studios', 'fas fa-building', 1, 1),
(2, 'Maison', 'Maisons individuelles', 'fas fa-home', 2, 1),
(3, 'Villa', 'Villas et propriétés de luxe', 'fas fa-crown', 3, 1),
(4, 'Terrain', 'Terrains constructibles et non constructibles', 'fas fa-map', 4, 1),
(5, 'Local Commercial', 'Locaux commerciaux et bureaux', 'fas fa-store', 5, 1),
(6, 'Garage', 'Garages et parkings', 'fas fa-car', 6, 1);

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

--
-- Structure de la table `contacts`
--

CREATE TABLE `contacts` (
  `id` int(11) NOT NULL,
  `annonce_id` int(11) NOT NULL,
  `expediteur_id` int(11) DEFAULT NULL,
  `nom` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `telephone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `message` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `date_envoi` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `lu` tinyint(1) NOT NULL DEFAULT '0',
  `repondu` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

--
-- Structure de la table `favoris`
--

CREATE TABLE `favoris` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `annonce_id` int(11) NOT NULL,
  `date_ajout` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

--
-- Structure de la table `localites_algerie`
--

CREATE TABLE `localites_algerie` (
  `id` int(11) NOT NULL,
  `nom` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `nom_ar` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `type` enum('wilaya','daira','commune') COLLATE utf8mb4_unicode_ci NOT NULL,
  `code_wilaya` varchar(2) COLLATE utf8mb4_unicode_ci NOT NULL,
  `code_postal` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  `population` int(11) DEFAULT NULL,
  `latitude` decimal(10,8) DEFAULT NULL,
  `longitude` decimal(11,8) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `localites_algerie` (`id`, `nom`, `nom_ar`, `type`, `code_wilaya`, `code_postal`, `parent_id`, `population`, `latitude`, `longitude`) VALUES
(1, 'Adrar', '??????????', 'wilaya', '01', NULL, NULL, 402197, 27.87410000, -0.28360000),
(2, 'Chlef', '??????????', 'wilaya', '02', NULL, NULL, 1002088, 36.16470000, 1.33470000),
(3, 'Laghouat', '??????????????', 'wilaya', '03', NULL, NULL, 477328, 33.80000000, 2.86670000),
(4, 'Oum El Bouaghi', '???? ??????????????', 'wilaya', '04', NULL, NULL, 621612, 35.87530000, 7.11360000),
(5, 'Batna', '??????????', 'wilaya', '05', NULL, NULL, 1119791, 35.55590000, 6.17420000),
(6, 'B??ja??a', '??????????', 'wilaya', '06', NULL, NULL, 912577, 36.75250000, 5.05560000),
(7, 'Biskra', '??????????', 'wilaya', '07', NULL, NULL, 721356, 34.85000000, 5.72420000),
(8, 'B??char', '????????', 'wilaya', '08', NULL, NULL, 270061, 31.61670000, -2.21670000),
(9, 'Blida', '??????????????', 'wilaya', '09', NULL, NULL, 1002937, 36.47030000, 2.82780000),
(10, 'Bouira', '??????????????', 'wilaya', '10', NULL, NULL, 695583, 36.36890000, 3.90190000),
(11, 'Tamanrasset', '??????????????', 'wilaya', '11', NULL, NULL, 198691, 22.78500000, 5.52280000),
(12, 'T??bessa', '????????', 'wilaya', '12', NULL, NULL, 648703, 35.40420000, 8.12420000),
(13, 'Tlemcen', '????????????', 'wilaya', '13', NULL, NULL, 949135, 34.87830000, -1.31500000),
(14, 'Tiaret', '??????????', 'wilaya', '14', NULL, NULL, 846823, 35.37110000, 1.32250000),
(15, 'Tizi Ouzou', '???????? ??????', 'wilaya', '15', NULL, NULL, 1127607, 36.70000000, 4.05000000),
(16, 'Alger', '??????????????', 'wilaya', '16', NULL, NULL, 2988145, 36.75380000, 3.05880000),
(17, 'Djelfa', '????????????', 'wilaya', '17', NULL, NULL, 1092184, 34.67030000, 3.25000000),
(18, 'Jijel', '????????', 'wilaya', '18', NULL, NULL, 636948, 36.82000000, 5.76670000),
(19, 'S??tif', '????????', 'wilaya', '19', NULL, NULL, 1496150, 36.19000000, 5.41000000),
(20, 'Sa??da', '??????????', 'wilaya', '20', NULL, NULL, 330641, 34.84110000, 0.15140000),
(21, 'Skikda', '????????????', 'wilaya', '21', NULL, NULL, 898680, 36.87610000, 6.90890000),
(22, 'Sidi Bel Abb??s', '???????? ????????????', 'wilaya', '22', NULL, NULL, 604744, 35.19060000, -0.63060000),
(23, 'Annaba', '??????????', 'wilaya', '23', NULL, NULL, 609499, 36.90000000, 7.76670000),
(24, 'Guelma', '??????????', 'wilaya', '24', NULL, NULL, 482430, 36.46670000, 7.43330000),
(25, 'Constantine', '??????????????', 'wilaya', '25', NULL, NULL, 938475, 36.36500000, 6.61470000),
(26, 'M??d??a', '????????????', 'wilaya', '26', NULL, NULL, 819932, 36.26390000, 2.75390000),
(27, 'Mostaganem', '??????????????', 'wilaya', '27', NULL, NULL, 737118, 35.93170000, 0.08920000),
(28, 'M\'Sila', '??????????????', 'wilaya', '28', NULL, NULL, 990591, 35.70560000, 4.54220000),
(29, 'Mascara', '??????????', 'wilaya', '29', NULL, NULL, 784073, 35.39500000, 0.14000000),
(30, 'Ouargla', '??????????', 'wilaya', '30', NULL, NULL, 558558, 31.94890000, 5.32500000),
(31, 'Oran', '??????????', 'wilaya', '31', NULL, NULL, 1454078, 35.69690000, -0.63310000),
(32, 'El Bayadh', '??????????', 'wilaya', '32', NULL, NULL, 228624, 33.68330000, 1.01670000),
(33, 'Illizi', '??????????', 'wilaya', '33', NULL, NULL, 54490, 26.50690000, 8.46720000),
(34, 'Bordj Bou Arreridj', '?????? ????????????????', 'wilaya', '34', NULL, NULL, 628475, 36.07440000, 4.76970000),
(35, 'Boumerd??s', '??????????????', 'wilaya', '35', NULL, NULL, 802083, 36.76640000, 3.47220000),
(36, 'El Tarf', '????????????', 'wilaya', '36', NULL, NULL, 408414, 36.76720000, 8.31390000),
(37, 'Tindouf', '??????????', 'wilaya', '37', NULL, NULL, 58193, 27.67110000, -8.14750000),
(38, 'Tissemsilt', '????????????????', 'wilaya', '38', NULL, NULL, 296366, 35.60500000, 1.81030000),
(39, 'El Oued', '????????????', 'wilaya', '39', NULL, NULL, 647548, 33.36860000, 6.86860000),
(40, 'Khenchela', '??????????', 'wilaya', '40', NULL, NULL, 386683, 35.43610000, 7.14330000),
(41, 'Souk Ahras', '?????? ??????????', 'wilaya', '41', NULL, NULL, 438127, 36.28640000, 7.95110000),
(42, 'Tipaza', '????????????', 'wilaya', '42', NULL, NULL, 591010, 36.58920000, 2.44580000),
(43, 'Mila', '????????', 'wilaya', '43', NULL, NULL, 768419, 36.45030000, 6.26420000),
(44, 'A??n Defla', '?????? ????????????', 'wilaya', '44', NULL, NULL, 766013, 36.26390000, 1.96810000),
(45, 'Na??ma', '??????????????', 'wilaya', '45', NULL, NULL, 192891, 33.26670000, -0.31670000),
(46, 'A??n T??mouchent', '?????? ????????????', 'wilaya', '46', NULL, NULL, 371239, 35.29920000, -1.13970000),
(47, 'Gharda??a', '????????????', 'wilaya', '47', NULL, NULL, 363598, 32.49110000, 3.67110000),
(48, 'Relizane', '????????????', 'wilaya', '48', NULL, NULL, 726180, 35.73720000, 0.55580000),
(49, 'Timimoun', '??????????????', 'wilaya', '49', NULL, NULL, 92000, 29.26310000, 0.24080000),
(50, 'Bordj Badji Mokhtar', '?????? ???????? ??????????', 'wilaya', '50', NULL, NULL, 16437, 21.32780000, 0.95390000),
(51, 'Ouled Djellal', '?????????? ????????', 'wilaya', '51', NULL, NULL, 105000, 34.41470000, 4.97060000),
(52, 'B??ni Abb??s', '?????? ????????', 'wilaya', '52', NULL, NULL, 50163, 30.13080000, -2.16690000),
(53, 'In Salah', '?????? ????????', 'wilaya', '53', NULL, NULL, 43000, 27.21190000, 2.46030000),
(54, 'In Guezzam', '?????? ????????', 'wilaya', '54', NULL, NULL, 11202, 19.56670000, 5.76670000),
(55, 'Touggourt', '????????', 'wilaya', '55', NULL, NULL, 160000, 33.10670000, 6.05890000),
(56, 'Djanet', '????????', 'wilaya', '56', NULL, NULL, 17618, 24.55390000, 9.48440000),
(57, 'El M\'Ghair', '????????????', 'wilaya', '57', NULL, NULL, 130000, 33.95330000, 5.92390000),
(58, 'El Meniaa', '??????????????', 'wilaya', '58', NULL, NULL, 52924, 30.58330000, 2.88330000),
(59, 'Adrar', '??????????', 'wilaya', '01', NULL, NULL, 402197, 27.87410000, -0.28360000),
(60, 'Chlef', '??????????', 'wilaya', '02', NULL, NULL, 1002088, 36.16470000, 1.33470000),
(61, 'Laghouat', '??????????????', 'wilaya', '03', NULL, NULL, 477328, 33.80000000, 2.86670000),
(62, 'Oum El Bouaghi', '???? ??????????????', 'wilaya', '04', NULL, NULL, 621612, 35.87530000, 7.11360000),
(63, 'Batna', '??????????', 'wilaya', '05', NULL, NULL, 1119791, 35.55590000, 6.17420000),
(64, 'B??ja??a', '??????????', 'wilaya', '06', NULL, NULL, 912577, 36.75250000, 5.05560000),
(65, 'Biskra', '??????????', 'wilaya', '07', NULL, NULL, 721356, 34.85000000, 5.72420000),
(66, 'B??char', '????????', 'wilaya', '08', NULL, NULL, 270061, 31.61670000, -2.21670000),
(67, 'Blida', '??????????????', 'wilaya', '09', NULL, NULL, 1002937, 36.47030000, 2.82780000),
(68, 'Bouira', '??????????????', 'wilaya', '10', NULL, NULL, 695583, 36.36890000, 3.90190000),
(69, 'Tamanrasset', '??????????????', 'wilaya', '11', NULL, NULL, 198691, 22.78500000, 5.52280000),
(70, 'T??bessa', '????????', 'wilaya', '12', NULL, NULL, 648703, 35.40420000, 8.12420000),
(71, 'Tlemcen', '????????????', 'wilaya', '13', NULL, NULL, 949135, 34.87830000, -1.31500000),
(72, 'Tiaret', '??????????', 'wilaya', '14', NULL, NULL, 846823, 35.37110000, 1.32250000),
(73, 'Tizi Ouzou', '???????? ??????', 'wilaya', '15', NULL, NULL, 1127607, 36.70000000, 4.05000000),
(74, 'Alger', '??????????????', 'wilaya', '16', NULL, NULL, 2988145, 36.75380000, 3.05880000),
(75, 'Djelfa', '????????????', 'wilaya', '17', NULL, NULL, 1092184, 34.67030000, 3.25000000),
(76, 'Jijel', '????????', 'wilaya', '18', NULL, NULL, 636948, 36.82000000, 5.76670000),
(77, 'S??tif', '????????', 'wilaya', '19', NULL, NULL, 1496150, 36.19000000, 5.41000000),
(78, 'Sa??da', '??????????', 'wilaya', '20', NULL, NULL, 330641, 34.84110000, 0.15140000),
(79, 'Skikda', '????????????', 'wilaya', '21', NULL, NULL, 898680, 36.87610000, 6.90890000),
(80, 'Sidi Bel Abb??s', '???????? ????????????', 'wilaya', '22', NULL, NULL, 604744, 35.19060000, -0.63060000),
(81, 'Annaba', '??????????', 'wilaya', '23', NULL, NULL, 609499, 36.90000000, 7.76670000),
(82, 'Guelma', '??????????', 'wilaya', '24', NULL, NULL, 482430, 36.46670000, 7.43330000),
(83, 'Constantine', '??????????????', 'wilaya', '25', NULL, NULL, 938475, 36.36500000, 6.61470000),
(84, 'M??d??a', '????????????', 'wilaya', '26', NULL, NULL, 819932, 36.26390000, 2.75390000),
(85, 'Mostaganem', '??????????????', 'wilaya', '27', NULL, NULL, 737118, 35.93170000, 0.08920000),
(86, 'M\'Sila', '??????????????', 'wilaya', '28', NULL, NULL, 990591, 35.70560000, 4.54220000),
(87, 'Mascara', '??????????', 'wilaya', '29', NULL, NULL, 784073, 35.39500000, 0.14000000),
(88, 'Ouargla', '??????????', 'wilaya', '30', NULL, NULL, 558558, 31.94890000, 5.32500000),
(89, 'Oran', '??????????', 'wilaya', '31', NULL, NULL, 1454078, 35.69690000, -0.63310000),
(90, 'El Bayadh', '??????????', 'wilaya', '32', NULL, NULL, 228624, 33.68330000, 1.01670000),
(91, 'Illizi', '??????????', 'wilaya', '33', NULL, NULL, 54490, 26.50690000, 8.46720000),
(92, 'Bordj Bou Arreridj', '?????? ????????????????', 'wilaya', '34', NULL, NULL, 628475, 36.07440000, 4.76970000),
(93, 'Boumerd??s', '??????????????', 'wilaya', '35', NULL, NULL, 802083, 36.76640000, 3.47220000),
(94, 'El Tarf', '????????????', 'wilaya', '36', NULL, NULL, 408414, 36.76720000, 8.31390000),
(95, 'Tindouf', '??????????', 'wilaya', '37', NULL, NULL, 58193, 27.67110000, -8.14750000),
(96, 'Tissemsilt', '????????????????', 'wilaya', '38', NULL, NULL, 296366, 35.60500000, 1.81030000),
(97, 'El Oued', '????????????', 'wilaya', '39', NULL, NULL, 647548, 33.36860000, 6.86860000),
(98, 'Khenchela', '??????????', 'wilaya', '40', NULL, NULL, 386683, 35.43610000, 7.14330000),
(99, 'Souk Ahras', '?????? ??????????', 'wilaya', '41', NULL, NULL, 438127, 36.28640000, 7.95110000),
(100, 'Tipaza', '????????????', 'wilaya', '42', NULL, NULL, 591010, 36.58920000, 2.44580000),
(101, 'Mila', '????????', 'wilaya', '43', NULL, NULL, 768419, 36.45030000, 6.26420000),
(102, 'A??n Defla', '?????? ????????????', 'wilaya', '44', NULL, NULL, 766013, 36.26390000, 1.96810000),
(103, 'Na??ma', '??????????????', 'wilaya', '45', NULL, NULL, 192891, 33.26670000, -0.31670000),
(104, 'A??n T??mouchent', '?????? ????????????', 'wilaya', '46', NULL, NULL, 371239, 35.29920000, -1.13970000),
(105, 'Gharda??a', '????????????', 'wilaya', '47', NULL, NULL, 363598, 32.49110000, 3.67110000),
(106, 'Relizane', '????????????', 'wilaya', '48', NULL, NULL, 726180, 35.73720000, 0.55580000),
(107, 'Timimoun', '??????????????', 'wilaya', '49', NULL, NULL, 92000, 29.26310000, 0.24080000),
(108, 'Bordj Badji Mokhtar', '?????? ???????? ??????????', 'wilaya', '50', NULL, NULL, 16437, 21.32780000, 0.95390000),
(109, 'Ouled Djellal', '?????????? ????????', 'wilaya', '51', NULL, NULL, 105000, 34.41470000, 4.97060000),
(110, 'B??ni Abb??s', '?????? ????????', 'wilaya', '52', NULL, NULL, 50163, 30.13080000, -2.16690000),
(111, 'In Salah', '?????? ????????', 'wilaya', '53', NULL, NULL, 43000, 27.21190000, 2.46030000),
(112, 'In Guezzam', '?????? ????????', 'wilaya', '54', NULL, NULL, 11202, 19.56670000, 5.76670000),
(113, 'Touggourt', '????????', 'wilaya', '55', NULL, NULL, 160000, 33.10670000, 6.05890000),
(114, 'Djanet', '????????', 'wilaya', '56', NULL, NULL, 17618, 24.55390000, 9.48440000),
(115, 'El M\'Ghair', '????????????', 'wilaya', '57', NULL, NULL, 130000, 33.95330000, 5.92390000),
(116, 'El Meniaa', '??????????????', 'wilaya', '58', NULL, NULL, 52924, 30.58330000, 2.88330000),
(117, 'Alger Centre', NULL, 'commune', '16', '16000', NULL, NULL, NULL, NULL),
(118, 'Bab El Oued', NULL, 'commune', '16', '16030', NULL, NULL, NULL, NULL),
(119, 'Sidi M\'Hamed', NULL, 'commune', '16', '16014', NULL, NULL, NULL, NULL),
(120, 'Birtouta', NULL, 'commune', '16', '16400', NULL, NULL, NULL, NULL),
(121, 'El Biar', NULL, 'commune', '16', '16030', NULL, NULL, NULL, NULL),
(122, 'Hydra', NULL, 'commune', '16', '16035', NULL, NULL, NULL, NULL),
(123, 'Kouba', NULL, 'commune', '16', '16050', NULL, NULL, NULL, NULL),
(124, 'Hussein Dey', NULL, 'commune', '16', '16040', NULL, NULL, NULL, NULL),
(125, 'Birmandreis', NULL, 'commune', '16', '16055', NULL, NULL, NULL, NULL),
(126, 'El Harrach', NULL, 'commune', '16', '16200', NULL, NULL, NULL, NULL),
(127, 'Baraki', NULL, 'commune', '16', '16270', NULL, NULL, NULL, NULL),
(128, 'Dar El Beida', NULL, 'commune', '16', '16100', NULL, NULL, NULL, NULL),
(129, 'Bouzareah', NULL, 'commune', '16', '16340', NULL, NULL, NULL, NULL),
(130, 'Cheraga', NULL, 'commune', '16', '16013', NULL, NULL, NULL, NULL),
(131, 'Draria', NULL, 'commune', '16', '16015', NULL, NULL, NULL, NULL),
(132, 'Zeralda', NULL, 'commune', '16', '16014', NULL, NULL, NULL, NULL),
(133, 'Bab Ezzouar', NULL, 'commune', '16', '16111', NULL, NULL, NULL, NULL),
(134, 'Rouiba', NULL, 'commune', '16', '16012', NULL, NULL, NULL, NULL),
(135, 'Reghaia', NULL, 'commune', '16', '16112', NULL, NULL, NULL, NULL),
(136, 'Ain Benian', NULL, 'commune', '16', '16042', NULL, NULL, NULL, NULL),
(137, 'Oran', NULL, 'commune', '31', '31000', NULL, NULL, NULL, NULL),
(138, 'Bir El Djir', NULL, 'commune', '31', '31130', NULL, NULL, NULL, NULL),
(139, 'Es Senia', NULL, 'commune', '31', '31004', NULL, NULL, NULL, NULL),
(140, 'Arzew', NULL, 'commune', '31', '31200', NULL, NULL, NULL, NULL),
(141, 'Bethioua', NULL, 'commune', '31', '31260', NULL, NULL, NULL, NULL),
(142, 'Hassi Bounif', NULL, 'commune', '31', '31028', NULL, NULL, NULL, NULL),
(143, 'Mers El Kebir', NULL, 'commune', '31', '31100', NULL, NULL, NULL, NULL),
(144, 'Sidi Chami', NULL, 'commune', '31', '31140', NULL, NULL, NULL, NULL),
(145, 'Constantine', NULL, 'commune', '25', '25000', NULL, NULL, NULL, NULL),
(146, 'El Khroub', NULL, 'commune', '25', '25160', NULL, NULL, NULL, NULL),
(147, 'Ain Smara', NULL, 'commune', '25', '25100', NULL, NULL, NULL, NULL),
(148, 'Hamma Bouziane', NULL, 'commune', '25', '25220', NULL, NULL, NULL, NULL),
(149, 'Didouche Mourad', NULL, 'commune', '25', '25240', NULL, NULL, NULL, NULL),
(150, 'Zighoud Youcef', NULL, 'commune', '25', '25230', NULL, NULL, NULL, NULL),
(151, 'Annaba', NULL, 'commune', '23', '23000', NULL, NULL, NULL, NULL),
(152, 'El Bouni', NULL, 'commune', '23', '23210', NULL, NULL, NULL, NULL),
(153, 'Sidi Amar', NULL, 'commune', '23', '23100', NULL, NULL, NULL, NULL),
(154, 'El Hadjar', NULL, 'commune', '23', '23200', NULL, NULL, NULL, NULL),
(155, 'Berrahal', NULL, 'commune', '23', '23230', NULL, NULL, NULL, NULL),
(156, 'Blida', NULL, 'commune', '09', '09000', NULL, NULL, NULL, NULL),
(157, 'Bougara', NULL, 'commune', '09', '09100', NULL, NULL, NULL, NULL),
(158, 'Boufarik', NULL, 'commune', '09', '09200', NULL, NULL, NULL, NULL),
(159, 'Larbaa', NULL, 'commune', '09', '09300', NULL, NULL, NULL, NULL),
(160, 'Meftah', NULL, 'commune', '09', '09400', NULL, NULL, NULL, NULL),
(161, 'Bouinan', NULL, 'commune', '09', '09120', NULL, NULL, NULL, NULL),
(162, 'S??tif', NULL, 'commune', '19', '19000', NULL, NULL, NULL, NULL),
(163, 'El Eulma', NULL, 'commune', '19', '19200', NULL, NULL, NULL, NULL),
(164, 'Ain Oulmene', NULL, 'commune', '19', '19400', NULL, NULL, NULL, NULL),
(165, 'Bougaa', NULL, 'commune', '19', '19300', NULL, NULL, NULL, NULL),
(166, 'Ain Arnat', NULL, 'commune', '19', '19150', NULL, NULL, NULL, NULL),
(167, 'Batna', NULL, 'commune', '05', '05000', NULL, NULL, NULL, NULL),
(168, 'Barika', NULL, 'commune', '05', '05300', NULL, NULL, NULL, NULL),
(169, 'Arris', NULL, 'commune', '05', '05400', NULL, NULL, NULL, NULL),
(170, 'Merouana', NULL, 'commune', '05', '05200', NULL, NULL, NULL, NULL),
(171, 'Ain Touta', NULL, 'commune', '05', '05100', NULL, NULL, NULL, NULL),
(172, 'Tizi Ouzou', NULL, 'commune', '15', '15000', NULL, NULL, NULL, NULL),
(173, 'Azazga', NULL, 'commune', '15', '15300', NULL, NULL, NULL, NULL),
(174, 'Draa Ben Khedda', NULL, 'commune', '15', '15400', NULL, NULL, NULL, NULL),
(175, 'Tigzirt', NULL, 'commune', '15', '15200', NULL, NULL, NULL, NULL),
(176, 'Ain El Hammam', NULL, 'commune', '15', '15100', NULL, NULL, NULL, NULL),
(177, 'B??ja??a', NULL, 'commune', '06', '06000', NULL, NULL, NULL, NULL),
(178, 'Akbou', NULL, 'commune', '06', '06200', NULL, NULL, NULL, NULL),
(179, 'El Kseur', NULL, 'commune', '06', '06100', NULL, NULL, NULL, NULL),
(180, 'Amizour', NULL, 'commune', '06', '06300', NULL, NULL, NULL, NULL),
(181, 'Sidi Aich', NULL, 'commune', '06', '06400', NULL, NULL, NULL, NULL),
(182, 'Tlemcen', NULL, 'commune', '13', '13000', NULL, NULL, NULL, NULL),
(183, 'Maghnia', NULL, 'commune', '13', '13300', NULL, NULL, NULL, NULL),
(184, 'Ghazaouet', NULL, 'commune', '13', '13100', NULL, NULL, NULL, NULL),
(185, 'Remchi', NULL, 'commune', '13', '13200', NULL, NULL, NULL, NULL),
(186, 'Sabra', NULL, 'commune', '13', '13150', NULL, NULL, NULL, NULL),
(187, 'Biskra', NULL, 'commune', '07', '07000', NULL, NULL, NULL, NULL),
(188, 'Tolga', NULL, 'commune', '07', '07100', NULL, NULL, NULL, NULL),
(189, 'Sidi Okba', NULL, 'commune', '07', '07200', NULL, NULL, NULL, NULL),
(190, 'Ouled Djellal', NULL, 'commune', '07', '07300', NULL, NULL, NULL, NULL),
(191, 'El Outaya', NULL, 'commune', '07', '07400', NULL, NULL, NULL, NULL),
(192, 'Chlef', NULL, 'commune', '02', '02000', NULL, NULL, NULL, NULL),
(193, 'T??n??s', NULL, 'commune', '02', '02200', NULL, NULL, NULL, NULL),
(194, 'Boukadir', NULL, 'commune', '02', '02300', NULL, NULL, NULL, NULL),
(195, 'El Karimia', NULL, 'commune', '02', '02100', NULL, NULL, NULL, NULL),
(196, 'Mostaganem', NULL, 'commune', '27', '27000', NULL, NULL, NULL, NULL),
(197, 'Ain Tedles', NULL, 'commune', '27', '27100', NULL, NULL, NULL, NULL),
(198, 'Hassi Mam??che', NULL, 'commune', '27', '27200', NULL, NULL, NULL, NULL),
(199, 'Tipaza', NULL, 'commune', '42', '42000', NULL, NULL, NULL, NULL),
(200, 'Kolea', NULL, 'commune', '42', '42100', NULL, NULL, NULL, NULL),
(201, 'Cherchell', NULL, 'commune', '42', '42200', NULL, NULL, NULL, NULL),
(202, 'Hadjout', NULL, 'commune', '42', '42300', NULL, NULL, NULL, NULL),
(203, 'Damous', NULL, 'commune', '42', '42400', NULL, NULL, NULL, NULL),
(204, 'Boumerd??s', NULL, 'commune', '35', '35000', NULL, NULL, NULL, NULL),
(205, 'Dellys', NULL, 'commune', '35', '35200', NULL, NULL, NULL, NULL),
(206, 'Bordj Menaiel', NULL, 'commune', '35', '35300', NULL, NULL, NULL, NULL),
(207, 'Thenia', NULL, 'commune', '35', '35100', NULL, NULL, NULL, NULL);

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

--
-- Structure de la table `parametres_systeme`
--

CREATE TABLE `parametres_systeme` (
  `id` int(11) NOT NULL,
  `cle` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `valeur` text COLLATE utf8mb4_unicode_ci,
  `description` text COLLATE utf8mb4_unicode_ci,
  `type` enum('string','integer','boolean','text') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'string',
  `date_modification` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `parametres_systeme` (`id`, `cle`, `valeur`, `description`, `type`, `date_modification`) VALUES
(1, 'site_nom', 'Reoleweb Immobilier', 'Nom du site', 'string', '2025-10-25 20:35:52'),
(2, 'max_annonces_particulier', '3', 'Nombre maximum d\'annonces pour un particulier', 'integer', '2025-10-25 20:35:52'),
(3, 'max_annonces_agent_standard', '10', 'Nombre maximum d\'annonces pour un agent standard', 'integer', '2025-10-25 20:35:52'),
(4, 'duree_validite_annonce', '90', 'Durée de validité d\'une annonce en jours', 'integer', '2025-10-25 20:35:52'),
(5, 'moderation_active', '1', 'Active la modération des annonces', 'boolean', '2025-10-25 20:35:52'),
(6, 'email_admin', 'admin@reoleweb.com', 'Email de l\'administrateur', 'string', '2025-10-25 20:35:52');

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

--
-- Structure de la table `photos_annonces`
--

CREATE TABLE `photos_annonces` (
  `id` int(11) NOT NULL,
  `annonce_id` int(11) NOT NULL,
  `nom_fichier` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `chemin_fichier` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL,
  `alt_text` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ordre_affichage` int(11) DEFAULT '0',
  `principale` tinyint(1) NOT NULL DEFAULT '0',
  `date_upload` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

--
-- Structure de la table `roles`
--

CREATE TABLE `roles` (
  `id` int(11) NOT NULL,
  `nom_role` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `niveau_acces` int(11) NOT NULL DEFAULT '1',
  `permissions` text COLLATE utf8mb4_unicode_ci,
  `date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `actif` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `roles` (`id`, `nom_role`, `description`, `niveau_acces`, `permissions`, `date_creation`, `actif`) VALUES
(1, 'Super Administrateur', 'Accès complet à toutes les fonctionnalités', 100, '{\"manage_all\": true, \"manage_users\": true, \"manage_settings\": true, \"view_stats\": true}', '2025-10-25 20:35:52', 1),
(2, 'Administrateur', 'Gestion des annonces et utilisateurs', 80, '{\"manage_listings\": true, \"manage_users\": true, \"moderate_content\": true, \"view_reports\": true}', '2025-10-25 20:35:52', 1),
(3, 'Modérateur', 'Validation des annonces et modération', 60, '{\"validate_listings\": true, \"moderate_comments\": true, \"handle_reports\": true}', '2025-10-25 20:35:52', 1),
(4, 'Agent Premium', 'Agent immobilier avec accès étendu', 50, '{\"unlimited_listings\": true, \"premium_features\": true, \"detailed_stats\": true}', '2025-10-25 20:35:52', 1),
(5, 'Agent Standard', 'Agent immobilier standard', 40, '{\"limited_listings\": true, \"basic_stats\": true, \"manage_own_listings\": true}', '2025-10-25 20:35:52', 1),
(6, 'Particulier', 'Utilisateur particulier', 20, '{\"limited_listings\": true, \"manage_own_listings\": true}', '2025-10-25 20:35:52', 1),
(7, 'Visiteur', 'Utilisateur visiteur', 10, '{\"view_listings\": true, \"contact_sellers\": true}', '2025-10-25 20:35:52', 1);

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

--
-- Structure de la table `statistiques_vues`
--

CREATE TABLE `statistiques_vues` (
  `id` int(11) NOT NULL,
  `annonce_id` int(11) NOT NULL,
  `user_id` int(11) DEFAULT NULL,
  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_agent` text COLLATE utf8mb4_unicode_ci,
  `date_vue` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

--
-- Structure de la table `types_transaction`
--

CREATE TABLE `types_transaction` (
  `id` int(11) NOT NULL,
  `nom` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `types_transaction` (`id`, `nom`, `description`) VALUES
(1, 'Vente', 'Vente définitive du bien'),
(2, 'Location', 'Location du bien'),
(3, 'Location saisonnière', 'Location courte durée');

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

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

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `role_id` int(11) NOT NULL DEFAULT '7',
  `prenom` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `nom` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `telephone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `adresse` text COLLATE utf8mb4_unicode_ci,
  `ville` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `code_postal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `pays` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'France',
  `photo_profil` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `siret` varchar(14) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `nom_agence` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `licence_immobiliere` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `specialites` text COLLATE utf8mb4_unicode_ci,
  `max_annonces` int(11) DEFAULT NULL,
  `date_abonnement` datetime DEFAULT NULL,
  `date_expiration_abonnement` datetime DEFAULT NULL,
  `zones_intervention` text COLLATE utf8mb4_unicode_ci,
  `preferences_notifications` text COLLATE utf8mb4_unicode_ci,
  `date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `derniere_connexion` datetime DEFAULT NULL,
  `actif` tinyint(1) NOT NULL DEFAULT '1',
  `email_verifie` tinyint(1) NOT NULL DEFAULT '0',
  `telephone_verifie` tinyint(1) NOT NULL DEFAULT '0',
  `remember_token` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `remember_expires` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `users` (`id`, `username`, `email`, `password`, `role_id`, `prenom`, `nom`, `telephone`, `adresse`, `ville`, `code_postal`, `pays`, `photo_profil`, `description`, `siret`, `nom_agence`, `licence_immobiliere`, `specialites`, `max_annonces`, `date_abonnement`, `date_expiration_abonnement`, `zones_intervention`, `preferences_notifications`, `date_creation`, `derniere_connexion`, `actif`, `email_verifie`, `telephone_verifie`, `remember_token`, `remember_expires`) VALUES
(1, 'tarssinas', 'zerzih@hotmail.com', '$2y$10$0hiNaoLBRJCL0VDqG2yKa.8kmAwCKtFWxhy0LxisPS4w4/rcA8LMm', 1, 'AHMED', 'ZERZIH', '+33123456789', '123 Rue de la Paix', 'Paris', '75001', 'France', NULL, NULL, '12345678900001', 'Agence Immobili??re ZA', NULL, '[\"Vente\"]', -1, '2025-10-25 16:48:05', '2026-10-25 16:48:05', NULL, '{\"email_nouvelles_annonces\": true, \"email_messages\": true, \"email_alertes\": true, \"sms_messages\": false}', '2025-10-25 20:48:05', '2025-11-01 04:06:29', 1, 1, 0, NULL, NULL),
(2, 'jdupont', 'jean.dupont@email.com', '$2y$10$0hiNaoLBRJCL0VDqG2yKa.8kmAwCKtFWxhy0LxisPS4w4/rcA8LMm', 5, 'Jean', 'Dupont', '+33123456790', '15 Rue de la Paix', 'Paris', '75001', 'France', NULL, 'Agent immobilier spécialisé dans le résidentiel', '12345678900002', 'Agence Immobili??re DJ', NULL, '[\"Vente\", \"Location\"]', 10, '2025-10-25 17:43:36', '2026-10-25 17:43:36', NULL, '{\"email_nouvelles_annonces\": true, \"email_messages\": true, \"email_alertes\": true, \"sms_messages\": false}', '2025-10-25 21:43:36', NULL, 1, 1, 0, NULL, NULL),
(3, 'mmartin', 'marie.martin@email.com', '$2y$10$0hiNaoLBRJCL0VDqG2yKa.8kmAwCKtFWxhy0LxisPS4w4/rcA8LMm', 4, 'Marie', 'Martin', '+33123456791', '25 Avenue des Champs', 'Lyon', '69001', 'France', NULL, 'Agent premium avec 10 ans d\'expérience', '12345678900003', 'Agence Immobili??re MM', NULL, '[\"Vente\", \"Location\", \"Gestion locative\", \"Estimation\"]', -1, '2025-10-25 17:43:36', '2026-10-25 17:43:36', NULL, '{\"email_nouvelles_annonces\": true, \"email_messages\": true, \"email_alertes\": true, \"sms_messages\": false}', '2025-10-25 21:43:36', '2025-10-26 14:46:23', 1, 1, 0, NULL, NULL),
(4, 'pbernard', 'pierre.bernard@email.com', '$2y$10$0hiNaoLBRJCL0VDqG2yKa.8kmAwCKtFWxhy0LxisPS4w4/rcA8LMm', 6, 'Pierre', 'Bernard', '+33123456792', '8 Rue de la République', 'Marseille', '13001', 'France', NULL, 'Particulier recherchant un appartement', NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, '{\"email_nouvelles_annonces\": true, \"email_messages\": true, \"email_alertes\": true, \"sms_messages\": false}', '2025-10-25 21:43:36', NULL, 1, 1, 0, NULL, NULL),
(5, 'sdurand', 'sophie.durand@email.com', '$2y$10$0hiNaoLBRJCL0VDqG2yKa.8kmAwCKtFWxhy0LxisPS4w4/rcA8LMm', 3, 'Sophie', 'Durand', '+33123456793', '42 Boulevard Saint-Germain', 'Toulouse', '31000', 'France', NULL, 'Modératrice des annonces immobilières', '12345678900005', 'Agence Immobili??re DS', NULL, '[\"Vente\"]', 1, '2025-10-25 17:43:36', '2026-10-25 17:43:36', NULL, '{\"email_nouvelles_annonces\": true, \"email_messages\": true, \"email_alertes\": true, \"sms_messages\": false}', '2025-10-25 21:43:36', NULL, 1, 1, 0, NULL, NULL),
(6, 'rleroy', 'robert.leroy@email.com', '$2y$10$0hiNaoLBRJCL0VDqG2yKa.8kmAwCKtFWxhy0LxisPS4w4/rcA8LMm', 2, 'Robert', 'Leroy', '+33123456794', '123 Rue de Rivoli', 'Nice', '06000', 'France', NULL, 'Administrateur du système immobilier', '12345678900006', 'Agence Immobili??re LR', NULL, '[\"Vente\"]', -1, '2025-10-25 17:43:36', '2026-10-25 17:43:36', NULL, '{\"email_nouvelles_annonces\": true, \"email_messages\": true, \"email_alertes\": true, \"sms_messages\": false}', '2025-10-25 21:43:36', NULL, 1, 1, 0, NULL, NULL),
(7, 'lmichel', 'lucie.michel@email.com', '$2y$10$0hiNaoLBRJCL0VDqG2yKa.8kmAwCKtFWxhy0LxisPS4w4/rcA8LMm', 7, 'Lucie', 'Michel', '+33123456795', '67 Avenue de la Liberté', 'Bordeaux', '33000', 'France', NULL, 'Visiteuse intéressée par l\'immobilier', NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, '{\"email_nouvelles_annonces\": true, \"email_messages\": true, \"email_alertes\": true, \"sms_messages\": false}', '2025-10-25 21:43:36', '2025-10-29 22:32:50', 1, 1, 0, NULL, NULL);

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

--
-- Doublure de structure pour la vue `vue_professionnels`
-- (Voir ci-dessous la vue réelle)
--
CREATE TABLE `vue_professionnels` (
`id` int(11)
,`username` varchar(50)
,`email` varchar(100)
,`password` varchar(255)
,`role_id` int(11)
,`prenom` varchar(50)
,`nom` varchar(50)
,`telephone` varchar(20)
,`adresse` text
,`ville` varchar(50)
,`code_postal` varchar(10)
,`pays` varchar(50)
,`photo_profil` varchar(255)
,`description` text
,`siret` varchar(14)
,`nom_agence` varchar(100)
,`licence_immobiliere` varchar(50)
,`specialites` text
,`max_annonces` int(11)
,`date_abonnement` datetime
,`date_expiration_abonnement` datetime
,`zones_intervention` text
,`preferences_notifications` text
,`date_creation` timestamp
,`derniere_connexion` datetime
,`actif` tinyint(1)
,`email_verifie` tinyint(1)
,`telephone_verifie` tinyint(1)
,`nom_role` varchar(50)
,`niveau_acces` int(11)
,`permissions` text
);

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

--
-- Structure de la vue `vue_professionnels`
--
DROP TABLE IF EXISTS `vue_professionnels`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vue_professionnels`  AS SELECT `u`.`id` AS `id`, `u`.`username` AS `username`, `u`.`email` AS `email`, `u`.`password` AS `password`, `u`.`role_id` AS `role_id`, `u`.`prenom` AS `prenom`, `u`.`nom` AS `nom`, `u`.`telephone` AS `telephone`, `u`.`adresse` AS `adresse`, `u`.`ville` AS `ville`, `u`.`code_postal` AS `code_postal`, `u`.`pays` AS `pays`, `u`.`photo_profil` AS `photo_profil`, `u`.`description` AS `description`, `u`.`siret` AS `siret`, `u`.`nom_agence` AS `nom_agence`, `u`.`licence_immobiliere` AS `licence_immobiliere`, `u`.`specialites` AS `specialites`, `u`.`max_annonces` AS `max_annonces`, `u`.`date_abonnement` AS `date_abonnement`, `u`.`date_expiration_abonnement` AS `date_expiration_abonnement`, `u`.`zones_intervention` AS `zones_intervention`, `u`.`preferences_notifications` AS `preferences_notifications`, `u`.`date_creation` AS `date_creation`, `u`.`derniere_connexion` AS `derniere_connexion`, `u`.`actif` AS `actif`, `u`.`email_verifie` AS `email_verifie`, `u`.`telephone_verifie` AS `telephone_verifie`, `r`.`nom_role` AS `nom_role`, `r`.`niveau_acces` AS `niveau_acces`, `r`.`permissions` AS `permissions` FROM (`users` `u` join `roles` `r` on((`u`.`role_id` = `r`.`id`))) WHERE (`r`.`niveau_acces` >= 40) ;

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

--
-- Index pour la table `alertes_recherche`
--
ALTER TABLE `alertes_recherche`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_id` (`user_id`);

--
-- Index pour la table `annonces`
--
ALTER TABLE `annonces`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_id` (`user_id`),
  ADD KEY `categorie_id` (`categorie_id`),
  ADD KEY `type_transaction_id` (`type_transaction_id`),
  ADD KEY `ville` (`ville`),
  ADD KEY `prix` (`prix`),
  ADD KEY `statut` (`statut`),
  ADD KEY `date_publication` (`date_publication`),
  ADD KEY `idx_annonces_search` (`ville`,`type_transaction_id`,`categorie_id`,`prix`,`statut`),
  ADD KEY `idx_annonces_location` (`latitude`,`longitude`);

--
-- Index pour la table `avis`
--
ALTER TABLE `avis`
  ADD PRIMARY KEY (`id`),
  ADD KEY `annonce_id` (`annonce_id`),
  ADD KEY `user_id` (`user_id`);

--
-- Index pour la table `categories_biens`
--
ALTER TABLE `categories_biens`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `contacts`
--
ALTER TABLE `contacts`
  ADD PRIMARY KEY (`id`),
  ADD KEY `annonce_id` (`annonce_id`),
  ADD KEY `expediteur_id` (`expediteur_id`);

--
-- Index pour la table `favoris`
--
ALTER TABLE `favoris`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `user_annonce` (`user_id`,`annonce_id`),
  ADD KEY `user_id` (`user_id`),
  ADD KEY `annonce_id` (`annonce_id`);

--
-- Index pour la table `localites_algerie`
--
ALTER TABLE `localites_algerie`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_nom` (`nom`),
  ADD KEY `idx_type` (`type`),
  ADD KEY `idx_code_wilaya` (`code_wilaya`),
  ADD KEY `idx_parent` (`parent_id`);

--
-- Index pour la table `parametres_systeme`
--
ALTER TABLE `parametres_systeme`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `cle` (`cle`);

--
-- Index pour la table `photos_annonces`
--
ALTER TABLE `photos_annonces`
  ADD PRIMARY KEY (`id`),
  ADD KEY `annonce_id` (`annonce_id`);

--
-- Index pour la table `roles`
--
ALTER TABLE `roles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `nom_role` (`nom_role`);

--
-- Index pour la table `statistiques_vues`
--
ALTER TABLE `statistiques_vues`
  ADD PRIMARY KEY (`id`),
  ADD KEY `annonce_id` (`annonce_id`),
  ADD KEY `user_id` (`user_id`),
  ADD KEY `date_vue` (`date_vue`);

--
-- Index pour la table `types_transaction`
--
ALTER TABLE `types_transaction`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `username` (`username`),
  ADD UNIQUE KEY `email` (`email`),
  ADD KEY `role_id` (`role_id`),
  ADD KEY `idx_users_role_actif` (`role_id`,`actif`),
  ADD KEY `idx_users_email_verified` (`email`,`email_verifie`),
  ADD KEY `idx_users_subscription` (`date_abonnement`,`date_expiration_abonnement`),
  ADD KEY `idx_remember_token` (`remember_token`);

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

--
-- AUTO_INCREMENT pour la table `alertes_recherche`
--
ALTER TABLE `alertes_recherche`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `annonces`
--
ALTER TABLE `annonces`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=43;

--
-- AUTO_INCREMENT pour la table `avis`
--
ALTER TABLE `avis`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `categories_biens`
--
ALTER TABLE `categories_biens`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT pour la table `contacts`
--
ALTER TABLE `contacts`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `favoris`
--
ALTER TABLE `favoris`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `localites_algerie`
--
ALTER TABLE `localites_algerie`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=208;

--
-- AUTO_INCREMENT pour la table `parametres_systeme`
--
ALTER TABLE `parametres_systeme`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT pour la table `photos_annonces`
--
ALTER TABLE `photos_annonces`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `roles`
--
ALTER TABLE `roles`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT pour la table `statistiques_vues`
--
ALTER TABLE `statistiques_vues`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `types_transaction`
--
ALTER TABLE `types_transaction`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT pour la table `users`
--
ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

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

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

--
-- Contraintes pour la table `annonces`
--
ALTER TABLE `annonces`
  ADD CONSTRAINT `annonces_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `annonces_ibfk_2` FOREIGN KEY (`categorie_id`) REFERENCES `categories_biens` (`id`),
  ADD CONSTRAINT `annonces_ibfk_3` FOREIGN KEY (`type_transaction_id`) REFERENCES `types_transaction` (`id`);

--
-- Contraintes pour la table `avis`
--
ALTER TABLE `avis`
  ADD CONSTRAINT `avis_ibfk_1` FOREIGN KEY (`annonce_id`) REFERENCES `annonces` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `avis_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `contacts`
--
ALTER TABLE `contacts`
  ADD CONSTRAINT `contacts_ibfk_1` FOREIGN KEY (`annonce_id`) REFERENCES `annonces` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `contacts_ibfk_2` FOREIGN KEY (`expediteur_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `favoris`
--
ALTER TABLE `favoris`
  ADD CONSTRAINT `favoris_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `favoris_ibfk_2` FOREIGN KEY (`annonce_id`) REFERENCES `annonces` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `photos_annonces`
--
ALTER TABLE `photos_annonces`
  ADD CONSTRAINT `photos_annonces_ibfk_1` FOREIGN KEY (`annonce_id`) REFERENCES `annonces` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `statistiques_vues`
--
ALTER TABLE `statistiques_vues`
  ADD CONSTRAINT `statistiques_vues_ibfk_1` FOREIGN KEY (`annonce_id`) REFERENCES `annonces` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `statistiques_vues_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `users`
--
ALTER TABLE `users`
  ADD CONSTRAINT `users_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`);
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 */;
