-- https://www.phpmyadmin.net/
--
-- Hôte : kuofkculearn.mysql.db
-- Généré le : mer. 23 juil. 2025 à 16:22
-- Version du serveur : 8.0.42-33
-- Version de PHP : 8.1.32

START TRANSACTION;



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

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

--
-- Structure de la table `batches`
--

CREATE TABLE `batches` (
  `batch_id` int NOT NULL,
  `program_id` int NOT NULL,
  `batch_name` varchar(255) NOT NULL,
  `start_register_date` date NOT NULL,
  `end_register_date` date NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date DEFAULT '0000-00-00',
  `is_active` tinyint(1) DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

INSERT INTO `batches` (`batch_id`, `program_id`, `batch_name`, `start_register_date`, `end_register_date`, `start_date`, `end_date`, `is_active`) VALUES
(10, 12, 'منهجية التميز', '2025-07-08', '2025-07-31', '2025-08-01', '2025-12-03', 1),
(12, 14, 'الدفعة sami', '2025-07-01', '2025-07-31', '2025-08-03', '2025-09-15', 1),
(13, 12, 'دفعة التميز 2', '2025-07-01', '2025-07-13', '2025-07-21', NULL, 1);

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

--
-- Structure de la table `batch_calendar`
--

CREATE TABLE `batch_calendar` (
  `calendar_id` int NOT NULL,
  `batch_id` int NOT NULL,
  `date` date NOT NULL,
  `event_type` enum('session','phase_test','level_test','final_exam','holiday') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'session',
  `seance_id` int DEFAULT NULL,
  `description` varchar(255) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

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

INSERT INTO `batch_calendar` (`calendar_id`, `batch_id`, `date`, `event_type`, `seance_id`, `description`, `created_at`) VALUES
(746, 10, '2025-08-03', 'session', 21, 'معنى لا إله إلا الله (صفحات 5-15) | الدرس 1 : كتاب التوحيد - المرحلة 1 : العقيدة الصحيحة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(747, 10, '2025-08-04', 'session', 22, 'أنواع التوحيد والشرك (صفحات 16-35) | الدرس 1 : كتاب التوحيد - المرحلة 1 : العقيدة الصحيحة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(748, 10, '2025-08-05', 'session', 23, 'توحيد الأسماء والصفات	 (صفحات 36-60) | الدرس 1 : كتاب التوحيد - المرحلة 1 : العقيدة الصحيحة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(749, 10, '2025-08-06', 'session', 24, 'الشفاعة والبدع	 (صفحات 61-80) | الدرس 1 : كتاب التوحيد - المرحلة 1 : العقيدة الصحيحة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(750, 10, '2025-08-07', 'session', 25, 'الرد على الشبهات (صفحات 81-100) | الدرس 1 : كتاب التوحيد - المرحلة 1 : العقيدة الصحيحة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(751, 10, '2025-08-10', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 1 : العقيدة الصحيحة', '2025-07-08 03:10:43'),
(752, 10, '2025-08-11', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة (يوم 1/7)', '2025-07-08 03:10:43'),
(753, 10, '2025-08-12', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة (يوم 2/7)', '2025-07-08 03:10:43'),
(754, 10, '2025-08-13', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة (يوم 3/7)', '2025-07-08 03:10:43'),
(755, 10, '2025-08-14', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة (يوم 4/7)', '2025-07-08 03:10:43'),
(756, 10, '2025-08-15', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة (يوم 5/7)', '2025-07-08 03:10:43'),
(757, 10, '2025-08-16', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة (يوم 6/7)', '2025-07-08 03:10:43'),
(758, 10, '2025-08-17', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة (يوم 7/7)', '2025-07-08 03:10:43'),
(759, 10, '2025-08-18', '', NULL, 'راحة بعد اختبار المرحلة: المرحلة 1 : العقيدة الصحيحة', '2025-07-08 03:10:43'),
(760, 10, '2025-08-19', 'session', 26, 'الطهارة (صفحات 5-40) | الدرس 1 : كتاب فقه العبادات - المرحلة 2 : أساسيات العبادة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(761, 10, '2025-08-20', 'session', 27, 'الصلاة (صفحات 41-100) | الدرس 1 : كتاب فقه العبادات - المرحلة 2 : أساسيات العبادة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(762, 10, '2025-08-21', 'session', 28, 'الزكاة (صفحات 101-130) | الدرس 1 : كتاب فقه العبادات - المرحلة 2 : أساسيات العبادة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(763, 10, '2025-08-24', 'session', 29, 'الصيام (صفحات 131-160) | الدرس 1 : كتاب فقه العبادات - المرحلة 2 : أساسيات العبادة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(764, 10, '2025-08-25', 'session', 30, 'الحج (صفحات 161-200) | الدرس 1 : كتاب فقه العبادات - المرحلة 2 : أساسيات العبادة - المستوى الأول : التأسيس العقدي والعبادي', '2025-07-08 03:10:43'),
(765, 10, '2025-08-26', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 2 : أساسيات العبادة', '2025-07-08 03:10:43'),
(766, 10, '2025-08-27', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : أساسيات العبادة (يوم 1/7)', '2025-07-08 03:10:43'),
(767, 10, '2025-08-28', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : أساسيات العبادة (يوم 2/7)', '2025-07-08 03:10:43'),
(768, 10, '2025-08-29', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : أساسيات العبادة (يوم 3/7)', '2025-07-08 03:10:43'),
(769, 10, '2025-08-30', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : أساسيات العبادة (يوم 4/7)', '2025-07-08 03:10:43'),
(770, 10, '2025-08-31', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : أساسيات العبادة (يوم 5/7)', '2025-07-08 03:10:43'),
(771, 10, '2025-09-01', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : أساسيات العبادة (يوم 6/7)', '2025-07-08 03:10:43'),
(772, 10, '2025-09-02', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : أساسيات العبادة (يوم 7/7)', '2025-07-08 03:10:43'),
(773, 10, '2025-09-03', '', NULL, 'راحة بعد اختبار المرحلة: المرحلة 2 : أساسيات العبادة', '2025-07-08 03:10:43'),
(774, 10, '2025-09-04', 'session', 31, 'مفهوم التزكية (صفحات 5-30) | الدرس 1 : كتاب مدارج السالكين  - المرحلة 1 : تزكية النفس - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(775, 10, '2025-09-07', 'session', 32, 'المجاهدة والنية	 (صفحات 31-70) | الدرس 1 : كتاب مدارج السالكين  - المرحلة 1 : تزكية النفس - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(776, 10, '2025-09-08', 'session', 33, 'الصبر والتوكل (صفحات 71-100) | الدرس 1 : كتاب مدارج السالكين  - المرحلة 1 : تزكية النفس - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(777, 10, '2025-09-09', 'session', 34, 'محاسبة النفس (صفحات 111-140) | الدرس 1 : كتاب مدارج السالكين  - المرحلة 1 : تزكية النفس - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(778, 10, '2025-09-10', 'session', 35, 'درجات الإيمان (صفحات 141-180) | الدرس 1 : كتاب مدارج السالكين  - المرحلة 1 : تزكية النفس - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(779, 10, '2025-09-11', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 1 : تزكية النفس', '2025-07-08 03:10:43'),
(780, 10, '2025-09-12', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : تزكية النفس (يوم 1/7)', '2025-07-08 03:10:43'),
(781, 10, '2025-09-13', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : تزكية النفس (يوم 2/7)', '2025-07-08 03:10:43'),
(782, 10, '2025-09-14', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : تزكية النفس (يوم 3/7)', '2025-07-08 03:10:43'),
(783, 10, '2025-09-15', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : تزكية النفس (يوم 4/7)', '2025-07-08 03:10:43'),
(784, 10, '2025-09-16', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : تزكية النفس (يوم 5/7)', '2025-07-08 03:10:43'),
(785, 10, '2025-09-17', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : تزكية النفس (يوم 6/7)', '2025-07-08 03:10:43'),
(786, 10, '2025-09-18', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : تزكية النفس (يوم 7/7)', '2025-07-08 03:10:43'),
(787, 10, '2025-09-21', '', NULL, 'راحة بعد اختبار المرحلة: المرحلة 1 : تزكية النفس', '2025-07-08 03:10:43'),
(788, 10, '2025-09-22', 'session', 36, 'الصدق والأمانة (صفحات 12-35) | الدرس 1 : كتاب رياض الصالحين - المرحلة 2 : الأخلاق الإسلامية - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(789, 10, '2025-09-23', 'session', 37, 'الحياء والتواضع (صفحات 36-55) | الدرس 1 : كتاب رياض الصالحين - المرحلة 2 : الأخلاق الإسلامية - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(790, 10, '2025-09-24', 'session', 38, 'بر الوالدين (صفحات 56-75) | الدرس 1 : كتاب رياض الصالحين - المرحلة 2 : الأخلاق الإسلامية - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(791, 10, '2025-09-25', 'session', 39, 'كظم الغيظ (صفحات 76-90) | الدرس 1 : كتاب رياض الصالحين - المرحلة 2 : الأخلاق الإسلامية - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(792, 10, '2025-09-28', 'session', 40, 'التعامل بالرحمة (صفحات 91-100) | الدرس 1 : كتاب رياض الصالحين - المرحلة 2 : الأخلاق الإسلامية - المستوى الثاني : تهذيب النفس وتزكية القلب', '2025-07-08 03:10:43'),
(793, 10, '2025-09-29', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية', '2025-07-08 03:10:43'),
(794, 10, '2025-09-30', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية (يوم 1/7)', '2025-07-08 03:10:43'),
(795, 10, '2025-10-01', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية (يوم 2/7)', '2025-07-08 03:10:43'),
(796, 10, '2025-10-02', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية (يوم 3/7)', '2025-07-08 03:10:43'),
(797, 10, '2025-10-03', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية (يوم 4/7)', '2025-07-08 03:10:43'),
(798, 10, '2025-10-04', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية (يوم 5/7)', '2025-07-08 03:10:43'),
(799, 10, '2025-10-05', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية (يوم 6/7)', '2025-07-08 03:10:43'),
(800, 10, '2025-10-06', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية (يوم 7/7)', '2025-07-08 03:10:43'),
(801, 10, '2025-10-07', '', NULL, 'راحة بعد اختبار المرحلة: المرحلة 2 : الأخلاق الإسلامية', '2025-07-08 03:10:43'),
(802, 10, '2025-10-08', 'session', 41, 'القواعد العامة (صفحات 5-35) | الدرس 1 : كتاب فقه المعاملات المعاصرة - المرحلة 1 : فقه الواقع والمعاملات - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(803, 10, '2025-10-09', 'session', 42, 'البيع والشراء (صفحات 36-80) | الدرس 1 : كتاب فقه المعاملات المعاصرة - المرحلة 1 : فقه الواقع والمعاملات - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(804, 10, '2025-10-12', 'session', 43, 'الربا والبنوك (صفحات 81-130) | الدرس 1 : كتاب فقه المعاملات المعاصرة - المرحلة 1 : فقه الواقع والمعاملات - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(805, 10, '2025-10-13', 'session', 44, 'التأمين والادخار (صفحات 131-170) | الدرس 1 : كتاب فقه المعاملات المعاصرة - المرحلة 1 : فقه الواقع والمعاملات - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(806, 10, '2025-10-14', 'session', 45, 'التجارة الإلكترونية (صفحات 171-210) | الدرس 1 : كتاب فقه المعاملات المعاصرة - المرحلة 1 : فقه الواقع والمعاملات - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(807, 10, '2025-10-15', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات', '2025-07-08 03:10:43'),
(808, 10, '2025-10-16', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات (يوم 1/7)', '2025-07-08 03:10:43'),
(809, 10, '2025-10-17', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات (يوم 2/7)', '2025-07-08 03:10:43'),
(810, 10, '2025-10-18', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات (يوم 3/7)', '2025-07-08 03:10:43'),
(811, 10, '2025-10-19', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات (يوم 4/7)', '2025-07-08 03:10:43'),
(812, 10, '2025-10-20', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات (يوم 5/7)', '2025-07-08 03:10:43'),
(813, 10, '2025-10-21', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات (يوم 6/7)', '2025-07-08 03:10:43'),
(814, 10, '2025-10-22', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات (يوم 7/7)', '2025-07-08 03:10:43'),
(815, 10, '2025-10-23', '', NULL, 'راحة بعد اختبار المرحلة: المرحلة 1 : فقه الواقع والمعاملات', '2025-07-08 03:10:43'),
(816, 10, '2025-10-26', 'session', 46, 'من هو الداعية؟ (صفحات 5-25) | الدرس 2 : كتاب فن الدعوة - المرحلة 2 : فن الدعوة إلى الله - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(817, 10, '2025-10-27', 'session', 47, 'أساليب الحكمة (صفحات 26-50) | الدرس 2 : كتاب فن الدعوة - المرحلة 2 : فن الدعوة إلى الله - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(818, 10, '2025-10-28', 'session', 48, 'الرد على الشبهات (صفحات 51-75) | الدرس 2 : كتاب فن الدعوة - المرحلة 2 : فن الدعوة إلى الله - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(819, 10, '2025-10-29', 'session', 49, 'الدعوة بالقدوة (صفحات 76-95) | الدرس 2 : كتاب فن الدعوة - المرحلة 2 : فن الدعوة إلى الله - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(820, 10, '2025-10-30', 'session', 50, 'دعوة غير المسلمين (صفحات 96-120) | الدرس 2 : كتاب فن الدعوة - المرحلة 2 : فن الدعوة إلى الله - المستوى الثالث : الفقه المعاصر والدعوة', '2025-07-08 03:10:43'),
(821, 10, '2025-11-02', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله', '2025-07-08 03:10:43'),
(822, 10, '2025-11-03', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله (يوم 1/7)', '2025-07-08 03:10:43'),
(823, 10, '2025-11-04', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله (يوم 2/7)', '2025-07-08 03:10:43'),
(824, 10, '2025-11-05', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله (يوم 3/7)', '2025-07-08 03:10:43'),
(825, 10, '2025-11-06', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله (يوم 4/7)', '2025-07-08 03:10:43'),
(826, 10, '2025-11-07', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله (يوم 5/7)', '2025-07-08 03:10:43'),
(827, 10, '2025-11-08', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله (يوم 6/7)', '2025-07-08 03:10:43'),
(828, 10, '2025-11-09', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله (يوم 7/7)', '2025-07-08 03:10:43'),
(829, 10, '2025-11-10', '', NULL, 'راحة بعد اختبار المرحلة: المرحلة 2 : فن الدعوة إلى الله', '2025-07-08 03:10:43'),
(830, 10, '2025-11-11', '', NULL, 'مراجعة نهائية - يوم 1', '2025-07-08 03:10:43'),
(831, 10, '2025-11-12', '', NULL, 'مراجعة نهائية - يوم 2', '2025-07-08 03:10:43'),
(832, 10, '2025-11-13', '', NULL, 'مراجعة نهائية - يوم 3', '2025-07-08 03:10:43'),
(833, 10, '2025-11-16', '', NULL, 'مراجعة نهائية - يوم 4', '2025-07-08 03:10:43'),
(834, 10, '2025-11-17', '', NULL, 'مراجعة نهائية - يوم 5', '2025-07-08 03:10:43'),
(835, 10, '2025-11-18', '', NULL, 'مراجعة نهائية - يوم 6', '2025-07-08 03:10:43'),
(836, 10, '2025-11-19', '', NULL, 'مراجعة نهائية - يوم 7', '2025-07-08 03:10:43'),
(837, 10, '2025-11-20', 'final_exam', NULL, 'الامتحان النهائي (يوم 1/14)', '2025-07-08 03:10:43'),
(838, 10, '2025-11-21', 'final_exam', NULL, 'الامتحان النهائي (يوم 2/14)', '2025-07-08 03:10:43'),
(839, 10, '2025-11-22', 'final_exam', NULL, 'الامتحان النهائي (يوم 3/14)', '2025-07-08 03:10:43'),
(840, 10, '2025-11-23', 'final_exam', NULL, 'الامتحان النهائي (يوم 4/14)', '2025-07-08 03:10:43'),
(841, 10, '2025-11-24', 'final_exam', NULL, 'الامتحان النهائي (يوم 5/14)', '2025-07-08 03:10:43'),
(842, 10, '2025-11-25', 'final_exam', NULL, 'الامتحان النهائي (يوم 6/14)', '2025-07-08 03:10:43'),
(843, 10, '2025-11-26', 'final_exam', NULL, 'الامتحان النهائي (يوم 7/14)', '2025-07-08 03:10:43'),
(844, 10, '2025-11-27', 'final_exam', NULL, 'الامتحان النهائي (يوم 8/14)', '2025-07-08 03:10:43'),
(845, 10, '2025-11-28', 'final_exam', NULL, 'الامتحان النهائي (يوم 9/14)', '2025-07-08 03:10:43'),
(846, 10, '2025-11-29', 'final_exam', NULL, 'الامتحان النهائي (يوم 10/14)', '2025-07-08 03:10:43'),
(847, 10, '2025-11-30', 'final_exam', NULL, 'الامتحان النهائي (يوم 11/14)', '2025-07-08 03:10:43'),
(848, 10, '2025-12-01', 'final_exam', NULL, 'الامتحان النهائي (يوم 12/14)', '2025-07-08 03:10:43'),
(849, 10, '2025-12-02', 'final_exam', NULL, 'الامتحان النهائي (يوم 13/14)', '2025-07-08 03:10:43'),
(850, 10, '2025-12-03', 'final_exam', NULL, 'الامتحان النهائي (يوم 14/14)', '2025-07-08 03:10:43'),
(904, 12, '2025-08-03', 'session', 53, 'الحصة 1 (صفحات 1-20) | الدرس 1 - المرحلة 1 - mastwa 1', '2025-07-08 19:22:03'),
(905, 12, '2025-08-04', 'session', 54, 'الحصة 2 (صفحات 23-50) | الدرس 1 - المرحلة 1 - mastwa 1', '2025-07-08 19:22:03'),
(906, 12, '2025-08-05', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 1', '2025-07-08 19:22:03'),
(907, 12, '2025-08-06', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 1/7)', '2025-07-08 19:22:03'),
(908, 12, '2025-08-07', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 2/7)', '2025-07-08 19:22:03'),
(909, 12, '2025-08-08', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 3/7)', '2025-07-08 19:22:03'),
(910, 12, '2025-08-09', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 4/7)', '2025-07-08 19:22:03'),
(911, 12, '2025-08-10', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 5/7)', '2025-07-08 19:22:03'),
(912, 12, '2025-08-11', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 6/7)', '2025-07-08 19:22:03'),
(913, 12, '2025-08-12', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 7/7)', '2025-07-08 19:22:03'),
(914, 12, '2025-08-13', 'session', 55, 'الحصة 1 (صفحات 1-12) | الدرس 1 - المرحلة 1 - mastwa 2', '2025-07-08 19:22:03'),
(915, 12, '2025-08-14', '', NULL, 'مراجعة لاختبار المرحلة: المرحلة 1', '2025-07-08 19:22:03'),
(916, 12, '2025-08-15', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 1/7)', '2025-07-08 19:22:03'),
(917, 12, '2025-08-16', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 2/7)', '2025-07-08 19:22:03'),
(918, 12, '2025-08-17', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 3/7)', '2025-07-08 19:22:03'),
(919, 12, '2025-08-18', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 4/7)', '2025-07-08 19:22:03'),
(920, 12, '2025-08-19', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 5/7)', '2025-07-08 19:22:03'),
(921, 12, '2025-08-20', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 6/7)', '2025-07-08 19:22:03'),
(922, 12, '2025-08-21', 'phase_test', NULL, 'اختبار المرحلة: المرحلة 1 (يوم 7/7)', '2025-07-08 19:22:03'),
(923, 12, '2025-08-24', '', NULL, 'مراجعة نهائية - يوم 1', '2025-07-08 19:22:03'),
(924, 12, '2025-08-25', '', NULL, 'مراجعة نهائية - يوم 2', '2025-07-08 19:22:03'),
(925, 12, '2025-08-26', '', NULL, 'مراجعة نهائية - يوم 3', '2025-07-08 19:22:03'),
(926, 12, '2025-08-27', '', NULL, 'مراجعة نهائية - يوم 4', '2025-07-08 19:22:03'),
(927, 12, '2025-08-28', '', NULL, 'مراجعة نهائية - يوم 5', '2025-07-08 19:22:03'),
(928, 12, '2025-08-31', '', NULL, 'مراجعة نهائية - يوم 6', '2025-07-08 19:22:03'),
(929, 12, '2025-09-01', '', NULL, 'مراجعة نهائية - يوم 7', '2025-07-08 19:22:03'),
(930, 12, '2025-09-02', 'final_exam', NULL, 'الامتحان النهائي (يوم 1/14)', '2025-07-08 19:22:03'),
(931, 12, '2025-09-03', 'final_exam', NULL, 'الامتحان النهائي (يوم 2/14)', '2025-07-08 19:22:03'),
(932, 12, '2025-09-04', 'final_exam', NULL, 'الامتحان النهائي (يوم 3/14)', '2025-07-08 19:22:03'),
(933, 12, '2025-09-05', 'final_exam', NULL, 'الامتحان النهائي (يوم 4/14)', '2025-07-08 19:22:03'),
(934, 12, '2025-09-06', 'final_exam', NULL, 'الامتحان النهائي (يوم 5/14)', '2025-07-08 19:22:03'),
(935, 12, '2025-09-07', 'final_exam', NULL, 'الامتحان النهائي (يوم 6/14)', '2025-07-08 19:22:03'),
(936, 12, '2025-09-08', 'final_exam', NULL, 'الامتحان النهائي (يوم 7/14)', '2025-07-08 19:22:03'),
(937, 12, '2025-09-09', 'final_exam', NULL, 'الامتحان النهائي (يوم 8/14)', '2025-07-08 19:22:03'),
(938, 12, '2025-09-10', 'final_exam', NULL, 'الامتحان النهائي (يوم 9/14)', '2025-07-08 19:22:03'),
(939, 12, '2025-09-11', 'final_exam', NULL, 'الامتحان النهائي (يوم 10/14)', '2025-07-08 19:22:03'),
(940, 12, '2025-09-12', 'final_exam', NULL, 'الامتحان النهائي (يوم 11/14)', '2025-07-08 19:22:03'),
(941, 12, '2025-09-13', 'final_exam', NULL, 'الامتحان النهائي (يوم 12/14)', '2025-07-08 19:22:03'),
(942, 12, '2025-09-14', 'final_exam', NULL, 'الامتحان النهائي (يوم 13/14)', '2025-07-08 19:22:03'),
(943, 12, '2025-09-15', 'final_exam', NULL, 'الامتحان النهائي (يوم 14/14)', '2025-07-08 19:22:03');

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

--
-- Structure de la table `calendar_default_settings`
--

CREATE TABLE `calendar_default_settings` (
  `default_setting_id` int NOT NULL,
  `setting_name` varchar(255) NOT NULL COMMENT 'اسم الإعداد الافتراضي',
  `setting_description` text COMMENT 'وصف الإعداد الافتراضي',
  `setting_type` enum('batch','session','individual') DEFAULT 'batch',
  `default_working_days` json NOT NULL COMMENT 'أيام الدراسة الافتراضية (JSON array)',
  `default_days_before_phase_test` int NOT NULL DEFAULT '2' COMMENT 'عدد الأيام قبل اختبار المرحلة',
  `default_phase_test_duration` int NOT NULL DEFAULT '3' COMMENT 'مدة اختبار المرحلة بالأيام',
  `default_days_after_phase_test` int NOT NULL DEFAULT '1' COMMENT 'عدد الأيام بعد اختبار المرحلة',
  `default_keep_phase_test_open` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'ترك اختبار المرحلة مفتوحاً',
  `default_days_before_level_test` int NOT NULL DEFAULT '2' COMMENT 'عدد الأيام قبل اختبار المستوى',
  `default_level_test_duration` int NOT NULL DEFAULT '3' COMMENT 'مدة اختبار المستوى بالأيام',
  `default_days_after_level_test` int NOT NULL DEFAULT '1' COMMENT 'عدد الأيام بعد اختبار المستوى',
  `default_keep_level_test_open` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'ترك اختبار المستوى مفتوحاً',
  `default_days_before_final_exam` int NOT NULL DEFAULT '7' COMMENT 'عدد الأيام قبل الامتحان النهائي',
  `default_final_test_duration` int NOT NULL DEFAULT '5' COMMENT 'مدة الامتحان النهائي بالأيام',
  `default_keep_final_test_open` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'ترك الامتحان النهائي مفتوحاً',
  `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'هل الإعداد نشط',
  `is_system_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'هل هو الإعداد الافتراضي للنظام',
  `created_by` int DEFAULT NULL COMMENT 'معرف المستخدم الذي أنشأ الإعداد',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'تاريخ الإنشاء',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'تاريخ آخر تحديث'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

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

INSERT INTO `calendar_default_settings` (`default_setting_id`, `setting_name`, `setting_description`, `setting_type`, `default_working_days`, `default_days_before_phase_test`, `default_phase_test_duration`, `default_days_after_phase_test`, `default_keep_phase_test_open`, `default_days_before_level_test`, `default_level_test_duration`, `default_days_after_level_test`, `default_keep_level_test_open`, `default_days_before_final_exam`, `default_final_test_duration`, `default_keep_final_test_open`, `is_active`, `is_system_default`, `created_by`, `created_at`, `updated_at`) VALUES
(1, 'الإعدادات الافتراضية للدفعات', 'الإعدادات الافتراضية للدفعات الدراسية والمجموعات الكبيرة', 'batch', '[\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]', 2, 3, 1, 0, 2, 3, 1, 0, 7, 5, 0, 1, 1, 3, '2025-06-20 16:17:26', '2025-06-21 13:37:06');

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

--
-- Structure de la table `certificates`
--

CREATE TABLE `certificates` (
  `certificate_id` int NOT NULL,
  `student_id` int NOT NULL,
  `program_id` int NOT NULL,
  `level_id` int DEFAULT NULL,
  `certificate_url` varchar(255) NOT NULL,
  `issue_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

--
-- Structure de la table `countries`
--

CREATE TABLE `countries` (
  `id` int NOT NULL,
  `name_ar` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'اسم البلد بالعربية',
  `name_en` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Country name in English',
  `code` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Country calling code (+216, +33, etc.)',
  `iso_code` varchar(3) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ISO country code (TUN, FRA, etc.)',
  `flag_emoji` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Flag emoji',
  `is_active` tinyint(1) DEFAULT '1',
  `sort_order` int DEFAULT '999'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `countries` (`id`, `name_ar`, `name_en`, `code`, `iso_code`, `flag_emoji`, `is_active`, `sort_order`) VALUES
(1, 'تونس', 'Tunisia', '+216', 'TUN', '🇹🇳', 1, 1),
(2, 'الجزائر', 'Algeria', '+213', 'DZA', '🇩🇿', 1, 2),
(3, 'المغرب', 'Morocco', '+212', 'MAR', '🇲🇦', 1, 3),
(4, 'ليبيا', 'Libya', '+218', 'LBY', '🇱🇾', 1, 4),
(5, 'مصر', 'Egypt', '+20', 'EGY', '🇪🇬', 1, 5),
(6, 'السعودية', 'Saudi Arabia', '+966', 'SAU', '🇸🇦', 1, 6),
(7, 'الإمارات', 'UAE', '+971', 'ARE', '🇦🇪', 1, 7),
(8, 'قطر', 'Qatar', '+974', 'QAT', '🇶🇦', 1, 8),
(9, 'الكويت', 'Kuwait', '+965', 'KWT', '🇰🇼', 1, 9),
(10, 'البحرين', 'Bahrain', '+973', 'BHR', '🇧🇭', 1, 10),
(11, 'عمان', 'Oman', '+968', 'OMN', '🇴🇲', 1, 11),
(12, 'الأردن', 'Jordan', '+962', 'JOR', '🇯🇴', 1, 12),
(13, 'لبنان', 'Lebanon', '+961', 'LBN', '🇱🇧', 1, 13),
(14, 'سوريا', 'Syria', '+963', 'SYR', '🇸🇾', 1, 14),
(15, 'العراق', 'Iraq', '+964', 'IRQ', '🇮🇶', 1, 15),
(16, 'فلسطين', 'Palestine', '+970', 'PSE', '🇵🇸', 1, 16),
(17, 'السودان', 'Sudan', '+249', 'SDN', '🇸🇩', 1, 17),
(18, 'فرنسا', 'France', '+33', 'FRA', '🇫🇷', 1, 18),
(19, 'ألمانيا', 'Germany', '+49', 'DEU', '🇩🇪', 1, 19),
(20, 'إيطاليا', 'Italy', '+39', 'ITA', '🇮🇹', 1, 20),
(21, 'إسبانيا', 'Spain', '+34', 'ESP', '🇪🇸', 1, 21),
(22, 'تركيا', 'Turkey', '+90', 'TUR', '🇹🇷', 1, 22),
(23, 'كندا', 'Canada', '+1', 'CAN', '🇨🇦', 1, 23),
(24, 'المملكة المتحدة', 'United Kingdom', '+44', 'GBR', '🇬🇧', 1, 25);

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

--
-- Structure de la table `course_schedules`
--

CREATE TABLE `course_schedules` (
  `schedule_id` int NOT NULL,
  `batch_id` int NOT NULL,
  `lesson_id` int DEFAULT NULL,
  `scheduled_date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

--
-- Structure de la table `excluded_weekdays`
--

CREATE TABLE `excluded_weekdays` (
  `weekday_id` int NOT NULL,
  `weekday_name` enum('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

INSERT INTO `excluded_weekdays` (`weekday_id`, `weekday_name`) VALUES
(1, 'Saturday'),
(10, 'Friday');

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

--
-- Structure de la table `failed_login_attempts`
--

CREATE TABLE `failed_login_attempts` (
  `id` int NOT NULL,
  `ip_address` varchar(45) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `user_agent` text,
  `attempted_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `reason` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

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

INSERT INTO `failed_login_attempts` (`id`, `ip_address`, `email`, `user_agent`, `attempted_at`, `reason`) VALUES
(1, '165.50.240.212', 'afisemah36@gmail.com', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', '2025-07-13 16:24:27', 'invalid_credentials'),
(2, '197.25.101.72', 'afisemah36@gmail.com', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', '2025-07-14 14:01:05', 'invalid_credentials'),
(3, '197.25.101.72', 'afisemah36@gmail.com', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', '2025-07-14 14:01:13', 'invalid_credentials'),
(4, '197.25.101.72', 'afisemah36@gmail.com', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', '2025-07-14 14:01:26', 'invalid_credentials'),
(5, '197.25.101.72', 'afisemah@gmail.com', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', '2025-07-14 14:07:50', 'invalid_credentials');

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

--
-- Structure de la table `files`
--

CREATE TABLE `files` (
  `file_id` int NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `file_type` enum('pdf','mp3','video','audio','document','image') NOT NULL,
  `file_url` varchar(255) DEFAULT NULL,
  `local_path` varchar(255) DEFAULT NULL,
  `folder_id` int DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT '1',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

INSERT INTO `files` (`file_id`, `file_name`, `file_type`, `file_url`, `local_path`, `folder_id`, `is_active`, `created_at`) VALUES
(2, 'pdfpdf', '', '', '/uploads/6824ce813a90f.pdf', 7, 0, '2025-05-14 17:10:25'),
(3, 'azzef zf ezf zefze', 'video', 'https://www.youtube.com/watch?v=ys_fN3uy7bQ', NULL, 7, 0, '2025-05-14 17:11:46'),
(4, 'kjhjkrfhkejf', '', 'https://www.youtube.com/watch?v=ys_fN3uy7bQ', NULL, 2, 0, '2025-05-15 16:50:02'),
(5, 'sam', 'pdf', '', '/uploads/6866cd99ef37a.pdf', 1, 0, '2025-07-03 18:36:10'),
(6, 'الملف الملف الملف', 'pdf', '', '/uploads/6868f73f0e853.pdf', 3, 0, '2025-07-05 09:58:23'),
(7, 'سورة الفاتحة', 'video', 'https://www.youtube.com/watch?v=h0pEL8GklCc', NULL, NULL, 0, '2025-07-05 15:26:17'),
(8, 'سورة الفاتحة', 'audio', 'https://archive.org/download/Ammar-Almulla/001.mp3', NULL, 6, 0, '2025-07-05 15:27:38'),
(9, 'سورة الفاتحة', 'audio', '', '/uploads/68694560ddd15.mp3', 6, 0, '2025-07-05 15:31:44'),
(10, 'سورة الفاتحة', 'video', '', '/uploads/68694662550b1.mp4', NULL, 0, '2025-07-05 15:36:02'),
(11, 'test link video', 'video', 'https://www.youtube.com/watch?v=246BbQIV_Pk', NULL, NULL, 0, '2025-07-06 14:12:01'),
(12, 'الدعوة إلى الله وأخلاق الدعاة ', 'pdf', '', '/uploads/686c6db33a4c9.pdf', 9, 1, '2025-07-08 01:00:35'),
(13, 'القواعد الحاكمة لفقه المعاملات', 'pdf', '', '/uploads/686c6dc70a788.pdf', 9, 1, '2025-07-08 01:00:55'),
(14, 'رياض الصالحين من حديث سيد المرسلين ت الحلبي', 'pdf', '', '/uploads/686c6dee7b4e5.pdf', 9, 1, '2025-07-08 01:01:34'),
(15, 'مدارج السالكين بين منازل اياك نعبد واياك نستعين', 'pdf', '', '/uploads/686c6e0e04adc.pdf', 9, 1, '2025-07-08 01:02:06'),
(16, 'فقه السنة  العبادات  ', 'pdf', '', '/uploads/686c6e3675f80.pdf', 9, 1, '2025-07-08 01:02:46'),
(17, 'التوحيد', 'pdf', '', '/uploads/686c6e53529cc.pdf', 9, 1, '2025-07-08 01:03:15'),
(18, 'test', 'pdf', '', '/uploads/686c9507cfd42.pdf', 10, 0, '2025-07-08 03:48:23'),
(19, 'test_sami', 'pdf', '', '/uploads/686c95bd6f59b.pdf', 11, 1, '2025-07-08 03:51:25'),
(20, 'test_sami_mp4', 'video', '', '/uploads/686c95d50f8f4.mp4', 11, 1, '2025-07-08 03:51:49'),
(21, 'test_sami_mp3', 'audio', '', '/uploads/686c95e721ed5.mp3', 11, 1, '2025-07-08 03:52:07'),
(22, 'kteb 1', 'pdf', '', '/uploads/686d6cdb6a708.pdf', 14, 1, '2025-07-08 19:09:15');

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

--
-- Structure de la table `folders`
--

CREATE TABLE `folders` (
  `folder_id` int NOT NULL,
  `folder_name` varchar(255) NOT NULL,
  `parent_folder_id` int DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

INSERT INTO `folders` (`folder_id`, `folder_name`, `parent_folder_id`, `created_at`) VALUES
(9, 'منهجية التميز', NULL, '2025-07-08 00:51:47'),
(11, 'test_sami', NULL, '2025-07-08 03:51:03'),
(12, 'testtest', 11, '2025-07-08 03:52:18'),
(13, 'sami', NULL, '2025-07-08 19:07:56'),
(14, 'mostawa 1', 13, '2025-07-08 19:08:23'),
(15, 'mostawa 2', 13, '2025-07-08 19:08:37');

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

--
-- Structure de la table `individuals`
--

CREATE TABLE `individuals` (
  `individual_id` int NOT NULL,
  `program_id` int NOT NULL,
  `individual_name` varchar(255) NOT NULL,
  `description` text,
  `start_date` date NOT NULL,
  `end_date` date DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

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

--
-- Structure de la table `lessons`
--

CREATE TABLE `lessons` (
  `lesson_id` int NOT NULL,
  `phase_id` int NOT NULL,
  `lesson_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `lesson_description` text COLLATE utf8mb4_general_ci,
  `sequence_order` int NOT NULL,
  `pdf_link` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

INSERT INTO `lessons` (`lesson_id`, `phase_id`, `lesson_name`, `lesson_description`, `sequence_order`, `pdf_link`, `created_at`, `updated_at`) VALUES
(19, 40, 'الدرس 1 : كتاب التوحيد', 'كتاب التوحيد (محمد بن عبدالوهاب)', 1, '/uploads/686c6e53529cc.pdf', '2025-07-08 01:06:31', '2025-07-08 01:06:31'),
(20, 41, 'الدرس 1 : كتاب فقه العبادات', 'كتاب فقه العبادات (مختصر من فقه السنة)', 1, '/uploads/686c6e3675f80.pdf', '2025-07-08 01:07:29', '2025-07-08 01:07:29'),
(21, 42, 'الدرس 1 : كتاب مدارج السالكين ', 'كتاب مدارج السالكين (ابن القيم)', 1, '/uploads/686c6e0e04adc.pdf', '2025-07-08 01:08:49', '2025-07-08 01:08:49'),
(22, 43, 'الدرس 1 : كتاب رياض الصالحين', ' كتاب رياض الصالحين (الإمام النووي)', 1, '/uploads/686c6dee7b4e5.pdf', '2025-07-08 01:09:27', '2025-07-08 01:09:27'),
(23, 44, 'الدرس 1 : كتاب فقه المعاملات المعاصرة', 'كتاب فقه المعاملات المعاصرة (يوسف القرضاوي)', 1, '/uploads/686c6dc70a788.pdf', '2025-07-08 01:10:18', '2025-07-08 01:10:18'),
(24, 45, 'الدرس 2 : كتاب فن الدعوة', 'كتاب فن الدعوة (مختصر من كتب ابن باز / ابن عثيمين / القرضاوي)', 1, '/uploads/686c6db33a4c9.pdf', '2025-07-08 01:10:47', '2025-07-08 01:10:47'),
(28, 49, 'الدرس 1', 'الدرس', 1, '/uploads/686c95bd6f59b.pdf', '2025-07-08 19:12:32', '2025-07-08 19:12:32'),
(29, 50, 'الدرس 1', 'الدرس', 1, '/uploads/686c6e53529cc.pdf', '2025-07-08 19:12:47', '2025-07-08 19:12:47');

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

--
-- Structure de la table `levels`
--

CREATE TABLE `levels` (
  `level_id` int NOT NULL,
  `program_id` int NOT NULL,
  `level_name` varchar(255) NOT NULL,
  `sequence_order` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

INSERT INTO `levels` (`level_id`, `program_id`, `level_name`, `sequence_order`) VALUES
(27, 12, 'المستوى الأول : التأسيس العقدي والعبادي', 1),
(28, 12, 'المستوى الثاني : تهذيب النفس وتزكية القلب', 2),
(29, 12, 'المستوى الثالث : الفقه المعاصر والدعوة', 3),
(32, 14, 'mastwa 1', 1),
(33, 14, 'mastwa 2', 2);

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

--
-- Structure de la table `non_working_periods`
--

CREATE TABLE `non_working_periods` (
  `period_id` int NOT NULL,
  `period_name` varchar(255) NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

INSERT INTO `non_working_periods` (`period_id`, `period_name`, `start_date`, `end_date`) VALUES
(2, 'dzdzdzd', '2025-06-04', '2025-06-07'),
(3, 'vgvgvgvgv', '2025-07-12', '2025-07-12'),
(4, 'عيد الفطر', '2025-07-01', '2025-07-01'),
(5, 'jkgdchjzkhdc z', '2025-07-10', '2025-07-10');

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

--
-- Structure de la table `phases`
--

CREATE TABLE `phases` (
  `phase_id` int NOT NULL,
  `level_id` int NOT NULL,
  `phase_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `sequence_order` int NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

INSERT INTO `phases` (`phase_id`, `level_id`, `phase_name`, `sequence_order`, `created_at`, `updated_at`) VALUES
(40, 27, 'المرحلة 1 : العقيدة الصحيحة', 1, '2025-07-08 00:49:30', '2025-07-08 00:49:30'),
(41, 27, 'المرحلة 2 : أساسيات العبادة', 2, '2025-07-08 00:49:51', '2025-07-08 00:49:51'),
(42, 28, 'المرحلة 1 : تزكية النفس', 1, '2025-07-08 00:50:04', '2025-07-08 00:50:04'),
(43, 28, 'المرحلة 2 : الأخلاق الإسلامية', 2, '2025-07-08 00:50:15', '2025-07-08 00:50:15'),
(44, 29, 'المرحلة 1 : فقه الواقع والمعاملات', 1, '2025-07-08 00:50:26', '2025-07-08 00:50:26'),
(45, 29, 'المرحلة 2 : فن الدعوة إلى الله', 2, '2025-07-08 00:50:36', '2025-07-08 00:50:36'),
(49, 32, 'المرحلة 1', 1, '2025-07-08 19:10:37', '2025-07-08 19:10:37'),
(50, 33, 'المرحلة 1', 1, '2025-07-08 19:10:48', '2025-07-08 19:10:48');

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

--
-- Structure de la table `programs`
--

CREATE TABLE `programs` (
  `program_id` int NOT NULL,
  `program_name` varchar(255) NOT NULL,
  `description` text,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

INSERT INTO `programs` (`program_id`, `program_name`, `description`, `created_at`, `updated_at`) VALUES
(12, 'منهجية التميز', 'منهجية التميز', '2025-07-08 00:39:22', '2025-07-14 20:39:20'),
(14, 'sami', 'sami', '2025-07-08 19:10:03', '2025-07-14 20:39:20');

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

--
-- Structure de la table `questions`
--

CREATE TABLE `questions` (
  `question_id` int NOT NULL,
  `book_id` int NOT NULL,
  `page_number` int NOT NULL,
  `question_text` text NOT NULL,
  `correct_answer` varchar(255) NOT NULL,
  `wrong_answer_1` varchar(255) DEFAULT NULL,
  `wrong_answer_2` varchar(255) DEFAULT NULL,
  `question_type` enum('multiple_choice','true_false') DEFAULT 'multiple_choice',
  `lesson_id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

--
-- Structure de la table `registrations`
--

CREATE TABLE `registrations` (
  `registration_id` int NOT NULL,
  `student_id` int NOT NULL,
  `program_id` int NOT NULL,
  `batch_id` int DEFAULT NULL,
  `registration_type` enum('individual','batch') DEFAULT 'individual',
  `registration_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

--
-- Structure de la table `seances_cours`
--

CREATE TABLE `seances_cours` (
  `seance_id` int NOT NULL,
  `lesson_id` int NOT NULL,
  `seance_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `seance_description` text COLLATE utf8mb4_general_ci,
  `sequence_order` int NOT NULL,
  `start_page` int DEFAULT NULL,
  `end_page` int DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

INSERT INTO `seances_cours` (`seance_id`, `lesson_id`, `seance_name`, `seance_description`, `sequence_order`, `start_page`, `end_page`, `created_at`, `updated_at`) VALUES
(21, 19, 'معنى لا إله إلا الله', 'معنى لا إله إلا الله', 1, 5, 15, '2025-07-08 01:20:44', '2025-07-08 01:20:44'),
(22, 19, 'أنواع التوحيد والشرك', 'أنواع التوحيد والشرك', 2, 16, 35, '2025-07-08 01:21:06', '2025-07-08 01:21:06'),
(23, 19, 'توحيد الأسماء والصفات	', 'توحيد الأسماء والصفات	', 3, 36, 60, '2025-07-08 01:21:30', '2025-07-08 01:21:30'),
(24, 19, 'الشفاعة والبدع	', 'الشفاعة والبدع	', 4, 61, 80, '2025-07-08 01:21:45', '2025-07-08 01:21:45'),
(25, 19, 'الرد على الشبهات', 'الرد على الشبهات	', 5, 81, 100, '2025-07-08 01:22:10', '2025-07-08 01:22:10'),
(26, 20, 'الطهارة', 'الطهارة', 1, 5, 40, '2025-07-08 01:24:45', '2025-07-08 01:24:45'),
(27, 20, 'الصلاة', 'الصلاة', 2, 41, 100, '2025-07-08 01:25:01', '2025-07-08 01:25:01'),
(28, 20, 'الزكاة', 'الزكاة', 3, 101, 130, '2025-07-08 01:25:17', '2025-07-08 01:25:17'),
(29, 20, 'الصيام', 'الصيام', 4, 131, 160, '2025-07-08 01:25:32', '2025-07-08 01:25:32'),
(30, 20, 'الحج', 'الحج', 5, 161, 200, '2025-07-08 01:25:47', '2025-07-08 01:25:47'),
(31, 21, 'مفهوم التزكية', 'مفهوم التزكية', 1, 5, 30, '2025-07-08 01:41:03', '2025-07-08 01:41:03'),
(32, 21, 'المجاهدة والنية	', 'المجاهدة والنية', 2, 31, 70, '2025-07-08 01:41:21', '2025-07-08 01:41:21'),
(33, 21, 'الصبر والتوكل', 'الصبر والتوكل', 3, 71, 100, '2025-07-08 01:41:44', '2025-07-08 01:41:44'),
(34, 21, 'محاسبة النفس', 'محاسبة النفس', 4, 111, 140, '2025-07-08 01:42:03', '2025-07-08 01:42:03'),
(35, 21, 'درجات الإيمان', 'درجات الإيمان', 5, 141, 180, '2025-07-08 01:42:23', '2025-07-08 01:42:23'),
(36, 22, 'الصدق والأمانة', 'الصدق والأمانة', 1, 12, 35, '2025-07-08 01:42:55', '2025-07-08 01:42:55'),
(37, 22, 'الحياء والتواضع', 'الحياء والتواضع', 2, 36, 55, '2025-07-08 01:43:15', '2025-07-08 01:43:15'),
(38, 22, 'بر الوالدين', 'بر الوالدين', 3, 56, 75, '2025-07-08 01:43:34', '2025-07-08 01:43:34'),
(39, 22, 'كظم الغيظ', 'كظم الغيظ', 4, 76, 90, '2025-07-08 01:43:47', '2025-07-08 01:43:47'),
(40, 22, 'التعامل بالرحمة', 'التعامل بالرحمة', 5, 91, 100, '2025-07-08 01:44:02', '2025-07-08 01:44:02'),
(41, 23, 'القواعد العامة', 'القواعد العامة', 1, 5, 35, '2025-07-08 01:44:48', '2025-07-08 01:44:48'),
(42, 23, 'البيع والشراء', 'البيع والشراء', 2, 36, 80, '2025-07-08 01:45:09', '2025-07-08 01:45:09'),
(43, 23, 'الربا والبنوك', 'الربا والبنوك', 3, 81, 130, '2025-07-08 01:45:23', '2025-07-08 01:45:23'),
(44, 23, 'التأمين والادخار', 'التأمين والادخار', 4, 131, 170, '2025-07-08 01:45:38', '2025-07-08 01:45:38'),
(45, 23, 'التجارة الإلكترونية', 'التجارة الإلكترونية', 5, 171, 210, '2025-07-08 01:45:51', '2025-07-08 01:45:51'),
(46, 24, 'من هو الداعية؟', 'من هو الداعية؟', 1, 5, 25, '2025-07-08 01:46:10', '2025-07-08 01:46:10'),
(47, 24, 'أساليب الحكمة', 'أساليب الحكمة', 2, 26, 50, '2025-07-08 01:46:24', '2025-07-08 01:46:24'),
(48, 24, 'الرد على الشبهات', 'الرد على الشبهات', 3, 51, 75, '2025-07-08 01:46:40', '2025-07-08 01:46:40'),
(49, 24, 'الدعوة بالقدوة', 'الدعوة بالقدوة', 4, 76, 95, '2025-07-08 01:46:54', '2025-07-08 01:46:54'),
(50, 24, 'دعوة غير المسلمين', 'دعوة غير المسلمين', 5, 96, 120, '2025-07-08 01:47:12', '2025-07-08 01:47:12'),
(53, 28, 'الحصة 1', 'الحصة 1', 1, 1, 20, '2025-07-08 19:13:32', '2025-07-08 19:13:32'),
(54, 28, 'الحصة 2', 'الحصة 1', 2, 23, 50, '2025-07-08 19:13:55', '2025-07-08 19:13:55'),
(55, 29, 'الحصة 1', 'fezefzfe', 1, 1, 12, '2025-07-08 19:20:57', '2025-07-08 19:20:57');

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

--
-- Structure de la table `seance_audios`
--

CREATE TABLE `seance_audios` (
  `seance_audio_id` int NOT NULL,
  `seance_id` int NOT NULL,
  `file_id` int NOT NULL,
  `sequence_order` int NOT NULL DEFAULT '1',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

INSERT INTO `seance_audios` (`seance_audio_id`, `seance_id`, `file_id`, `sequence_order`, `created_at`) VALUES
(4, 21, 21, 1, '2025-07-08 04:03:03'),
(5, 53, 21, 1, '2025-07-08 19:17:57');

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

--
-- Structure de la table `seance_pdfs`
--

CREATE TABLE `seance_pdfs` (
  `seance_pdf_id` int NOT NULL,
  `seance_id` int NOT NULL,
  `file_id` int NOT NULL,
  `sequence_order` int NOT NULL DEFAULT '1',
  `est_principale` tinyint(1) DEFAULT '0',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

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

INSERT INTO `seance_pdfs` (`seance_pdf_id`, `seance_id`, `file_id`, `sequence_order`, `est_principale`, `created_at`) VALUES
(6, 21, 13, 1, 0, '2025-07-08 04:03:28'),
(7, 53, 12, 1, 1, '2025-07-08 19:16:08'),
(8, 53, 13, 2, 0, '2025-07-08 19:19:28');

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

--
-- Structure de la table `seance_videos`
--

CREATE TABLE `seance_videos` (
  `seance_video_id` int NOT NULL,
  `seance_id` int NOT NULL,
  `file_id` int NOT NULL,
  `sequence_order` int NOT NULL DEFAULT '1',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `est_principale` tinyint(1) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

INSERT INTO `seance_videos` (`seance_video_id`, `seance_id`, `file_id`, `sequence_order`, `created_at`, `est_principale`) VALUES
(5, 21, 20, 1, '2025-07-08 04:02:36', 0),
(6, 53, 20, 1, '2025-07-08 19:17:42', 1);

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

--
-- Structure de la table `student_answers`
--

CREATE TABLE `student_answers` (
  `answer_id` int NOT NULL,
  `student_id` int NOT NULL,
  `question_id` int NOT NULL,
  `selected_answer` varchar(255) NOT NULL,
  `is_correct` tinyint(1) DEFAULT '0',
  `answer_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

--
-- Structure de la table `student_progress_tracking`
--

CREATE TABLE `student_progress_tracking` (
  `progress_id` int NOT NULL,
  `registration_id` int NOT NULL,
  `lesson_id` int DEFAULT NULL,
  `seance_id` int DEFAULT NULL,
  `progress_type` enum('lesson_start','lesson_complete','seance_start','seance_complete','test_taken','manual_update') NOT NULL,
  `progress_value` decimal(5,2) NOT NULL DEFAULT '0.00',
  `completion_status` enum('not_started','in_progress','completed','skipped') NOT NULL DEFAULT 'not_started',
  `time_spent` int DEFAULT '0',
  `score` decimal(5,2) DEFAULT NULL,
  `notes` text,
  `tracked_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

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

--
-- Structure de la table `tests`
--

CREATE TABLE `tests` (
  `test_id` int NOT NULL,
  `student_id` int NOT NULL,
  `test_type` enum('weekly','phase','final') NOT NULL,
  `test_score` decimal(5,2) DEFAULT '0.00',
  `total_questions` int NOT NULL,
  `correct_answers` int DEFAULT '0',
  `test_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

--
-- Structure de la table `test_parameters`
--

CREATE TABLE `test_parameters` (
  `parameter_id` int NOT NULL,
  `batch_id` int NOT NULL,
  `questions_per_lesson` int NOT NULL DEFAULT '5',
  `max_lessons_per_weekly_test` int NOT NULL DEFAULT '3',
  `test_duration` int NOT NULL DEFAULT '60',
  `points_per_question` int NOT NULL DEFAULT '10',
  `weekly_test_questions` int NOT NULL DEFAULT '15',
  `weekly_test_result_delay` int NOT NULL DEFAULT '7',
  `phase_test_result_delay` int NOT NULL DEFAULT '10',
  `final_test_result_delay` int NOT NULL DEFAULT '14',
  `phase_test_questions` int NOT NULL DEFAULT '20',
  `final_test_questions` int NOT NULL DEFAULT '30'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

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

--
-- Doublure de structure pour la vue `v_hierarchy_complete`
-- (Voir ci-dessous la vue réelle)
--
CREATE TABLE `v_hierarchy_complete` (
`program_id` int
,`program_name` varchar(255)
,`level_id` int
,`level_name` varchar(255)
,`level_order` int
,`phase_id` int
,`phase_name` varchar(255)
,`phase_order` int
,`lesson_id` int
,`lesson_name` varchar(255)
,`lesson_order` int
,`seance_id` int
,`seance_name` varchar(255)
,`seance_order` int
,`start_page` int
,`end_page` int
);

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

--
-- Doublure de structure pour la vue `v_registration_stats_by_batch`
-- (Voir ci-dessous la vue réelle)
--
CREATE TABLE `v_registration_stats_by_batch` (
`batch_id` int
,`batch_name` varchar(255)
,`program_name` varchar(255)
,`total_students` bigint
,`approved_students` bigint
,`average_progress` decimal(9,6)
,`first_registration` timestamp
,`last_registration` timestamp
);

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

--
-- Doublure de structure pour la vue `v_registration_stats_by_program`
-- (Voir ci-dessous la vue réelle)
--
CREATE TABLE `v_registration_stats_by_program` (
);

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

--
-- Doublure de structure pour la vue `v_seances_with_files`
-- (Voir ci-dessous la vue réelle)
--
CREATE TABLE `v_seances_with_files` (
`seance_id` int
,`seance_name` varchar(255)
,`lesson_id` int
,`start_page` int
,`end_page` int
,`video_files` text
,`audio_files` text
);

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

--
-- Doublure de structure pour la vue `v_student_registrations_complete`
-- (Voir ci-dessous la vue réelle)
--
CREATE TABLE `v_student_registrations_complete` (
);

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

--
-- Structure de la vue `v_hierarchy_complete`
--

CREATE ALGORITHM=UNDEFINED DEFINER=`kuofkculearn`@`%` SQL SECURITY DEFINER VIEW `v_hierarchy_complete`  AS SELECT `p`.`program_id` AS `program_id`, `p`.`program_name` AS `program_name`, `l`.`level_id` AS `level_id`, `l`.`level_name` AS `level_name`, `l`.`sequence_order` AS `level_order`, `ph`.`phase_id` AS `phase_id`, `ph`.`phase_name` AS `phase_name`, `ph`.`sequence_order` AS `phase_order`, `ls`.`lesson_id` AS `lesson_id`, `ls`.`lesson_name` AS `lesson_name`, `ls`.`sequence_order` AS `lesson_order`, `sc`.`seance_id` AS `seance_id`, `sc`.`seance_name` AS `seance_name`, `sc`.`sequence_order` AS `seance_order`, `sc`.`start_page` AS `start_page`, `sc`.`end_page` AS `end_page` FROM ((((`programs` `p` left join `levels` `l` on((`p`.`program_id` = `l`.`program_id`))) left join `phases` `ph` on((`l`.`level_id` = `ph`.`level_id`))) left join `lessons` `ls` on((`ph`.`phase_id` = `ls`.`phase_id`))) left join `seances_cours` `sc` on((`ls`.`lesson_id` = `sc`.`lesson_id`))) ORDER BY `p`.`program_id` ASC, `l`.`sequence_order` ASC, `ph`.`sequence_order` ASC, `ls`.`sequence_order` ASC, `sc`.`sequence_order` ASC ;

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

--
-- Structure de la vue `v_registration_stats_by_batch`
--

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

--
-- Structure de la vue `v_registration_stats_by_program`
--

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

--
-- Structure de la vue `v_seances_with_files`
--

CREATE ALGORITHM=UNDEFINED DEFINER=`kuofkculearn`@`%` SQL SECURITY DEFINER VIEW `v_seances_with_files`  AS SELECT `sc`.`seance_id` AS `seance_id`, `sc`.`seance_name` AS `seance_name`, `sc`.`lesson_id` AS `lesson_id`, `sc`.`start_page` AS `start_page`, `sc`.`end_page` AS `end_page`, group_concat(distinct concat('video:',`f_v`.`file_name`) separator '; ') AS `video_files`, group_concat(distinct concat('audio:',`f_a`.`file_name`) separator '; ') AS `audio_files` FROM ((((`seances_cours` `sc` left join `seance_videos` `sv` on((`sc`.`seance_id` = `sv`.`seance_id`))) left join `files` `f_v` on((`sv`.`file_id` = `f_v`.`file_id`))) left join `seance_audios` `sa` on((`sc`.`seance_id` = `sa`.`seance_id`))) left join `files` `f_a` on((`sa`.`file_id` = `f_a`.`file_id`))) GROUP BY `sc`.`seance_id` ;

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

--
-- Structure de la vue `v_student_registrations_complete`
--

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

--
-- Index pour la table `batches`
--
ALTER TABLE `batches`
  ADD PRIMARY KEY (`batch_id`),
  ADD KEY `fk_batches_program` (`program_id`);

--
-- Index pour la table `batch_calendar`
--
ALTER TABLE `batch_calendar`
  ADD PRIMARY KEY (`calendar_id`),
  ADD KEY `fk_batch_calendar_batch` (`batch_id`);

--
-- Index pour la table `calendar_default_settings`
--
ALTER TABLE `calendar_default_settings`
  ADD PRIMARY KEY (`default_setting_id`),
  ADD UNIQUE KEY `unique_setting_name` (`setting_name`),
  ADD UNIQUE KEY `idx_unique_system_type` (`is_system_default`,`setting_type`,`is_active`),
  ADD KEY `idx_setting_name` (`setting_name`),
  ADD KEY `idx_is_active` (`is_active`),
  ADD KEY `idx_is_system_default` (`is_system_default`),
  ADD KEY `idx_created_by` (`created_by`),
  ADD KEY `idx_active_system` (`is_active`,`is_system_default`),
  ADD KEY `idx_calendar_default_type` (`setting_type`);

--
-- Index pour la table `countries`
--
ALTER TABLE `countries`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_code` (`code`),
  ADD UNIQUE KEY `unique_iso` (`iso_code`),
  ADD KEY `idx_active` (`is_active`),
  ADD KEY `idx_sort_order` (`sort_order`);

--
-- Index pour la table `excluded_weekdays`
--
ALTER TABLE `excluded_weekdays`
  ADD PRIMARY KEY (`weekday_id`);

--
-- Index pour la table `failed_login_attempts`
--
ALTER TABLE `failed_login_attempts`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_ip_address` (`ip_address`),
  ADD KEY `idx_email` (`email`),
  ADD KEY `idx_attempted_at` (`attempted_at`);

--
-- Index pour la table `files`
--
ALTER TABLE `files`
  ADD PRIMARY KEY (`file_id`);

--
-- Index pour la table `folders`
--
ALTER TABLE `folders`
  ADD PRIMARY KEY (`folder_id`);

--
-- Index pour la table `individuals`
--
ALTER TABLE `individuals`
  ADD PRIMARY KEY (`individual_id`);

--
-- Index pour la table `lessons`
--
ALTER TABLE `lessons`
  ADD PRIMARY KEY (`lesson_id`),
  ADD KEY `idx_phase_id` (`phase_id`),
  ADD KEY `idx_file_id` (`pdf_link`),
  ADD KEY `idx_sequence_order` (`sequence_order`);

--
-- Index pour la table `levels`
--
ALTER TABLE `levels`
  ADD PRIMARY KEY (`level_id`),
  ADD KEY `fk_levels_program_idx` (`program_id`),
  ADD KEY `idx_sequence_order` (`sequence_order`);

--
-- Index pour la table `non_working_periods`
--
ALTER TABLE `non_working_periods`
  ADD PRIMARY KEY (`period_id`);

--
-- Index pour la table `phases`
--
ALTER TABLE `phases`
  ADD PRIMARY KEY (`phase_id`),
  ADD KEY `level_id` (`level_id`);

--
-- Index pour la table `programs`
--
ALTER TABLE `programs`
  ADD PRIMARY KEY (`program_id`);

--
-- Index pour la table `questions`
--
ALTER TABLE `questions`
  ADD KEY `fk_questions_lesson` (`lesson_id`);

--
-- Index pour la table `seances_cours`
--
ALTER TABLE `seances_cours`
  ADD PRIMARY KEY (`seance_id`),
  ADD KEY `idx_lesson_id` (`lesson_id`),
  ADD KEY `idx_sequence_order` (`sequence_order`);

--
-- Index pour la table `seance_audios`
--
ALTER TABLE `seance_audios`
  ADD PRIMARY KEY (`seance_audio_id`),
  ADD KEY `idx_seance_id` (`seance_id`),
  ADD KEY `idx_file_id` (`file_id`);

--
-- Index pour la table `seance_pdfs`
--
ALTER TABLE `seance_pdfs`
  ADD PRIMARY KEY (`seance_pdf_id`),
  ADD KEY `idx_seance_id` (`seance_id`),
  ADD KEY `idx_file_id` (`file_id`);

--
-- Index pour la table `seance_videos`
--
ALTER TABLE `seance_videos`
  ADD PRIMARY KEY (`seance_video_id`),
  ADD KEY `idx_seance_id` (`seance_id`),
  ADD KEY `idx_file_id` (`file_id`);

--
-- Index pour la table `student_progress_tracking`
--
ALTER TABLE `student_progress_tracking`
  ADD PRIMARY KEY (`progress_id`),
  ADD KEY `idx_registration_id` (`registration_id`),
  ADD KEY `idx_lesson_id` (`lesson_id`),
  ADD KEY `idx_seance_id` (`seance_id`),
  ADD KEY `idx_progress_type` (`progress_type`),
  ADD KEY `idx_tracked_at` (`tracked_at`);

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

--
-- AUTO_INCREMENT pour la table `batches`
--
ALTER TABLE `batches`
  MODIFY `batch_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT pour la table `batch_calendar`
--
ALTER TABLE `batch_calendar`
  MODIFY `calendar_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=944;

--
-- AUTO_INCREMENT pour la table `calendar_default_settings`
--
ALTER TABLE `calendar_default_settings`
  MODIFY `default_setting_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT pour la table `countries`
--
ALTER TABLE `countries`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;

--
-- AUTO_INCREMENT pour la table `excluded_weekdays`
--
ALTER TABLE `excluded_weekdays`
  MODIFY `weekday_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT pour la table `failed_login_attempts`
--
ALTER TABLE `failed_login_attempts`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT pour la table `files`
--
ALTER TABLE `files`
  MODIFY `file_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=23;

--
-- AUTO_INCREMENT pour la table `folders`
--
ALTER TABLE `folders`
  MODIFY `folder_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;

--
-- AUTO_INCREMENT pour la table `individuals`
--
ALTER TABLE `individuals`
  MODIFY `individual_id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `lessons`
--
ALTER TABLE `lessons`
  MODIFY `lesson_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=30;

--
-- AUTO_INCREMENT pour la table `levels`
--
ALTER TABLE `levels`
  MODIFY `level_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=34;

--
-- AUTO_INCREMENT pour la table `non_working_periods`
--
ALTER TABLE `non_working_periods`
  MODIFY `period_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT pour la table `phases`
--
ALTER TABLE `phases`
  MODIFY `phase_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=51;

--
-- AUTO_INCREMENT pour la table `programs`
--
ALTER TABLE `programs`
  MODIFY `program_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;

--
-- AUTO_INCREMENT pour la table `seances_cours`
--
ALTER TABLE `seances_cours`
  MODIFY `seance_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=56;

--
-- AUTO_INCREMENT pour la table `seance_audios`
--
ALTER TABLE `seance_audios`
  MODIFY `seance_audio_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT pour la table `seance_pdfs`
--
ALTER TABLE `seance_pdfs`
  MODIFY `seance_pdf_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT pour la table `seance_videos`
--
ALTER TABLE `seance_videos`
  MODIFY `seance_video_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT pour la table `student_progress_tracking`
--
ALTER TABLE `student_progress_tracking`
  MODIFY `progress_id` int NOT NULL AUTO_INCREMENT;

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

--
-- Contraintes pour la table `batches`
--
ALTER TABLE `batches`
  ADD CONSTRAINT `fk_batches_program` FOREIGN KEY (`program_id`) REFERENCES `programs` (`program_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `batch_calendar`
--
ALTER TABLE `batch_calendar`
  ADD CONSTRAINT `fk_batch_calendar_batch` FOREIGN KEY (`batch_id`) REFERENCES `batches` (`batch_id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Contraintes pour la table `lessons`
--
ALTER TABLE `lessons`
  ADD CONSTRAINT `fk_lessons_phase` FOREIGN KEY (`phase_id`) REFERENCES `phases` (`phase_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `levels`
--
ALTER TABLE `levels`
  ADD CONSTRAINT `fk_levels_program` FOREIGN KEY (`program_id`) REFERENCES `programs` (`program_id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Contraintes pour la table `phases`
--
ALTER TABLE `phases`
  ADD CONSTRAINT `phases_ibfk_1` FOREIGN KEY (`level_id`) REFERENCES `levels` (`level_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `questions`
--
ALTER TABLE `questions`
  ADD CONSTRAINT `fk_questions_lesson` FOREIGN KEY (`lesson_id`) REFERENCES `lessons` (`lesson_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `seances_cours`
--
ALTER TABLE `seances_cours`
  ADD CONSTRAINT `fk_seances_lesson` FOREIGN KEY (`lesson_id`) REFERENCES `lessons` (`lesson_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `seance_audios`
--
ALTER TABLE `seance_audios`
  ADD CONSTRAINT `fk_seance_audios_file` FOREIGN KEY (`file_id`) REFERENCES `files` (`file_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_seance_audios_seance` FOREIGN KEY (`seance_id`) REFERENCES `seances_cours` (`seance_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `seance_pdfs`
--
ALTER TABLE `seance_pdfs`
  ADD CONSTRAINT `fk_seance_pdfs_file` FOREIGN KEY (`file_id`) REFERENCES `files` (`file_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_seance_pdfs_seance` FOREIGN KEY (`seance_id`) REFERENCES `seances_cours` (`seance_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `seance_videos`
--
ALTER TABLE `seance_videos`
  ADD CONSTRAINT `fk_seance_videos_file` FOREIGN KEY (`file_id`) REFERENCES `files` (`file_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_seance_videos_seance` FOREIGN KEY (`seance_id`) REFERENCES `seances_cours` (`seance_id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `student_progress_tracking`
--
ALTER TABLE `student_progress_tracking`
  ADD CONSTRAINT `student_progress_tracking_ibfk_2` FOREIGN KEY (`lesson_id`) REFERENCES `lessons` (`lesson_id`) ON DELETE SET NULL,
  ADD CONSTRAINT `student_progress_tracking_ibfk_3` FOREIGN KEY (`seance_id`) REFERENCES `seances_cours` (`seance_id`) ON DELETE SET NULL;
COMMIT;

