-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1:3306
-- Généré le : lun. 04 mai 2026 à 12:27
-- 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 : `numecard`
--

-- --------------------------------------------------------

--
-- Structure de la table `actu`
--

DROP TABLE IF EXISTS `actu`;
CREATE TABLE IF NOT EXISTS `actu` (
  `id` int NOT NULL AUTO_INCREMENT,
  `titre` varchar(255) NOT NULL,
  `contenu` longtext NOT NULL,
  `categorie` varchar(30) NOT NULL,
  `image_filename` varchar(255) DEFAULT NULL,
  `cta_url` varchar(500) DEFAULT NULL,
  `cta_texte` varchar(100) DEFAULT NULL,
  `epingle` tinyint NOT NULL,
  `statut` varchar(20) NOT NULL,
  `vues` int NOT NULL,
  `clics` int NOT NULL,
  `created_at` datetime NOT NULL,
  `published_at` datetime DEFAULT NULL,
  `published_by_admin` tinyint NOT NULL,
  `beneficiaire_id` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_837303425AF81F68` (`beneficiaire_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `admin_access_log`
--

DROP TABLE IF EXISTS `admin_access_log`;
CREATE TABLE IF NOT EXISTS `admin_access_log` (
  `id` int NOT NULL AUTO_INCREMENT,
  `admin_id` int NOT NULL,
  `admin_email` varchar(180) NOT NULL,
  `ip_tronquee` varchar(50) NOT NULL,
  `path` varchar(500) NOT NULL,
  `method` varchar(10) NOT NULL,
  `created_at` datetime NOT NULL,
  `action` varchar(100) NOT NULL,
  `resource` varchar(255) DEFAULT NULL,
  `context` json DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_admin_log_created_at` (`created_at`),
  KEY `idx_admin_log_admin_id` (`admin_id`),
  KEY `idx_admin_log_action` (`action`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `admin_access_log`
--

INSERT INTO `admin_access_log` (`id`, `admin_id`, `admin_email`, `ip_tronquee`, `path`, `method`, `created_at`, `action`, `resource`, `context`) VALUES
(1, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:10:46', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(2, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:12:23', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(3, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:18:09', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(4, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:18:40', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(5, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:19:12', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(6, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/utilisateurs/3', 'GET', '2026-04-27 12:20:04', 'view_user', 'User#3 — cecilephilippe31@gmail.com', NULL),
(7, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:24:30', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(8, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:25:07', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(9, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:25:20', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(10, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:25:55', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(11, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:26:06', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(12, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:27:12', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(13, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:31:08', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(14, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:34:10', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(15, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:34:46', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(16, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd/1/rejeter', 'POST', '2026-04-27 12:34:50', 'rgpd_reject_demande', 'RgpdRequest#1', '{\"motif\": \"\"}'),
(17, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:34:51', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(18, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 12:36:37', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(19, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:06:14', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(20, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:09:10', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(21, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:09:43', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(22, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:09:50', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(23, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:11:39', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(24, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:12:06', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(25, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:13:46', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(26, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:13:59', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(27, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:14:09', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(28, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-04-27 13:21:25', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(29, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/utilisateurs/4', 'GET', '2026-04-28 09:45:22', 'view_user', 'User#4 — cecilephilippe31@gmail.com', NULL),
(30, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/utilisateurs/4', 'GET', '2026-04-28 09:47:42', 'view_user', 'User#4 — cecilephilippe31@gmail.com', NULL),
(31, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/utilisateurs/4', 'GET', '2026-04-28 10:21:00', 'view_user', 'User#4 — cecilephilippe31@gmail.com', NULL),
(32, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/utilisateurs/4', 'GET', '2026-04-28 10:21:30', 'view_user', 'User#4 — cecilephilippe31@gmail.com', NULL),
(33, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/commandes/50', 'GET', '2026-04-29 10:15:00', 'view_commande', 'Commande#50 — CMD-2026-45669', NULL),
(34, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/commandes/49', 'GET', '2026-04-29 10:15:17', 'view_commande', 'Commande#49 — CMD-2026-82440', NULL),
(35, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/commandes/47', 'GET', '2026-04-29 10:16:24', 'view_commande', 'Commande#47 — CMD-2026-91144', NULL),
(36, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-05-04 12:01:22', 'view_rgpd_demandes', 'Filtrage: pending', NULL),
(37, 1, 'contact@num-ecard.com', '127.0.0.xxx', '/admin/rgpd', 'GET', '2026-05-04 12:01:32', 'view_rgpd_demandes', 'Filtrage: pending', NULL);

-- --------------------------------------------------------

--
-- Structure de la table `admin_email_log`
--

DROP TABLE IF EXISTS `admin_email_log`;
CREATE TABLE IF NOT EXISTS `admin_email_log` (
  `id` int NOT NULL AUTO_INCREMENT,
  `recipient_email` varchar(255) NOT NULL,
  `sender_name` varchar(255) NOT NULL,
  `sujet` varchar(255) NOT NULL,
  `corps` longtext,
  `status` varchar(20) NOT NULL,
  `error_message` longtext,
  `admin_ip` varchar(45) DEFAULT NULL,
  `sent_at` datetime NOT NULL,
  `body_purged_at` datetime DEFAULT NULL,
  `sent_by_id` int DEFAULT NULL,
  `sent_to_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_EF0C4DB1A45BB98C` (`sent_by_id`),
  KEY `IDX_EF0C4DB13E89D3ED` (`sent_to_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `beneficiaire`
--

DROP TABLE IF EXISTS `beneficiaire`;
CREATE TABLE IF NOT EXISTS `beneficiaire` (
  `avatar_type` varchar(20) NOT NULL,
  `initiales` varchar(5) DEFAULT NULL,
  `photo_filename` varchar(255) DEFAULT NULL,
  `charte_type` varchar(255) NOT NULL,
  `charte_template` int DEFAULT NULL,
  `couleur_principale` varchar(7) DEFAULT NULL,
  `couleur_secondaire` varchar(7) DEFAULT NULL,
  `police_personnalisee` varchar(100) DEFAULT NULL,
  `charte_pdf_filename` varchar(255) DEFAULT NULL,
  `service1` varchar(150) DEFAULT NULL,
  `service2` varchar(150) DEFAULT NULL,
  `service3` varchar(150) DEFAULT NULL,
  `service4` varchar(150) DEFAULT NULL,
  `threads` varchar(255) DEFAULT NULL,
  `zoom` varchar(255) DEFAULT NULL,
  `google_meet` varchar(255) DEFAULT NULL,
  `microsoft_teams` varchar(255) DEFAULT NULL,
  `feature_agenda` tinyint NOT NULL,
  `agenda_link` varchar(255) DEFAULT NULL,
  `feature_galerie` tinyint NOT NULL,
  `galerie_link` varchar(255) DEFAULT NULL,
  `feature_satisfaction` tinyint NOT NULL,
  `satisfaction_link` varchar(255) DEFAULT NULL,
  `feature_catalogue` tinyint NOT NULL,
  `catalogue_link` varchar(255) DEFAULT NULL,
  `feature_video` tinyint NOT NULL,
  `video_link` varchar(255) DEFAULT NULL,
  `lien_personnalise` varchar(255) DEFAULT NULL,
  `expertise` varchar(100) DEFAULT NULL,
  `seances` varchar(100) DEFAULT NULL,
  `satisfaction` varchar(100) DEFAULT NULL,
  `position` int NOT NULL,
  `modification_count` int NOT NULL,
  `last_modified_at` datetime DEFAULT NULL,
  `needs_regeneration` tinyint NOT NULL,
  `commande_id` int NOT NULL,
  `id` int NOT NULL,
  `card_url` varchar(500) DEFAULT NULL,
  `card_sent_at` datetime DEFAULT NULL,
  `is_active` tinyint NOT NULL,
  `deactivated_at` datetime DEFAULT NULL,
  `reactivated_at` datetime DEFAULT NULL,
  `scheduled_activation_at` datetime DEFAULT NULL,
  `timezone` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_B140D80282EA2E54` (`commande_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `beneficiaire`
--

INSERT INTO `beneficiaire` (`avatar_type`, `initiales`, `photo_filename`, `charte_type`, `charte_template`, `couleur_principale`, `couleur_secondaire`, `police_personnalisee`, `charte_pdf_filename`, `service1`, `service2`, `service3`, `service4`, `threads`, `zoom`, `google_meet`, `microsoft_teams`, `feature_agenda`, `agenda_link`, `feature_galerie`, `galerie_link`, `feature_satisfaction`, `satisfaction_link`, `feature_catalogue`, `catalogue_link`, `feature_video`, `video_link`, `lien_personnalise`, `expertise`, `seances`, `satisfaction`, `position`, `modification_count`, `last_modified_at`, `needs_regeneration`, `commande_id`, `id`, `card_url`, `card_sent_at`, `is_active`, `deactivated_at`, `reactivated_at`, `scheduled_activation_at`, `timezone`) VALUES
('initiales', 'TM', NULL, 'template', 6, '#667eea', '#764ba2', NULL, NULL, 'Événementiel', 'Marketing digital', 'Gestion immobilière', 'SEO/SEA', '', '', '', '', 0, '', 0, '', 0, '', 0, '', 0, '', '', '', '', '', 1, 1, '2026-03-18 18:53:46', 1, 39, 48, NULL, NULL, 1, NULL, NULL, NULL, NULL),
('initiales', 'MN', NULL, 'personnalisee', 55, '#cc3bce', '#4f31c9', NULL, NULL, 'Développement web', 'Communication digitale', 'Photo/Vidéo', 'SEO/SEA', '', '', '', '', 0, '', 0, '', 0, '', 0, '', 0, '', '', '', '', '', 1, 26, '2026-03-31 08:53:44', 1, 40, 49, NULL, NULL, 1, NULL, NULL, NULL, NULL),
('initiales', 'LD', NULL, 'personnalisee', 47, NULL, NULL, NULL, NULL, 'Développement web', 'Conseil stratégique', 'Communication digitale', 'SEO/SEA', NULL, NULL, NULL, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 46, 55, NULL, NULL, 1, NULL, NULL, NULL, NULL),
('initiales', 'HD', NULL, 'personnalisee', 18, NULL, NULL, NULL, NULL, 'Conseil stratégique', 'Gestion immobilière', 'Photo/Vidéo', 'Formation', NULL, NULL, NULL, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 47, 56, NULL, NULL, 1, NULL, NULL, NULL, 'Europe/Paris'),
('initiales', NULL, NULL, 'personnalisee', 53, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 48, 57, NULL, NULL, 1, NULL, NULL, NULL, NULL),
('initiales', 'AL', NULL, 'personnalisee', 53, '#c81eba', '#0fa4c2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 49, 58, NULL, NULL, 1, '2026-04-07 09:52:37', '2026-04-07 09:52:40', NULL, NULL),
('initiales', 'AA', NULL, 'template', 53, '#667eea', '#764ba2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 50, 59, NULL, NULL, 0, '2026-04-07 09:45:14', '2026-04-07 09:41:13', NULL, NULL);

-- --------------------------------------------------------

--
-- Structure de la table `card`
--

DROP TABLE IF EXISTS `card`;
CREATE TABLE IF NOT EXISTS `card` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nom` varchar(100) NOT NULL,
  `prenom` varchar(100) NOT NULL,
  `entreprise` varchar(150) DEFAULT NULL,
  `logo` varchar(255) DEFAULT NULL,
  `titre` varchar(200) DEFAULT NULL,
  `slogan` varchar(200) DEFAULT NULL,
  `fonction` varchar(150) DEFAULT NULL,
  `fixe` varchar(50) DEFAULT NULL,
  `mobile` varchar(255) DEFAULT NULL,
  `email` varchar(150) DEFAULT NULL,
  `site_web` varchar(255) DEFAULT NULL,
  `adresse` longtext,
  `price` decimal(10,2) DEFAULT NULL,
  `linkedin` varchar(1000) DEFAULT NULL,
  `facebook` varchar(1000) DEFAULT NULL,
  `youtube` varchar(1000) DEFAULT NULL,
  `tiktok` varchar(1000) DEFAULT NULL,
  `insta` varchar(1000) DEFAULT NULL,
  `x` varchar(1000) DEFAULT NULL,
  `type` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `card`
--

INSERT INTO `card` (`id`, `nom`, `prenom`, `entreprise`, `logo`, `titre`, `slogan`, `fonction`, `fixe`, `mobile`, `email`, `site_web`, `adresse`, `price`, `linkedin`, `facebook`, `youtube`, `tiktok`, `insta`, `x`, `type`) VALUES
(48, 'MOREAU', 'Thomas', 'SANAGENCY', NULL, '', 'L\'innovation au service de l\'immobilier', 'Designer', '0561358513', '0626214018', 'thomas.moreau@sanagency.fr', 'https://www.sanagency.fr', '8 rue Jean Jaurès, 31167 Toulouse', 349.00, 'https://linkedin.com/in/thomas-moreau', 'https://facebook.com/thomasmoreau', '', '', 'https://instagram.com/thomas_moreau', '', 'beneficiaire'),
(49, 'MARTIN', 'Nathalie', 'Sud Développement', NULL, '', 'L\'innovation au service de l\'immobilier', 'Designer', '0561753343', '0645286047', 'nathalie.martin@suddveloppement.fr', 'https://www.suddveloppement.fr', '12 rue des Coquelicots, 31477 Albi', 549.00, 'https://linkedin.com/in/nathalie-martin', 'https://facebook.com/nathaliemartin', 'https://www.youtube.com/watch?v=IC62ia_bZeY', '', 'https://instagram.com/nathalie_martin', '', 'beneficiaire'),
(55, 'DUPONT', 'Luc', 'Focus Digital', NULL, NULL, 'La musique est ma passion', 'Designer', '0579176838', '0678624871', 'luc.dupont@focusdigital.fr', 'https://www.focusdigital.fr', '65 rue du Commerce, 31673 Toulouse', 199.00, 'https://linkedin.com/in/luc-dupont', 'https://facebook.com/lucdupont', NULL, NULL, 'https://instagram.com/luc_dupont', NULL, 'beneficiaire'),
(56, 'DUPONT', 'Hugo', 'Digital Cube', NULL, NULL, 'Créons ensemble votre succès', 'Chargé de Communication', '0519360591', '0639951818', 'hugo.dupont@digitalcube.fr', 'https://www.digitalcube.fr', '83 rue des Coquelicots, 31110 Colomiers', 549.00, 'https://linkedin.com/in/hugo-dupont', 'https://facebook.com/hugodupont', NULL, NULL, 'https://instagram.com/hugo_dupont', NULL, 'beneficiaire'),
(57, 'Louis', 'Paola', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 349.00, NULL, NULL, NULL, NULL, NULL, NULL, 'beneficiaire'),
(58, 'Louis', 'Anna', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 349.00, NULL, NULL, NULL, NULL, NULL, NULL, 'beneficiaire'),
(59, 'Alain', 'Alin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 549.00, NULL, NULL, NULL, NULL, NULL, NULL, 'beneficiaire');

-- --------------------------------------------------------

--
-- Structure de la table `commande_multi`
--

DROP TABLE IF EXISTS `commande_multi`;
CREATE TABLE IF NOT EXISTS `commande_multi` (
  `id` int NOT NULL AUTO_INCREMENT,
  `reference` varchar(20) NOT NULL,
  `pack_type` varchar(20) NOT NULL,
  `quantity` int NOT NULL,
  `client_nom` varchar(200) DEFAULT NULL,
  `client_entreprise` varchar(200) DEFAULT NULL,
  `client_email` varchar(180) DEFAULT NULL,
  `client_telephone` varchar(20) DEFAULT NULL,
  `client_adresse` longtext,
  `paiement_mode` varchar(20) NOT NULL,
  `total_ht` decimal(10,2) NOT NULL,
  `total_ttc` decimal(10,2) NOT NULL,
  `taux_tva` decimal(5,2) NOT NULL,
  `stripe_session_id` varchar(255) DEFAULT NULL,
  `stripe_payment_intent_id` varchar(255) DEFAULT NULL,
  `status` varchar(20) NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  `paid_at` datetime DEFAULT NULL,
  `completed_at` datetime DEFAULT NULL,
  `notes` longtext,
  `user_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_FCF99CC6AEA34913` (`reference`),
  KEY `IDX_FCF99CC6A76ED395` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `commande_multi`
--

INSERT INTO `commande_multi` (`id`, `reference`, `pack_type`, `quantity`, `client_nom`, `client_entreprise`, `client_email`, `client_telephone`, `client_adresse`, `paiement_mode`, `total_ht`, `total_ttc`, `taux_tva`, `stripe_session_id`, `stripe_payment_intent_id`, `status`, `created_at`, `updated_at`, `paid_at`, `completed_at`, `notes`, `user_id`) VALUES
(39, 'CMD-2026-80376', 'premium', 1, 'Tom tom', NULL, 'tom@tom.fr', NULL, NULL, 'comptant', 349.00, 418.80, 20.00, 'ADMIN_69b7be44a7172', NULL, 'paid', '2026-03-16 09:24:36', '2026-03-16 09:24:36', '2026-03-16 09:24:36', NULL, NULL, 1),
(40, 'CMD-2026-13628', 'forcevente', 1, 'Tom tom', NULL, 'tom@tom.fr', NULL, NULL, 'comptant', 549.00, 658.80, 20.00, 'ADMIN_69ba911ab5bc2', NULL, 'paid', '2026-03-18 12:48:42', '2026-03-18 12:48:42', '2026-03-18 12:48:42', NULL, NULL, 1),
(41, 'CMD-2026-01275', 'forcevente', 1, 'Philippe CECILE', NULL, 'cecilephilippe31@gmail.com', NULL, NULL, 'comptant', 549.00, 658.80, 20.00, 'cs_test_a1hIhUJhdsXEAW7UtvMoxKFftJzWlx5HYRwNqcw210v1Iiqqj4Zj4j2Ype', 'pi_3TEQbqLKvnU8BpCB143FOYdR', 'paid', '2026-03-24 09:46:20', '2026-03-24 09:46:48', '2026-03-24 09:46:48', NULL, NULL, 3),
(42, 'CMD-2026-36084', 'forcevente', 1, 'Philippe CECILE', NULL, 'cecilephilippe31@gmail.com', NULL, NULL, 'comptant', 549.00, 658.80, 20.00, 'cs_test_a1IXHek5dp3NQ7j2waEk0fGmVKeVE6dRHaiEpoFLEeDMIf9juuUHhgDukz', 'pi_3TESb1LKvnU8BpCB0Moq2w0V', 'paid', '2026-03-24 11:53:25', '2026-03-24 11:54:05', '2026-03-24 11:54:05', NULL, NULL, 3),
(43, 'CMD-2026-58908', 'forcevente', 1, 'Philippe CECILE', NULL, 'cecilephilippe31@gmail.com', NULL, NULL, 'comptant', 549.00, 658.80, 20.00, 'cs_test_a1A6BDpfvoKzvoZW4xh8Vktd0TlUQ0gpvNZh5ThVPydAqpMKf5ktKkNIu5', 'pi_3TFDOTLKvnU8BpCB1TnfoSkx', 'paid', '2026-03-26 13:51:49', '2026-03-26 13:52:16', '2026-03-26 13:52:16', NULL, NULL, 3),
(44, 'CMD-2026-70147', 'forcevente', 1, 'Philippe CECILE', NULL, 'cecilephilippe31@gmail.com', NULL, NULL, 'comptant', 549.00, 658.80, 20.00, 'cs_test_a1k0qZQxVYGsSsWpb3MRYxrYFjoDcSzOyjf2T0hijNNvWsRYC3e566JrW8', 'pi_3TFEE6LKvnU8BpCB1YfhYkWK', 'paid', '2026-03-26 14:45:08', '2026-03-26 14:45:37', '2026-03-26 14:45:37', NULL, NULL, 3),
(45, 'CMD-2026-94513', 'forcevente', 1, 'Philippe CECILE', NULL, 'phil31780@live.fr', '07 89 54 86 28', NULL, 'comptant', 549.00, 658.80, 20.00, 'cs_test_a1V92fuebdB11dTeRhvq2MTBrpeX48nGRyeZQBFsbcpqtSm6O3EKB35XGr', 'pi_3TFcNSLKvnU8BpCB0wKMLDNV', 'paid', '2026-03-27 16:32:29', '2026-03-27 16:32:52', '2026-03-27 16:32:52', NULL, NULL, NULL),
(46, 'CMD-2026-85142', 'essentiel', 1, 'Patrice Sanachy', NULL, 'contact@num-ecard.com', NULL, NULL, 'comptant', 199.00, 238.80, 20.00, 'ADMIN_69cb7ae3f25fb', NULL, 'paid', '2026-03-31 09:42:27', '2026-03-31 09:42:27', '2026-03-31 09:42:27', NULL, NULL, 1),
(47, 'CMD-2026-91144', 'forcevente', 1, 'Patrice Sanachy', NULL, 'contact@num-ecard.com', NULL, NULL, 'comptant', 549.00, 658.80, 20.00, 'ADMIN_69cb7b0d84d0f', NULL, 'paid', '2026-03-31 09:43:09', '2026-03-31 09:43:09', '2026-03-31 09:43:09', NULL, NULL, 1),
(48, 'CMD-2026-86947', 'premium', 1, 'Patrice Sanachy', NULL, 'contact@num-ecard.com', NULL, NULL, 'comptant', 349.00, 418.80, 20.00, 'ADMIN_69cbb1f40895d', NULL, 'paid', '2026-03-31 13:37:24', '2026-03-31 13:37:24', '2026-03-31 13:37:24', NULL, NULL, 1),
(49, 'CMD-2026-82440', 'premium', 1, 'Patrice Sanachy', NULL, 'contact@num-ecard.com', NULL, NULL, 'comptant', 349.00, 418.80, 20.00, 'ADMIN_69cbbaf5a3a3a', NULL, 'paid', '2026-03-31 14:15:49', '2026-03-31 14:15:49', '2026-03-31 14:15:49', NULL, NULL, 1),
(50, 'CMD-2026-45669', 'forcevente', 1, 'Patrice Sanachy', NULL, 'contact@num-ecard.com', NULL, NULL, 'comptant', 549.00, 658.80, 20.00, 'ADMIN_69cbbc5c1f452', NULL, 'paid', '2026-03-31 14:21:48', '2026-03-31 14:21:48', '2026-03-31 14:21:48', NULL, NULL, 1);

-- --------------------------------------------------------

--
-- Structure de la table `consent_log`
--

DROP TABLE IF EXISTS `consent_log`;
CREATE TABLE IF NOT EXISTS `consent_log` (
  `id` int NOT NULL AUTO_INCREMENT,
  `source` varchar(64) NOT NULL,
  `analytics` tinyint NOT NULL,
  `consent_version` smallint NOT NULL,
  `user_agent` varchar(512) DEFAULT NULL,
  `consent_given_at` datetime NOT NULL,
  `user_id` int DEFAULT NULL,
  `marketing` tinyint NOT NULL,
  `essential` tinyint NOT NULL,
  `ip_anonymized` varchar(64) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_30113729A76ED395` (`user_id`),
  KEY `idx_consent_source` (`source`),
  KEY `idx_consent_date` (`consent_given_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `consent_record`
--

DROP TABLE IF EXISTS `consent_record`;
CREATE TABLE IF NOT EXISTS `consent_record` (
  `id` int NOT NULL AUTO_INCREMENT,
  `purpose` varchar(50) NOT NULL,
  `action` varchar(10) NOT NULL,
  `ip_anonymized` varchar(50) DEFAULT NULL,
  `legal_basis` varchar(10) NOT NULL,
  `notice_version` varchar(100) DEFAULT NULL,
  `source` varchar(100) DEFAULT NULL,
  `user_agent` varchar(512) DEFAULT NULL,
  `consented_at` datetime NOT NULL,
  `user_id` int DEFAULT NULL,
  `analytics_consent` tinyint DEFAULT NULL,
  `marketing_consent` tinyint DEFAULT NULL,
  `visitor_token` varchar(64) DEFAULT NULL,
  `page_url` varchar(512) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_consent_user` (`user_id`),
  KEY `idx_consent_purpose` (`purpose`),
  KEY `idx_consent_date` (`consented_at`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `consent_record`
--

INSERT INTO `consent_record` (`id`, `purpose`, `action`, `ip_anonymized`, `legal_basis`, `notice_version`, `source`, `user_agent`, `consented_at`, `user_id`, `analytics_consent`, `marketing_consent`, `visitor_token`, `page_url`) VALUES
(1, 'cookie_banner', 'grant', '127.0.0.0', '6.1.a', 'cookies-v1/schema:2', 'cookie_banner', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', '2026-04-29 08:55:44', NULL, 1, 1, NULL, NULL),
(2, 'push_vapid', 'grant', '127.0.0.0', '6.1.a', 'push-v1', 'card_push_modal', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', '2026-04-30 11:03:26', NULL, NULL, NULL, NULL, 'https://localhost:8000/test-push.html'),
(3, 'push_vapid', 'revoke', '127.0.0.0', '6.1.a', NULL, 'card_push_modal', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', '2026-04-30 11:06:58', NULL, NULL, NULL, NULL, NULL),
(4, 'push_vapid', 'grant', '127.0.0.0', '6.1.a', 'push-v1', 'card_push_modal', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', '2026-04-30 11:07:04', NULL, NULL, NULL, NULL, 'https://localhost:8000/test-push.html'),
(5, 'push_vapid', 'revoke', '127.0.0.0', '6.1.a', NULL, 'card_push_modal', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', '2026-04-30 11:07:06', NULL, NULL, NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Structure de la table `contact_message`
--

DROP TABLE IF EXISTS `contact_message`;
CREATE TABLE IF NOT EXISTS `contact_message` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nom` varchar(150) NOT NULL,
  `email` varchar(180) NOT NULL,
  `telephone` varchar(30) DEFAULT NULL,
  `entreprise` varchar(200) DEFAULT NULL,
  `sujet` varchar(20) NOT NULL,
  `message` longtext NOT NULL,
  `ip_anonymized` varchar(45) DEFAULT NULL,
  `consent_given` tinyint NOT NULL,
  `statut` varchar(20) NOT NULL DEFAULT 'nouveau',
  `created_at` datetime NOT NULL,
  `purge_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `deletion_log`
--

DROP TABLE IF EXISTS `deletion_log`;
CREATE TABLE IF NOT EXISTS `deletion_log` (
  `id` int NOT NULL AUTO_INCREMENT,
  `email_hashed` varchar(64) NOT NULL,
  `original_user_id` int DEFAULT NULL,
  `channel` varchar(30) NOT NULL,
  `commandes_count` int NOT NULL,
  `beneficiaires_count` int NOT NULL,
  `files_deleted_count` int NOT NULL,
  `brevio_purged` tinyint NOT NULL,
  `ip_anonymized` varchar(50) DEFAULT NULL,
  `deleted_at` datetime NOT NULL,
  `request_reference` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_deletion_date` (`deleted_at`),
  KEY `idx_deletion_email` (`email_hashed`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `deletion_log`
--

INSERT INTO `deletion_log` (`id`, `email_hashed`, `original_user_id`, `channel`, `commandes_count`, `beneficiaires_count`, `files_deleted_count`, `brevio_purged`, `ip_anonymized`, `deleted_at`, `request_reference`) VALUES
(1, '8fab9f51bdc503fb3f116f1f979b472b92cfba0c32e4d7506f193572c9d44cca', 2, 'self_service', 1, 1, 0, 0, '127.0.0.0', '2026-04-23 11:15:34', NULL),
(2, '05d47ecfa6581712db1b9dfdc86af68267fb0fb781cef4165b3262c693c28f22', 3, 'rgpd_request', 4, 4, 4, 0, NULL, '2026-04-27 13:14:07', 'RGPD-2');

-- --------------------------------------------------------

--
-- Structure de la table `doctrine_migration_versions`
--

DROP TABLE IF EXISTS `doctrine_migration_versions`;
CREATE TABLE IF NOT EXISTS `doctrine_migration_versions` (
  `version` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `executed_at` datetime DEFAULT NULL,
  `execution_time` int DEFAULT NULL,
  PRIMARY KEY (`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `doctrine_migration_versions`
--

INSERT INTO `doctrine_migration_versions` (`version`, `executed_at`, `execution_time`) VALUES
('DoctrineMigrations\\Version20260504121557', '2026-05-04 14:16:08', 15);

-- --------------------------------------------------------

--
-- Structure de la table `essentiel`
--

DROP TABLE IF EXISTS `essentiel`;
CREATE TABLE IF NOT EXISTS `essentiel` (
  `id` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `force_carte`
--

DROP TABLE IF EXISTS `force_carte`;
CREATE TABLE IF NOT EXISTS `force_carte` (
  `specialite` longtext,
  `services` longtext,
  `zone_intervention` varchar(200) DEFAULT NULL,
  `horaires` varchar(100) DEFAULT NULL,
  `id` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `hebergement_subscription`
--

DROP TABLE IF EXISTS `hebergement_subscription`;
CREATE TABLE IF NOT EXISTS `hebergement_subscription` (
  `id` int NOT NULL AUTO_INCREMENT,
  `status` varchar(20) NOT NULL,
  `starts_at` datetime NOT NULL,
  `expires_at` datetime NOT NULL,
  `stripe_subscription_id` varchar(255) DEFAULT NULL,
  `stripe_session_id` varchar(255) DEFAULT NULL,
  `last_renewal_at` datetime DEFAULT NULL,
  `reminders_sent_at` json DEFAULT NULL,
  `renewed_by_admin` tinyint NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  `beneficiaire_id` int NOT NULL,
  `is_free_forever` tinyint NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_18E62BFF5AF81F68` (`beneficiaire_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `hebergement_subscription`
--

INSERT INTO `hebergement_subscription` (`id`, `status`, `starts_at`, `expires_at`, `stripe_subscription_id`, `stripe_session_id`, `last_renewal_at`, `reminders_sent_at`, `renewed_by_admin`, `created_at`, `updated_at`, `beneficiaire_id`, `is_free_forever`) VALUES
(3, 'trial', '2026-03-25 12:19:47', '2027-03-25 12:19:47', NULL, NULL, NULL, NULL, 0, '2026-03-25 12:19:47', NULL, 48, 0),
(4, 'trial', '2026-03-25 12:19:47', '2027-03-25 12:19:47', NULL, NULL, NULL, NULL, 0, '2026-03-25 12:19:47', NULL, 49, 0),
(7, 'trial', '2026-04-02 11:36:54', '2027-04-02 11:36:54', NULL, NULL, NULL, NULL, 0, '2026-04-02 11:36:54', NULL, 55, 0),
(8, 'trial', '2026-04-02 11:36:54', '2027-04-02 11:36:54', NULL, NULL, NULL, NULL, 0, '2026-04-02 11:36:54', NULL, 56, 0),
(9, 'trial', '2026-04-02 11:36:54', '2027-04-02 11:36:54', NULL, NULL, NULL, NULL, 0, '2026-04-02 11:36:54', NULL, 57, 0),
(10, 'trial', '2026-04-02 11:36:54', '2027-04-02 11:36:54', NULL, NULL, NULL, NULL, 0, '2026-04-02 11:36:54', NULL, 58, 0),
(11, 'trial', '2026-04-02 11:36:54', '2027-04-02 11:36:54', NULL, NULL, NULL, NULL, 0, '2026-04-02 11:36:54', NULL, 59, 0);

-- --------------------------------------------------------

--
-- Structure de la table `messenger_messages`
--

DROP TABLE IF EXISTS `messenger_messages`;
CREATE TABLE IF NOT EXISTS `messenger_messages` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `body` longtext NOT NULL,
  `headers` longtext NOT NULL,
  `queue_name` varchar(190) NOT NULL,
  `created_at` datetime NOT NULL,
  `available_at` datetime NOT NULL,
  `delivered_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_75EA56E0FB7336F0` (`queue_name`),
  KEY `IDX_75EA56E0E3BD61CE` (`available_at`),
  KEY `IDX_75EA56E016BA31DB` (`delivered_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `modification_invoice`
--

DROP TABLE IF EXISTS `modification_invoice`;
CREATE TABLE IF NOT EXISTS `modification_invoice` (
  `id` int NOT NULL AUTO_INCREMENT,
  `reference` varchar(100) NOT NULL,
  `modification_number` int NOT NULL,
  `price_ht` decimal(8,2) NOT NULL,
  `tva` decimal(8,2) NOT NULL,
  `price_ttc` decimal(8,2) NOT NULL,
  `stripe_session_id` varchar(255) DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `beneficiaire_id` int NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_4718C21AEA34913` (`reference`),
  KEY `IDX_4718C215AF81F68` (`beneficiaire_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `modification_invoice`
--

INSERT INTO `modification_invoice` (`id`, `reference`, `modification_number`, `price_ht`, `tva`, `price_ttc`, `stripe_session_id`, `created_at`, `beneficiaire_id`) VALUES
(3, 'MOD-49-20260324-ADMIN', 18, 0.00, 0.00, 0.00, NULL, '2026-03-24 13:27:24', 49),
(4, 'MOD-49-20260324-ADMIN-2692', 21, 0.00, 0.00, 0.00, NULL, '2026-03-24 13:30:16', 49),
(5, 'MOD-49-20260324-ADMIN-C6D4', 22, 0.00, 0.00, 0.00, NULL, '2026-03-24 13:31:51', 49),
(6, 'MOD-49-20260331-ADMIN-F137', 23, 0.00, 0.00, 0.00, NULL, '2026-03-31 08:42:50', 49),
(7, 'MOD-49-20260331-ADMIN-2E47', 24, 0.00, 0.00, 0.00, NULL, '2026-03-31 08:51:55', 49),
(8, 'MOD-49-20260331-ADMIN-1057', 25, 0.00, 0.00, 0.00, NULL, '2026-03-31 08:52:42', 49),
(9, 'MOD-49-20260331-ADMIN-97E9', 26, 0.00, 0.00, 0.00, NULL, '2026-03-31 08:53:44', 49);

-- --------------------------------------------------------

--
-- Structure de la table `multi`
--

DROP TABLE IF EXISTS `multi`;
CREATE TABLE IF NOT EXISTS `multi` (
  `id` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `newsletter_consent_log`
--

DROP TABLE IF EXISTS `newsletter_consent_log`;
CREATE TABLE IF NOT EXISTS `newsletter_consent_log` (
  `id` int NOT NULL AUTO_INCREMENT,
  `email` varchar(254) DEFAULT NULL,
  `email_hashed` varchar(64) NOT NULL,
  `source` varchar(64) NOT NULL,
  `consent_version` varchar(32) NOT NULL,
  `consent_text_hash` varchar(64) DEFAULT NULL,
  `form_url` varchar(512) DEFAULT NULL,
  `ip_anonymized` varchar(64) NOT NULL,
  `user_agent` varchar(512) DEFAULT NULL,
  `granted_at` datetime NOT NULL,
  `withdrawn_at` datetime DEFAULT NULL,
  `brevo_contact_id` int DEFAULT NULL,
  `user_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_6FF68E6A76ED395` (`user_id`),
  KEY `idx_ncl_email` (`email_hashed`),
  KEY `idx_ncl_granted_at` (`granted_at`),
  KEY `idx_ncl_withdrawn_at` (`withdrawn_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `premium`
--

DROP TABLE IF EXISTS `premium`;
CREATE TABLE IF NOT EXISTS `premium` (
  `expertise` varchar(100) DEFAULT NULL,
  `seances` varchar(100) DEFAULT NULL,
  `spe1` varchar(255) DEFAULT NULL,
  `spe2` varchar(255) DEFAULT NULL,
  `spe3` varchar(255) DEFAULT NULL,
  `spe4` varchar(255) DEFAULT NULL,
  `satisfaction` varchar(255) DEFAULT NULL,
  `id` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `push_subscription`
--

DROP TABLE IF EXISTS `push_subscription`;
CREATE TABLE IF NOT EXISTS `push_subscription` (
  `id` int NOT NULL AUTO_INCREMENT,
  `card_slug` varchar(100) NOT NULL,
  `endpoint` longtext NOT NULL,
  `public_key` varchar(255) NOT NULL,
  `auth_token` varchar(64) NOT NULL,
  `user_agent` varchar(512) DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `last_used_at` datetime DEFAULT NULL,
  `visitor_hash` varchar(64) DEFAULT NULL,
  `subscriber_ip` varchar(50) DEFAULT NULL,
  `consent_version` varchar(32) DEFAULT NULL,
  `status` varchar(20) NOT NULL,
  `unsubscribed_at` datetime DEFAULT NULL,
  `endpoint_hash` varchar(64) NOT NULL,
  `user_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_endpoint_hash` (`endpoint_hash`),
  KEY `idx_status` (`status`),
  KEY `idx_card_slug` (`card_slug`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `push_subscription`
--

INSERT INTO `push_subscription` (`id`, `card_slug`, `endpoint`, `public_key`, `auth_token`, `user_agent`, `created_at`, `last_used_at`, `visitor_hash`, `subscriber_ip`, `consent_version`, `status`, `unsubscribed_at`, `endpoint_hash`, `user_id`) VALUES
(1, 'test-philippe-local', 'https://fcm.googleapis.com/fcm/send/dHKvg6KD8cA:APA91bEA2lWLAp4hsfZsXY8CgUIhNZRJOm2I3dZ3dzN76vdmJpsCQQXAs7rCtS2Mn-kvlHW7lodBixL8glst6HxkvknYcJSaiPX5x5cx4Z93zO3CbYHrmj5Z-0FrCzOLup7ip3rM7Gis', 'BM9kqBQlKY6fdkBaFMikywrHcu3HsRO1sV6W-0gQk5LrHXfXvmvc2EHtN1L84eAFFld9zDdWtEVP9xIrEYX_bso', '9xcxFU3k8inrWrnvtyTmpQ', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', '2026-04-30 11:03:26', NULL, '312e2479916c449c8764502c7f82d108db69487b3c66b7f636d8dcb4b9192858', '127.0.0.0', 'push-v1', 'revoked', '2026-04-30 11:06:58', '433703bdf793556adb1c483e45ecc846c804766e9a6a563edffd2cc4f5104a0e', NULL),
(2, 'test-philippe-local', 'https://fcm.googleapis.com/fcm/send/e-sLjYkYEjk:APA91bFqPZJotFv4WXpSTzgMqk3Zau_wJ7-tSpbIShL_qnd06z3SrBanIIVG9tSEuJ1OvRaV6KwkL-PdjblebjYCvWcO88eKY4QUoZpWdz7wMZRh8Obx0Azfvhm2N3sW3GaaLtjeBO6y', 'BJ0E-JvlHoHHykt1Fcq9g02V90ex4IALSylzDKCdRzKBr3E7XC5UcNtHZsxMlBHeaG7HRZsoN6SjdvbflD81xIU', '_26KPne_hMHv5m_e6PxYCw', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', '2026-04-30 11:07:04', NULL, '312e2479916c449c8764502c7f82d108db69487b3c66b7f636d8dcb4b9192858', '127.0.0.0', 'push-v1', 'revoked', '2026-04-30 11:07:06', 'd9475ce28132d48f3461c3ee234700a082fea6aa2cfbcd42a995e5a2b910cf13', NULL);

-- --------------------------------------------------------

--
-- Structure de la table `recommendation`
--

DROP TABLE IF EXISTS `recommendation`;
CREATE TABLE IF NOT EXISTS `recommendation` (
  `id` int NOT NULL AUTO_INCREMENT,
  `message` longtext,
  `created_at` datetime NOT NULL,
  `status` varchar(20) NOT NULL,
  `recommender_name` varchar(255) NOT NULL,
  `recommender_entreprise` varchar(255) DEFAULT NULL,
  `recommender_email` varchar(255) DEFAULT NULL,
  `recommender_phone` varchar(50) DEFAULT NULL,
  `contact_name` varchar(255) NOT NULL,
  `contact_email` varchar(255) NOT NULL,
  `contact_phone` varchar(50) DEFAULT NULL,
  `contact_entreprise` varchar(255) DEFAULT NULL,
  `offre_suggeree` varchar(50) DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `beneficiaire_id` int NOT NULL,
  `submitter_ip` varchar(45) DEFAULT NULL,
  `submitter_hash` varchar(64) DEFAULT NULL,
  `consent_mention_version` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_433224D25AF81F68` (`beneficiaire_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `recommendation`
--

INSERT INTO `recommendation` (`id`, `message`, `created_at`, `status`, `recommender_name`, `recommender_entreprise`, `recommender_email`, `recommender_phone`, `contact_name`, `contact_email`, `contact_phone`, `contact_entreprise`, `offre_suggeree`, `updated_at`, `beneficiaire_id`, `submitter_ip`, `submitter_hash`, `consent_mention_version`) VALUES
(1, 'A contacter d\'urgence', '2026-03-19 10:25:31', 'new', 'Nathalie MARTIN', 'Sud Développement', NULL, NULL, 'Jean louis parfait', 'jlp@live.fr', '08 85 65 25 56', NULL, NULL, '2026-03-19 10:25:31', 49, NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Structure de la table `rgpd_demande`
--

DROP TABLE IF EXISTS `rgpd_demande`;
CREATE TABLE IF NOT EXISTS `rgpd_demande` (
  `id` int NOT NULL AUTO_INCREMENT,
  `reference` varchar(30) NOT NULL,
  `profil` varchar(20) NOT NULL,
  `droit` varchar(30) NOT NULL,
  `nom` varchar(150) NOT NULL,
  `email` varchar(180) NOT NULL,
  `telephone` varchar(30) DEFAULT NULL,
  `porteur_nom` varchar(200) DEFAULT NULL,
  `description` longtext NOT NULL,
  `categorie_donnees` varchar(50) DEFAULT NULL,
  `verification_identite` varchar(50) NOT NULL,
  `statut` varchar(20) NOT NULL DEFAULT 'recu',
  `created_at` datetime NOT NULL,
  `closed_at` datetime DEFAULT NULL,
  `purge_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_A73E63EAEA34913` (`reference`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Structure de la table `rgpd_rights_requests`
--

DROP TABLE IF EXISTS `rgpd_rights_requests`;
CREATE TABLE IF NOT EXISTS `rgpd_rights_requests` (
  `id` int NOT NULL AUTO_INCREMENT,
  `type` varchar(50) NOT NULL,
  `status` varchar(20) NOT NULL,
  `requested_at` datetime NOT NULL,
  `processed_at` datetime DEFAULT NULL,
  `download_token` varchar(64) DEFAULT NULL,
  `download_token_expires_at` datetime DEFAULT NULL,
  `export_file_path` varchar(255) DEFAULT NULL,
  `error_message` longtext,
  `request_ip` varchar(45) DEFAULT NULL,
  `user_id` int DEFAULT NULL,
  `nom_demandeur` varchar(200) DEFAULT NULL,
  `email_demandeur` varchar(180) DEFAULT NULL,
  `deadline_at` datetime DEFAULT NULL,
  `notes_admin` longtext,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_951BA948704D2D87` (`download_token`),
  KEY `IDX_951BA948A76ED395` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `rgpd_rights_requests`
--

INSERT INTO `rgpd_rights_requests` (`id`, `type`, `status`, `requested_at`, `processed_at`, `download_token`, `download_token_expires_at`, `export_file_path`, `error_message`, `request_ip`, `user_id`, `nom_demandeur`, `email_demandeur`, `deadline_at`, `notes_admin`) VALUES
(1, 'suppression', 'refused', '2026-04-24 09:45:30', '2026-04-27 12:34:50', NULL, NULL, NULL, NULL, '127.0.0.1', 3, 'Philippe CECILE', 'cecilephilippe31@gmail.com', '2026-05-24 09:45:30', '[27/04/2026 12:34] Rejet — Aucun motif renseigné — Admin : contact@num-ecard.com'),
(2, 'suppression', 'processed', '2026-04-27 12:36:18', '2026-04-27 13:14:07', NULL, NULL, NULL, NULL, '127.0.0.1', 3, 'Philippe CECILE', 'cecilephilippe31@gmail.com', '2026-05-27 12:36:18', '[27/04/2026 13:14] Anonymisation exécutée par contact@num-ecard.com');

-- --------------------------------------------------------

--
-- Structure de la table `tracking_events`
--

DROP TABLE IF EXISTS `tracking_events`;
CREATE TABLE IF NOT EXISTS `tracking_events` (
  `id` int NOT NULL AUTO_INCREMENT,
  `type` varchar(20) NOT NULL,
  `action` varchar(50) DEFAULT NULL,
  `pays` varchar(2) DEFAULT NULL,
  `device` varchar(50) DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `beneficiaire_id` int NOT NULL,
  `source` varchar(20) DEFAULT NULL,
  `duration` smallint DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_FB0BD4065AF81F68` (`beneficiaire_id`),
  KEY `idx_tracking_benef_date` (`beneficiaire_id`,`created_at`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `tracking_events`
--

INSERT INTO `tracking_events` (`id`, `type`, `action`, `pays`, `device`, `created_at`, `beneficiaire_id`, `source`, `duration`) VALUES
(1, 'vue', NULL, NULL, 'mobile', '2026-03-30 14:14:15', 48, 'qr', NULL),
(2, 'clic', 'telephone', NULL, NULL, '2026-03-30 14:16:37', 48, NULL, NULL);

-- --------------------------------------------------------

--
-- Structure de la table `user`
--

DROP TABLE IF EXISTS `user`;
CREATE TABLE IF NOT EXISTS `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `email` varchar(180) NOT NULL,
  `roles` json NOT NULL,
  `password` varchar(255) NOT NULL,
  `is_verified` tinyint NOT NULL,
  `reset_token` varchar(100) DEFAULT NULL,
  `reset_token_expires_at` datetime DEFAULT NULL,
  `verification_token` varchar(100) DEFAULT NULL,
  `verification_token_expires_at` datetime DEFAULT NULL,
  `nom` varchar(100) DEFAULT NULL,
  `prenom` varchar(100) DEFAULT NULL,
  `telephone` varchar(20) DEFAULT NULL,
  `entreprise` varchar(200) DEFAULT NULL,
  `adresse` longtext,
  `created_at` datetime NOT NULL,
  `last_login_at` datetime DEFAULT NULL,
  `marketing_opt_in` tinyint DEFAULT NULL,
  `marketing_opt_in_at` datetime DEFAULT NULL,
  `marketing_opt_in_ip` varchar(45) DEFAULT NULL,
  `marketing_opt_in_version` varchar(20) DEFAULT NULL,
  `marketing_opt_in_channel` varchar(30) DEFAULT NULL,
  `password_changed_at` datetime DEFAULT NULL,
  `password_history` json DEFAULT NULL,
  `totp_secret` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_IDENTIFIER_EMAIL` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Déchargement des données de la table `user`
--

INSERT INTO `user` (`id`, `email`, `roles`, `password`, `is_verified`, `reset_token`, `reset_token_expires_at`, `verification_token`, `verification_token_expires_at`, `nom`, `prenom`, `telephone`, `entreprise`, `adresse`, `created_at`, `last_login_at`, `marketing_opt_in`, `marketing_opt_in_at`, `marketing_opt_in_ip`, `marketing_opt_in_version`, `marketing_opt_in_channel`, `password_changed_at`, `password_history`, `totp_secret`) VALUES
(1, 'contact@num-ecard.com', '[\"ROLE_ADMIN\"]', '$2y$13$bF/QdYgEDk0XYIm6VOf6SeXBtGWLXrGhhKRTTWuimv9MtTwoLafvy', 1, NULL, NULL, 'd024184ef05ac1559b597568100b7f92a81cfdd0c4b937a55fbade3bc707afa5', '2026-02-17 15:34:29', 'Sanachy', 'Patrice', NULL, NULL, NULL, '2026-02-16 15:34:28', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-09 15:27:55', NULL, 'HMGI5SUBMT75FLKCB7U4JH26ZCPDZXPOT7M46H4WQVXVOGFXWUSA'),
(3, 'deleted-3@void.local', '[]', '4ed857545d4e804012b831a85b11bd8f88ca6fc82c95ac6ee0e9c648bf8b62c8', 0, NULL, NULL, '02f99b1a4ec9ca6cd7cdd7b7be9aa0555ce8296b2169702c8e4af50744095275', '2026-02-20 11:33:21', 'Compte', 'Supprimé', NULL, NULL, NULL, '2026-02-19 11:33:20', NULL, 0, NULL, NULL, NULL, NULL, '2026-04-09 15:27:55', NULL, NULL),
(4, 'cecilephilippe31@gmail.com', '[]', '$2y$13$LJW1xTMQ1/36xNCXkbGOAOaBN1cTQ/rJtr24aQ78SSUtJ8qCus.nW', 1, NULL, NULL, NULL, NULL, 'CECILE', 'Philippe', NULL, NULL, NULL, '2026-04-28 07:01:56', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

--
-- Contraintes pour les tables déchargées
--

--
-- Contraintes pour la table `actu`
--
ALTER TABLE `actu`
  ADD CONSTRAINT `FK_837303425AF81F68` FOREIGN KEY (`beneficiaire_id`) REFERENCES `beneficiaire` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `admin_email_log`
--
ALTER TABLE `admin_email_log`
  ADD CONSTRAINT `FK_EF0C4DB13E89D3ED` FOREIGN KEY (`sent_to_id`) REFERENCES `user` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `FK_EF0C4DB1A45BB98C` FOREIGN KEY (`sent_by_id`) REFERENCES `user` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `beneficiaire`
--
ALTER TABLE `beneficiaire`
  ADD CONSTRAINT `FK_B140D80282EA2E54` FOREIGN KEY (`commande_id`) REFERENCES `commande_multi` (`id`),
  ADD CONSTRAINT `FK_B140D802BF396750` FOREIGN KEY (`id`) REFERENCES `card` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `commande_multi`
--
ALTER TABLE `commande_multi`
  ADD CONSTRAINT `FK_FCF99CC6A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `consent_log`
--
ALTER TABLE `consent_log`
  ADD CONSTRAINT `FK_30113729A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `consent_record`
--
ALTER TABLE `consent_record`
  ADD CONSTRAINT `FK_DA39FABEA76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `essentiel`
--
ALTER TABLE `essentiel`
  ADD CONSTRAINT `FK_8E4CAEB0BF396750` FOREIGN KEY (`id`) REFERENCES `card` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `force_carte`
--
ALTER TABLE `force_carte`
  ADD CONSTRAINT `FK_2B9B2FE1BF396750` FOREIGN KEY (`id`) REFERENCES `card` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `hebergement_subscription`
--
ALTER TABLE `hebergement_subscription`
  ADD CONSTRAINT `FK_18E62BFF5AF81F68` FOREIGN KEY (`beneficiaire_id`) REFERENCES `beneficiaire` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `modification_invoice`
--
ALTER TABLE `modification_invoice`
  ADD CONSTRAINT `FK_4718C215AF81F68` FOREIGN KEY (`beneficiaire_id`) REFERENCES `beneficiaire` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `multi`
--
ALTER TABLE `multi`
  ADD CONSTRAINT `FK_C5914305BF396750` FOREIGN KEY (`id`) REFERENCES `card` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `newsletter_consent_log`
--
ALTER TABLE `newsletter_consent_log`
  ADD CONSTRAINT `FK_6FF68E6A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `premium`
--
ALTER TABLE `premium`
  ADD CONSTRAINT `FK_893D1485BF396750` FOREIGN KEY (`id`) REFERENCES `card` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `push_subscription`
--
ALTER TABLE `push_subscription`
  ADD CONSTRAINT `FK_562830F3A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `recommendation`
--
ALTER TABLE `recommendation`
  ADD CONSTRAINT `FK_433224D25AF81F68` FOREIGN KEY (`beneficiaire_id`) REFERENCES `beneficiaire` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `rgpd_rights_requests`
--
ALTER TABLE `rgpd_rights_requests`
  ADD CONSTRAINT `FK_951BA948A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL;

--
-- Contraintes pour la table `tracking_events`
--
ALTER TABLE `tracking_events`
  ADD CONSTRAINT `FK_FB0BD4065AF81F68` FOREIGN KEY (`beneficiaire_id`) REFERENCES `beneficiaire` (`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 */;
