-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: 10 يوليو 2026 الساعة 21:45
-- إصدار الخادم: 10.4.32-MariaDB
-- PHP Version: 8.0.30

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 */;

--
-- Database: `modern_knowledge_schools`
--

DELIMITER $$
--
-- الإجراءات
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_calculate_fees` (IN `p_grade_id` INT, IN `p_bus_service_id` INT, IN `p_sibling_discount` DECIMAL(5,2))   BEGIN
    DECLARE v_base_fees DECIMAL(10,2);
    DECLARE v_bus_fees DECIMAL(10,2) DEFAULT 0;
    DECLARE v_discount DECIMAL(10,2) DEFAULT 0;
    DECLARE v_total DECIMAL(10,2);
    
    SELECT annual_fees INTO v_base_fees FROM grade_levels WHERE grade_id = p_grade_id;
    
    IF p_bus_service_id IS NOT NULL THEN
        SELECT service_fees INTO v_bus_fees FROM bus_services WHERE service_id = p_bus_service_id;
    END IF;
    
    SET v_discount = v_base_fees * (p_sibling_discount / 100);
    SET v_total = (v_base_fees - v_discount) + v_bus_fees;
    
    SELECT 
        v_base_fees AS 'الرسوم الأساسية',
        v_bus_fees AS 'رسوم الحافلة',
        v_discount AS 'قيمة الخصم',
        v_total AS 'الإجمالي النهائي';
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_get_student_results` (IN `p_national_id` VARCHAR(20))   BEGIN
    SELECT 
        s.student_full_name,
        gl.grade_name_ar AS grade,
        s.classroom,
        sub.subject_name_ar AS subject,
        sr.degree,
        sr.max_degree,
        sr.grade_letter,
        sr.semester
    FROM students s
    LEFT JOIN grade_levels gl ON s.current_grade_id = gl.grade_id
    JOIN student_results sr ON s.student_id = sr.student_id
    JOIN subjects sub ON sr.subject_id = sub.subject_id
    WHERE s.national_id = p_national_id
    ORDER BY sub.subject_name_ar;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_register_student` (IN `p_name` VARCHAR(300), IN `p_national_id` VARCHAR(20), IN `p_birth_date` DATE, IN `p_gender` ENUM('ذكر','أنثى'), IN `p_grade_id` INT, IN `p_parent_name` VARCHAR(300), IN `p_parent_phone` VARCHAR(20), IN `p_parent_email` VARCHAR(200))   BEGIN
    INSERT INTO registration_requests (
        student_full_name, national_id, birth_date, gender,
        target_grade_id, parent_name, parent_phone, parent_email, status
    ) VALUES (
        p_name, p_national_id, p_birth_date, p_gender,
        p_grade_id, p_parent_name, p_parent_phone, p_parent_email, 'جديد'
    );
    SELECT LAST_INSERT_ID() AS new_request_id;
END$$

DELIMITER ;

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

--
-- بنية الجدول `about_sections`
--

CREATE TABLE `about_sections` (
  `section_id` int(11) NOT NULL,
  `section_title_ar` varchar(200) NOT NULL COMMENT 'عنوان القسم',
  `section_content_ar` text NOT NULL COMMENT 'محتوى القسم',
  `section_icon` varchar(100) DEFAULT NULL COMMENT 'أيقونة القسم (FontAwesome)',
  `display_order` int(11) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='أقسام صفحة عن المدارس';

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

--
-- بنية الجدول `academic_terms`
--

CREATE TABLE `academic_terms` (
  `term_id` int(11) NOT NULL,
  `term_name` varchar(100) NOT NULL COMMENT 'الفصل الأول، الفصل الثاني',
  `academic_year` varchar(20) NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `is_active` tinyint(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الفصول الدراسية';

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

--
-- بنية الجدول `activities_media`
--

CREATE TABLE `activities_media` (
  `media_id` int(11) NOT NULL,
  `title_ar` varchar(300) NOT NULL,
  `description_ar` text DEFAULT NULL,
  `media_type` enum('صورة','فيديو') DEFAULT 'صورة',
  `media_url` varchar(500) NOT NULL,
  `thumbnail_url` varchar(500) DEFAULT NULL,
  `category` enum('أنشطة المعلمات','أنشطة الطلاب','فعاليات مدرسية','رحلات','مسابقات','حفلات') DEFAULT 'أنشطة المعلمات',
  `event_date` date DEFAULT NULL,
  `display_order` int(11) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- إرجاع أو استيراد بيانات الجدول `activities_media`
--

INSERT INTO `activities_media` (`media_id`, `title_ar`, `description_ar`, `media_type`, `media_url`, `thumbnail_url`, `category`, `event_date`, `display_order`, `is_active`, `created_at`) VALUES
(1, 'ورشة عمل تطويرية للمعلمات', 'ورشة عمل تدريبية لتطوير مهارات المعلمات في استخدام التقنيات الحديثة', 'صورة', 'https://images.unsplash.com/photo-1524178232363-1fb2b075b655?w=800', NULL, 'أنشطة المعلمات', '2026-01-15', 1, 1, '2026-07-06 18:05:28'),
(2, 'يوم المهنة', 'فعالية تعريف الطالبات بالمهن المختلفة', 'صورة', 'https://images.unsplash.com/photo-1577896851231-70ef18881754?w=800', NULL, 'أنشطة الطلاب', '2026-02-10', 2, 1, '2026-07-06 18:05:28'),
(3, 'الاحتفال بيوم التأسيس', 'حفل تكريمي بمناسبة يوم التأسيس السعودي', 'صورة', 'https://images.unsplash.com/photo-1511632765486-a01980e01a18?w=800', NULL, 'فعاليات مدرسية', '2026-02-22', 3, 1, '2026-07-06 18:05:28'),
(4, 'رحلة تعليمية ترفيهية', 'رحلة طلابية إلى المتحف الوطني', 'صورة', 'https://images.unsplash.com/photo-1503676260728-1c00da094a0b?w=800', NULL, 'رحلات', '2026-03-05', 4, 1, '2026-07-06 18:05:28'),
(5, 'مسابقة أوائل الطلاب', 'تكريم الطلاب المتفوقين في المسابقات العلمية', 'صورة', 'https://images.unsplash.com/photo-1523240795612-9a054b0db644?w=800', NULL, 'مسابقات', '2026-03-20', 5, 1, '2026-07-06 18:05:28'),
(6, 'حفل التخرج', 'حفل تخرج الدفعة الجديدة من الطلاب', 'صورة', 'https://images.unsplash.com/photo-1523580846011-d3a5bc25702b?w=800', NULL, 'حفلات', '2026-06-15', 6, 1, '2026-07-06 18:05:28'),
(7, 'اجتماع المعلمات الدوري', 'لقاء دوري لمناقشة خطط التطوير التعليمي', 'صورة', 'https://images.unsplash.com/photo-1552581234-26160f608093?w=800', NULL, 'أنشطة المعلمات', '2026-04-01', 7, 1, '2026-07-06 18:05:28'),
(8, 'فيديو تعريفي بالأنشطة', 'فيديو يستعرض أبرز أنشطة المدرسة', 'فيديو', 'https://www.youtube.com/embed/dQw4w9WgXcQ', NULL, 'فعاليات مدرسية', '2026-05-01', 8, 1, '2026-07-06 18:05:28'),
(9, 'ورشة عمل تطويرية للمعلمات', 'ورشة عمل تدريبية لتطوير مهارات المعلمات', 'صورة', 'https://images.unsplash.com/photo-1524178232363-1fb2b075b655?w=800', NULL, 'أنشطة المعلمات', '2026-01-15', 1, 1, '2026-07-06 18:20:41'),
(10, 'يوم المهنة', 'فعالية تعريف الطالبات بالمهن المختلفة', 'صورة', 'https://images.unsplash.com/photo-1577896851231-70ef18881754?w=800', NULL, 'أنشطة الطلاب', '2026-02-10', 2, 1, '2026-07-06 18:20:41'),
(11, 'الاحتفال بيوم التأسيس', 'حفل تكريمي بمناسبة يوم التأسيس', 'صورة', 'https://images.unsplash.com/photo-1511632765486-a01980e01a18?w=800', NULL, 'فعاليات مدرسية', '2026-02-22', 3, 1, '2026-07-06 18:20:41');

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

--
-- بنية الجدول `administrators`
--

CREATE TABLE `administrators` (
  `admin_id` int(11) NOT NULL,
  `full_name_ar` varchar(200) NOT NULL COMMENT 'الاسم الكامل بالعربية',
  `full_name_en` varchar(200) DEFAULT NULL COMMENT 'الاسم الكامل بالإنجليزية',
  `job_title_ar` varchar(200) NOT NULL COMMENT 'المسمى الوظيفي',
  `photo_path` varchar(500) DEFAULT NULL COMMENT 'صورة المسؤول',
  `message_ar` text DEFAULT NULL COMMENT 'كلمة المسؤول',
  `qualification_ar` varchar(300) DEFAULT NULL COMMENT 'المؤهلات العلمية',
  `experience_years` int(11) DEFAULT NULL COMMENT 'سنوات الخبرة',
  `display_order` int(11) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `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_unicode_ci COMMENT='جدول الإداريين والمديرين';

--
-- إرجاع أو استيراد بيانات الجدول `administrators`
--

INSERT INTO `administrators` (`admin_id`, `full_name_ar`, `full_name_en`, `job_title_ar`, `photo_path`, `message_ar`, `qualification_ar`, `experience_years`, `display_order`, `is_active`, `created_at`, `updated_at`) VALUES
(2, 'منى ادريس', NULL, 'المالك والمؤسس', 'https://www.bing.com/th/id/OIP.vD7p5ezEaaltKJUTb5tRRgHaIK?w=193&h=212&c=8&rs=1&qlt=90&o=6&dpr=1.3&pid=ImgAns&rm=2', 'نسعى لتقديم تعليم نوعي يبني العقول ويصنع المستقبل، ونؤمن بأن الاستثمار في أبنائنا هو أعظم استثمار.', '', NULL, 1, 1, '2026-07-05 09:12:01', '2026-07-08 19:27:28'),
(3, 'شاكر الرضواني', NULL, 'المالك والمؤسس', 'https://images.unsplash.com/photo-1560250097-0b93528c311a?w=400', 'نؤمن بأن الاستثمار في التعليم هو أعظم استثمار للأمة، ونعمل جاهدين لتوفير بيئة تعليمية متميزة.', '', NULL, 0, 1, '2026-07-05 09:12:01', '2026-07-08 19:15:30'),
(4, 'أ. أفراح دغيش', NULL, 'المدير العام للمدارس', 'https://www.bing.com/th/id/OIP.vD7p5ezEaaltKJUTb5tRRgHaIK?w=193&h=212&c=8&rs=1&qlt=90&o=6&dpr=1.3&pid=ImgAns&rm=2', 'نؤمن بأن بناء العقول هو أسمى درجات الاستثمار الإنساني. نعمل يومياً لتطوير مهارات طلابنا وغرس الفضيلة والتميز العلمي.', '', NULL, 2, 1, '2026-07-05 09:36:15', '2026-07-08 19:28:00');

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

--
-- بنية الجدول `attachments`
--

CREATE TABLE `attachments` (
  `attachment_id` int(11) NOT NULL,
  `file_name` varchar(300) NOT NULL COMMENT 'اسم الملف',
  `file_path` varchar(500) NOT NULL COMMENT 'مسار الملف',
  `file_type` varchar(50) DEFAULT NULL COMMENT 'نوع الملف',
  `file_size` int(11) DEFAULT NULL COMMENT 'حجم الملف بالبايت',
  `related_table` varchar(100) DEFAULT NULL COMMENT 'الجدول المرتبط',
  `related_id` int(11) DEFAULT NULL COMMENT 'معرف السجل المرتبط',
  `uploaded_by` int(11) DEFAULT NULL COMMENT 'من رفع الملف',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='المرفقات والملفات';

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

--
-- بنية الجدول `audit_logs`
--

CREATE TABLE `audit_logs` (
  `log_id` int(11) NOT NULL,
  `user_id` int(11) DEFAULT NULL COMMENT 'المستخدم المنفذ',
  `action_type` enum('إضافة','تعديل','حذف','تسجيل دخول','تسجيل خروج','طباعة','تصدير') NOT NULL,
  `table_name` varchar(100) DEFAULT NULL COMMENT 'الجدول المتأثر',
  `record_id` int(11) DEFAULT NULL COMMENT 'معرف السجل',
  `old_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'القيم القديمة' CHECK (json_valid(`old_values`)),
  `new_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'القيم الجديدة' CHECK (json_valid(`new_values`)),
  `ip_address` varchar(45) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='سجل العمليات والمراجعة';

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

--
-- بنية الجدول `bus_services`
--

CREATE TABLE `bus_services` (
  `service_id` int(11) NOT NULL,
  `service_name_ar` varchar(200) NOT NULL COMMENT 'اسم الخدمة',
  `service_fees` decimal(10,2) NOT NULL COMMENT 'رسوم الخدمة',
  `description_ar` text DEFAULT NULL COMMENT 'وصف الخدمة',
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='خدمات النقل المدرسي';

--
-- إرجاع أو استيراد بيانات الجدول `bus_services`
--

INSERT INTO `bus_services` (`service_id`, `service_name_ar`, `service_fees`, `description_ar`, `is_active`, `created_at`) VALUES
(1, 'حافلة ذهاب وإياب', 4000.00, 'خدمة نقل كاملة ذهاباً وإياباً', 1, '2026-06-20 18:48:00'),
(2, 'حافلة اتجاه واحد فقط', 2500.00, 'خدمة نقل في اتجاه واحد', 1, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `certificates`
--

CREATE TABLE `certificates` (
  `certificate_id` int(11) NOT NULL,
  `student_id` int(11) NOT NULL,
  `certificate_type` enum('شهادة تخرج','شهادة تقدير','تقرير فصلي','شهادة مشاركة') NOT NULL,
  `certificate_title` varchar(300) DEFAULT NULL,
  `issue_date` date NOT NULL,
  `academic_year` varchar(20) DEFAULT NULL,
  `file_path` varchar(500) DEFAULT NULL COMMENT 'ملف الشهادة PDF',
  `issued_by` int(11) DEFAULT NULL COMMENT 'المستخدم الذي أصدر الشهادة',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='شهادات وتقارير الطلاب';

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

--
-- بنية الجدول `class_sections`
--

CREATE TABLE `class_sections` (
  `section_id` int(11) NOT NULL,
  `grade_id` int(11) NOT NULL COMMENT 'الصف التابع له',
  `section_name` varchar(50) NOT NULL COMMENT 'اسم الشعبة (أ، ب، ج)',
  `academic_year` varchar(20) NOT NULL COMMENT 'السنة الدراسية (1446)',
  `homeroom_teacher_id` int(11) DEFAULT NULL COMMENT 'رائد الفصل',
  `classroom_number` varchar(20) DEFAULT NULL,
  `capacity` int(11) DEFAULT 30,
  `is_active` tinyint(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الشعب والفصول الدراسية';

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

--
-- بنية الجدول `contact_messages`
--

CREATE TABLE `contact_messages` (
  `message_id` int(11) NOT NULL,
  `sender_name` varchar(200) NOT NULL COMMENT 'اسم المرسل',
  `sender_email` varchar(200) DEFAULT NULL COMMENT 'بريد المرسل',
  `sender_phone` varchar(20) DEFAULT NULL COMMENT 'رقم المرسل',
  `message_subject` varchar(300) DEFAULT NULL COMMENT 'موضوع الرسالة',
  `message_body` text NOT NULL COMMENT 'نص الرسالة',
  `message_type` enum('استفسار','شكوى','اقتراح','دعم فني') DEFAULT 'استفسار',
  `is_read` tinyint(1) DEFAULT 0 COMMENT 'هل تمت القراءة',
  `reply_content` text DEFAULT NULL COMMENT 'الرد',
  `replied_at` timestamp NULL DEFAULT NULL COMMENT 'تاريخ الرد',
  `status` enum('جديد','قيد المعالجة','تم الرد','مغلق') DEFAULT 'جديد',
  `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_unicode_ci COMMENT='رسائل التواصل والدعم';

--
-- القوادح `contact_messages`
--
DELIMITER $$
CREATE TRIGGER `after_contact_message_insert` AFTER INSERT ON `contact_messages` FOR EACH ROW BEGIN
    INSERT INTO audit_logs (action_type, table_name, record_id, new_values)
    VALUES ('إضافة', 'contact_messages', NEW.message_id, 
            JSON_OBJECT('sender', NEW.sender_name, 'subject', NEW.message_subject));
END
$$
DELIMITER ;

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

--
-- بنية الجدول `daily_attendance`
--

CREATE TABLE `daily_attendance` (
  `attendance_id` bigint(20) NOT NULL,
  `student_id` int(11) NOT NULL,
  `section_id` int(11) NOT NULL,
  `attendance_date` date NOT NULL,
  `status` enum('حاضر','غائب','متأخر','إجازة مرضية','إجازة طارئة') DEFAULT 'حاضر',
  `check_in_time` time DEFAULT NULL,
  `absence_reason` text DEFAULT NULL,
  `is_excused` tinyint(1) DEFAULT 0,
  `recorded_by` int(11) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الحضور اليومي';

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

--
-- بنية الجدول `faq`
--

CREATE TABLE `faq` (
  `faq_id` int(11) NOT NULL,
  `question_ar` text NOT NULL COMMENT 'السؤال',
  `answer_ar` text NOT NULL COMMENT 'الإجابة',
  `category` varchar(100) DEFAULT NULL COMMENT 'التصنيف',
  `display_order` int(11) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الأسئلة الشائعة';

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

--
-- بنية الجدول `fee_payments`
--

CREATE TABLE `fee_payments` (
  `payment_id` int(11) NOT NULL,
  `student_id` int(11) NOT NULL COMMENT 'الطالب',
  `grade_level_id` int(11) NOT NULL COMMENT 'المرحلة',
  `base_fees` decimal(10,2) NOT NULL COMMENT 'الرسوم الأساسية',
  `bus_service_id` int(11) DEFAULT NULL COMMENT 'خدمة الحافلة',
  `bus_fees` decimal(10,2) DEFAULT 0.00 COMMENT 'رسوم الحافلة',
  `discount_percentage` decimal(5,2) DEFAULT 0.00 COMMENT 'نسبة الخصم',
  `discount_amount` decimal(10,2) DEFAULT 0.00 COMMENT 'قيمة الخصم',
  `total_fees` decimal(10,2) NOT NULL COMMENT 'الإجمالي النهائي',
  `payment_status` enum('غير مدفوع','مدفوع جزئياً','مدفوع بالكامل') DEFAULT 'غير مدفوع',
  `paid_amount` decimal(10,2) DEFAULT 0.00 COMMENT 'المبلغ المدفوع',
  `academic_year` varchar(20) DEFAULT NULL COMMENT 'السنة الدراسية',
  `payment_date` date DEFAULT NULL COMMENT 'تاريخ الدفع',
  `receipt_number` varchar(100) DEFAULT NULL COMMENT 'رقم الإيصال',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='حسابات ومدفوعات الرسوم';

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

--
-- بنية الجدول `footer_links`
--

CREATE TABLE `footer_links` (
  `footer_link_id` int(11) NOT NULL,
  `link_title_ar` varchar(150) NOT NULL COMMENT 'عنوان الرابط',
  `link_url` varchar(500) NOT NULL COMMENT 'الرابط',
  `link_category` enum('روابط تهمك','العنوان والمقر','خدمات إلكترونية','أخرى') DEFAULT 'روابط تهمك',
  `display_order` int(11) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='روابط الفوتر السريعة';

--
-- إرجاع أو استيراد بيانات الجدول `footer_links`
--

INSERT INTO `footer_links` (`footer_link_id`, `link_title_ar`, `link_url`, `link_category`, `display_order`, `is_active`, `created_at`) VALUES
(1, 'قصة التأسيس', '#about', 'روابط تهمك', 1, 1, '2026-06-20 18:48:00'),
(2, 'حاسبة الرسوم السنوية', '#fees', 'روابط تهمك', 2, 1, '2026-06-20 18:48:00'),
(3, 'بوابة النتائج الرسمية', '#portal', 'روابط تهمك', 3, 1, '2026-06-20 18:48:00'),
(4, 'الوظائف الشاغرة', '#careers', 'روابط تهمك', 4, 1, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `gallery`
--

CREATE TABLE `gallery` (
  `gallery_id` int(11) NOT NULL,
  `image_title` varchar(200) DEFAULT NULL COMMENT 'عنوان الصورة',
  `image_path` varchar(500) NOT NULL COMMENT 'مسار الصورة',
  `album_name` varchar(200) DEFAULT NULL COMMENT 'اسم الألبوم',
  `description_ar` text DEFAULT NULL COMMENT 'الوصف',
  `display_order` int(11) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='معرض الصور';

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

--
-- بنية الجدول `grade_levels`
--

CREATE TABLE `grade_levels` (
  `grade_id` int(11) NOT NULL,
  `grade_name_ar` varchar(200) NOT NULL COMMENT 'اسم المرحلة بالعربية',
  `grade_name_en` varchar(200) DEFAULT NULL COMMENT 'اسم المرحلة بالإنجليزية',
  `annual_fees` decimal(10,2) NOT NULL COMMENT 'الرسوم السنوية',
  `currency` varchar(10) DEFAULT 'ريال' COMMENT 'العملة',
  `description_ar` text DEFAULT NULL COMMENT 'وصف المرحلة',
  `min_age` int(11) DEFAULT NULL COMMENT 'الحد الأدنى للعمر',
  `max_age` int(11) DEFAULT NULL COMMENT 'الحد الأقصى للعمر',
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='المراحل الدراسية والرسوم';

--
-- إرجاع أو استيراد بيانات الجدول `grade_levels`
--

INSERT INTO `grade_levels` (`grade_id`, `grade_name_ar`, `grade_name_en`, `annual_fees`, `currency`, `description_ar`, `min_age`, `max_age`, `is_active`, `created_at`) VALUES
(1, 'التمهيدي والروضة', '', 90000.00, 'ريال', 'مرحلة التعليم المبكر', NULL, NULL, 1, '2026-06-20 18:48:00'),
(2, 'المرحلة الابتدائية', NULL, 18000.00, 'ريال', 'من الصف الأول إلى السادس الابتدائي', NULL, NULL, 1, '2026-06-20 18:48:00'),
(3, 'المرحلة المتوسطة', NULL, 21000.00, 'ريال', 'من الصف الأول إلى الثالث المتوسط', NULL, NULL, 1, '2026-06-20 18:48:00'),
(4, 'المرحلة الثانوية', NULL, 25000.00, 'ريال', 'من الصف الأول إلى الثالث الثانوي', NULL, NULL, 1, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `grade_subjects`
--

CREATE TABLE `grade_subjects` (
  `mapping_id` int(11) NOT NULL,
  `grade_id` int(11) NOT NULL,
  `subject_id` int(11) NOT NULL,
  `weekly_hours` int(11) DEFAULT 4 COMMENT 'عدد الحصص أسبوعياً',
  `is_mandatory` tinyint(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='ربط المواد بالصفوف';

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

--
-- بنية الجدول `hero_slides`
--

CREATE TABLE `hero_slides` (
  `slide_id` int(11) NOT NULL,
  `title_ar` varchar(300) NOT NULL COMMENT 'العنوان الرئيسي بالعربية',
  `title_highlight_ar` varchar(200) DEFAULT NULL COMMENT 'النص المميز (باللون الذهبي)',
  `description_ar` text DEFAULT NULL COMMENT 'الوصف',
  `background_image` varchar(500) NOT NULL COMMENT 'صورة الخلفية',
  `button_text` varchar(100) DEFAULT NULL COMMENT 'نص الزر',
  `button_link` varchar(500) DEFAULT NULL COMMENT 'رابط الزر',
  `display_order` int(11) DEFAULT 0 COMMENT 'ترتيب العرض',
  `is_active` tinyint(1) DEFAULT 1 COMMENT 'هل الشريحة نشطة',
  `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_unicode_ci COMMENT='شرائح البانر الرئيسي';

--
-- إرجاع أو استيراد بيانات الجدول `hero_slides`
--

INSERT INTO `hero_slides` (`slide_id`, `title_ar`, `title_highlight_ar`, `description_ar`, `background_image`, `button_text`, `button_link`, `display_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'ننمي المعرفة.. لنصنع', 'المستقبل', 'بيئة تعليمية تفاعلية حديثة مبنية على القيم الأصيلة والعلوم العصرية المبتكرة.', 'https://images.unsplash.com/photo-1523050854058-8df90110c9f1', 'تقديم طلب قبول', '#register', 1, 1, '2026-06-20 18:48:00', '2026-06-20 18:48:00'),
(2, 'تعليم رقمي وتفكير', 'إبداعي متكامل', 'مختبرات ذكية مجهزة بأحدث التقنيات لرعاية مواهب أبنائنا وبناتنا الطلاب.', 'https://images.unsplash.com/photo-1516321318423-f06f85e504b3', 'اكتشف مناهجنا', '#about', 2, 1, '2026-06-20 18:48:00', '2026-06-20 18:48:00');

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

--
-- بنية الجدول `job_applications`
--

CREATE TABLE `job_applications` (
  `application_id` int(11) NOT NULL,
  `job_id` int(11) DEFAULT NULL COMMENT 'الوظيفة المتقدم إليها',
  `full_name` varchar(300) NOT NULL COMMENT 'الاسم الكامل',
  `email` varchar(200) NOT NULL COMMENT 'البريد الإلكتروني',
  `phone` varchar(20) NOT NULL COMMENT 'رقم الجوال',
  `job_field` varchar(200) DEFAULT NULL COMMENT 'المجال المطلوب',
  `cv_path` varchar(500) DEFAULT NULL COMMENT 'مسار السيرة الذاتية (PDF)',
  `cover_letter` text DEFAULT NULL COMMENT 'رسالة التقديم',
  `status` enum('جديد','قيد المراجعة','تم الاتصال','مقبول','مرفوض') DEFAULT 'جديد',
  `applied_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_unicode_ci COMMENT='طلبات التوظيف والموارد البشرية';

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

--
-- بنية الجدول `job_postings`
--

CREATE TABLE `job_postings` (
  `job_id` int(11) NOT NULL,
  `job_title_ar` varchar(300) NOT NULL COMMENT 'المسمى الوظيفي',
  `job_category` enum('تعليمية وأكاديمية','إدارية وإشرافية','الخدمات المساندة والدعم الفني') NOT NULL COMMENT 'فئة الوظيفة',
  `description_ar` text DEFAULT NULL COMMENT 'وصف الوظيفة',
  `requirements_ar` text DEFAULT NULL COMMENT 'المتطلبات',
  `experience_required` varchar(100) DEFAULT NULL COMMENT 'الخبرة المطلوبة',
  `is_active` tinyint(1) DEFAULT 1 COMMENT 'هل الوظيفة متاحة',
  `posted_date` date DEFAULT curdate(),
  `deadline` date DEFAULT NULL COMMENT 'آخر موعد للتقديم',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الوظائف الشاغرة';

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

--
-- بنية الجدول `navigation_links`
--

CREATE TABLE `navigation_links` (
  `nav_id` int(11) NOT NULL,
  `link_title_ar` varchar(100) NOT NULL COMMENT 'عنوان الرابط بالعربية',
  `link_url` varchar(500) NOT NULL COMMENT 'الرابط',
  `target_section` varchar(100) DEFAULT NULL COMMENT 'القسم المستهدف (ID)',
  `display_order` int(11) DEFAULT 0,
  `is_visible` tinyint(1) DEFAULT 1 COMMENT 'هل يظهر في القائمة',
  `parent_id` int(11) DEFAULT NULL COMMENT 'الرابط الأب (للقوائم الفرعية)',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='روابط شريط التنقل';

--
-- إرجاع أو استيراد بيانات الجدول `navigation_links`
--

INSERT INTO `navigation_links` (`nav_id`, `link_title_ar`, `link_url`, `target_section`, `display_order`, `is_visible`, `parent_id`, `created_at`) VALUES
(1, 'عن المدارس', '#about', 'about', 1, 1, NULL, '2026-06-20 18:48:00'),
(2, 'الإدارة', '#administration', 'administration', 2, 1, NULL, '2026-06-20 18:48:00'),
(3, 'الحاسبة الذكية', '#fees', 'fees', 3, 1, NULL, '2026-06-20 18:48:00'),
(4, 'بوابة النتائج', '#portal', 'portal', 4, 1, NULL, '2026-06-20 18:48:00'),
(5, 'الوظائف', '#careers', 'careers', 5, 1, NULL, '2026-06-20 18:48:00'),
(6, 'تواصل معنا', '#contact', 'contact', 6, 1, NULL, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `news_events`
--

CREATE TABLE `news_events` (
  `event_id` int(11) NOT NULL,
  `event_title_ar` varchar(300) NOT NULL COMMENT 'عنوان الخبر/الفعالية',
  `event_content_ar` text NOT NULL COMMENT 'المحتوى',
  `event_image` varchar(500) DEFAULT NULL COMMENT 'صورة الخبر',
  `event_type` enum('خبر','فعالية','إعلان','إنجاز') DEFAULT 'خبر',
  `event_date` date DEFAULT NULL COMMENT 'تاريخ الحدث',
  `is_featured` tinyint(1) DEFAULT 0 COMMENT 'هل هو خبر مميز',
  `is_active` tinyint(1) DEFAULT 1,
  `views_count` int(11) DEFAULT 0 COMMENT 'عدد المشاهدات',
  `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_unicode_ci COMMENT='أخبار وفعاليات المدرسة';

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

--
-- بنية الجدول `notifications`
--

CREATE TABLE `notifications` (
  `notification_id` int(11) NOT NULL,
  `target_user_type` enum('الجميع','طلاب','أولياء أمور','معلمين','إداريين') NOT NULL,
  `target_user_id` int(11) DEFAULT NULL COMMENT 'مستخدم محدد (اختياري)',
  `notification_title` varchar(300) NOT NULL,
  `notification_body` text NOT NULL,
  `notification_type` enum('عام','تحذير','نجاح','معلومة') DEFAULT 'عام',
  `is_read` tinyint(1) DEFAULT 0,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الإشعارات والتنبيهات';

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

--
-- بنية الجدول `registration_requests`
--

CREATE TABLE `registration_requests` (
  `request_id` int(11) NOT NULL,
  `student_full_name` varchar(300) NOT NULL COMMENT 'اسم الطالب الرباعي',
  `national_id` varchar(20) NOT NULL COMMENT 'رقم الهوية/الإقامة',
  `birth_date` date NOT NULL COMMENT 'تاريخ الميلاد',
  `gender` enum('ذكر','أنثى') DEFAULT NULL COMMENT 'الجنس',
  `target_grade_id` int(11) DEFAULT NULL COMMENT 'المرحلة المستهدفة',
  `parent_name` varchar(300) DEFAULT NULL COMMENT 'اسم ولي الأمر',
  `parent_phone` varchar(20) DEFAULT NULL COMMENT 'رقم جوال ولي الأمر',
  `parent_email` varchar(200) DEFAULT NULL COMMENT 'بريد ولي الأمر',
  `previous_school` varchar(300) DEFAULT NULL COMMENT 'المدرسة السابقة',
  `notes` text DEFAULT NULL COMMENT 'ملاحظات إضافية',
  `bus_service_id` int(11) DEFAULT NULL COMMENT 'خدمة الحافلة المطلوبة',
  `status` enum('جديد','قيد المراجعة','مقبول','مرفوض','مكتمل') DEFAULT 'جديد' COMMENT 'حالة الطلب',
  `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_unicode_ci COMMENT='طلبات تسجيل الطلاب الجدد';

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

--
-- بنية الجدول `schools`
--

CREATE TABLE `schools` (
  `school_id` int(11) NOT NULL,
  `school_name_ar` varchar(200) NOT NULL COMMENT 'اسم المدرسة بالعربية',
  `school_name_en` varchar(200) DEFAULT NULL COMMENT 'اسم المدرسة بالإنجليزية',
  `logo_path` varchar(500) DEFAULT NULL COMMENT 'مسار شعار المدرسة',
  `founded_year` year(4) DEFAULT NULL COMMENT 'سنة التأسيس',
  `description_ar` text DEFAULT NULL COMMENT 'وصف المدرسة بالعربية',
  `description_en` text DEFAULT NULL COMMENT 'وصف المدرسة بالإنجليزية',
  `vision_ar` text DEFAULT NULL COMMENT 'الرؤية بالعربية',
  `mission_ar` text DEFAULT NULL COMMENT 'الرسالة بالعربية',
  `address_ar` varchar(500) DEFAULT NULL COMMENT 'العنوان بالعربية',
  `address_en` varchar(500) DEFAULT NULL COMMENT 'العنوان بالإنجليزية',
  `city` varchar(100) DEFAULT NULL COMMENT 'المدينة',
  `country` varchar(100) DEFAULT NULL COMMENT 'الدولة',
  `unified_phone` varchar(50) DEFAULT NULL COMMENT 'الرقم الموحد',
  `email` varchar(200) DEFAULT NULL COMMENT 'البريد الإلكتروني',
  `working_hours_ar` varchar(200) DEFAULT NULL COMMENT 'ساعات العمل بالعربية',
  `is_active` tinyint(1) DEFAULT 1 COMMENT 'هل المدرسة نشطة',
  `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_unicode_ci COMMENT='جدول معلومات المدرسة الرئيسية';

--
-- إرجاع أو استيراد بيانات الجدول `schools`
--

INSERT INTO `schools` (`school_id`, `school_name_ar`, `school_name_en`, `logo_path`, `founded_year`, `description_ar`, `description_en`, `vision_ar`, `mission_ar`, `address_ar`, `address_en`, `city`, `country`, `unified_phone`, `email`, `working_hours_ar`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'مدارس المعرفة الحديثة', 'Modern Knowledge Schools', 'logo.png', '2026', 'بيئة تعليمية تفاعلية حديثة مبنية على القيم الأصيلة والعلوم العصرية المبتكرة.', NULL, 'رؤيتتا:', 'رسالتنا:', 'البيضاء', NULL, 'البيضاء', 'اليمن', '920012345', 'info@alknowledge.edu.sa', 'الأحد إلى الاربعاء (7:00 ص - 1:00 م)', 1, '2026-06-20 18:47:59', '2026-07-08 19:29:31');

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

--
-- بنية الجدول `school_grades`
--

CREATE TABLE `school_grades` (
  `grade_id` int(11) NOT NULL,
  `stage_id` int(11) NOT NULL COMMENT 'المرحلة التابعة لها (تشير إلى grade_levels)',
  `grade_name_ar` varchar(100) NOT NULL COMMENT 'مثل: الصف الأول الابتدائي',
  `grade_name_en` varchar(100) DEFAULT NULL,
  `grade_number` int(11) NOT NULL COMMENT 'رقم الصف للترتيب',
  `is_active` tinyint(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الصفوف الدراسية التابعة للمراحل';

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

--
-- بنية الجدول `sibling_discounts`
--

CREATE TABLE `sibling_discounts` (
  `discount_id` int(11) NOT NULL,
  `siblings_count` int(11) NOT NULL COMMENT 'عدد الإخوة المسجلين',
  `discount_percentage` decimal(5,2) NOT NULL COMMENT 'نسبة الخصم %',
  `description_ar` varchar(300) DEFAULT NULL COMMENT 'وصف الخصم',
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='خصومات الإخوة';

--
-- إرجاع أو استيراد بيانات الجدول `sibling_discounts`
--

INSERT INTO `sibling_discounts` (`discount_id`, `siblings_count`, `discount_percentage`, `description_ar`, `is_active`, `created_at`) VALUES
(1, 1, 5.00, 'أخ واحد مسجل - خصم 5%', 1, '2026-06-20 18:48:00'),
(2, 2, 10.00, 'أكثر من أخ مسجل - خصم 10%', 1, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `site_settings`
--

CREATE TABLE `site_settings` (
  `setting_id` int(11) NOT NULL,
  `setting_key` varchar(100) NOT NULL COMMENT 'مفتاح الإعداد',
  `setting_value` text DEFAULT NULL COMMENT 'قيمة الإعداد',
  `setting_type` enum('text','number','boolean','image','json') DEFAULT 'text',
  `description_ar` varchar(300) DEFAULT NULL COMMENT 'وصف الإعداد',
  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الإعدادات العامة للموقع';

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

--
-- بنية الجدول `social_links`
--

CREATE TABLE `social_links` (
  `social_id` int(11) NOT NULL,
  `platform_name` varchar(100) NOT NULL COMMENT 'اسم المنصة',
  `platform_icon` varchar(100) DEFAULT NULL COMMENT 'أيقونة FontAwesome',
  `profile_url` varchar(500) NOT NULL COMMENT 'رابط الحساب',
  `display_order` int(11) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='روابط التواصل الاجتماعي';

--
-- إرجاع أو استيراد بيانات الجدول `social_links`
--

INSERT INTO `social_links` (`social_id`, `platform_name`, `platform_icon`, `profile_url`, `display_order`, `is_active`, `created_at`) VALUES
(1, 'تويتر (X)', 'fa-brands fa-x-twitter', '#', 1, 1, '2026-06-20 18:48:00'),
(2, 'انستقرام', 'fa-brands fa-instagram', '#', 2, 1, '2026-06-20 18:48:00'),
(3, 'يوتيوب', 'fa-brands fa-youtube', '#', 3, 1, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `students`
--

CREATE TABLE `students` (
  `student_id` int(11) NOT NULL,
  `registration_request_id` int(11) DEFAULT NULL COMMENT 'مرتبط بطلب التسجيل',
  `student_full_name` varchar(300) NOT NULL COMMENT 'اسم الطالب الكامل',
  `national_id` varchar(20) NOT NULL COMMENT 'رقم الهوية',
  `birth_date` date NOT NULL COMMENT 'تاريخ الميلاد',
  `gender` enum('ذكر','أنثى') DEFAULT NULL,
  `current_grade_id` int(11) DEFAULT NULL COMMENT 'المرحلة الحالية',
  `classroom` varchar(50) DEFAULT NULL COMMENT 'الفصل الدراسي',
  `academic_year` varchar(20) DEFAULT NULL COMMENT 'السنة الدراسية',
  `parent_name` varchar(300) DEFAULT NULL COMMENT 'اسم ولي الأمر',
  `parent_phone` varchar(20) DEFAULT NULL COMMENT 'رقم ولي الأمر',
  `parent_email` varchar(200) DEFAULT NULL,
  `address` text DEFAULT NULL COMMENT 'العنوان',
  `photo_path` varchar(500) DEFAULT NULL COMMENT 'صورة الطالب',
  `status` enum('نشط','متخرج','منقول','منسحب') DEFAULT 'نشط',
  `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_unicode_ci COMMENT='بيانات الطلاب المسجلين';

--
-- إرجاع أو استيراد بيانات الجدول `students`
--

INSERT INTO `students` (`student_id`, `registration_request_id`, `student_full_name`, `national_id`, `birth_date`, `gender`, `current_grade_id`, `classroom`, `academic_year`, `parent_name`, `parent_phone`, `parent_email`, `address`, `photo_path`, `status`, `created_at`, `updated_at`) VALUES
(1, NULL, 'ماجد بن فهد العتيبي', '12345', '2014-05-15', 'ذكر', 2, '5/أ', '1446', 'فهد العتيبي', '0551234567', NULL, NULL, NULL, 'نشط', '2026-06-20 18:48:00', '2026-06-20 18:48:00'),
(2, NULL, 'ليان بنت عبد الله العمري', '54321', '2012-08-20', 'أنثى', 3, '2/ب', '1446', 'عبد الله العمري', '0559876543', NULL, NULL, NULL, 'نشط', '2026-06-20 18:48:00', '2026-06-20 18:48:00');

--
-- القوادح `students`
--
DELIMITER $$
CREATE TRIGGER `after_student_insert` AFTER INSERT ON `students` FOR EACH ROW BEGIN
    UPDATE registration_requests 
    SET status = 'مكتمل' 
    WHERE national_id = NEW.national_id 
    AND status = 'مقبول';
END
$$
DELIMITER ;

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

--
-- بنية الجدول `student_conduct_records`
--

CREATE TABLE `student_conduct_records` (
  `record_id` bigint(20) NOT NULL,
  `student_id` int(11) NOT NULL,
  `term_id` int(11) DEFAULT NULL,
  `record_type` enum('إيجابي','سلبي','ملاحظة ولي أمر','تكريم') NOT NULL,
  `category` varchar(100) DEFAULT NULL,
  `points` int(11) DEFAULT 0,
  `description` text NOT NULL,
  `action_taken` text DEFAULT NULL,
  `reported_by` int(11) NOT NULL,
  `parent_notified` tinyint(1) DEFAULT 0,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='السجل السلوكي';

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

--
-- بنية الجدول `student_health_records`
--

CREATE TABLE `student_health_records` (
  `health_id` int(11) NOT NULL,
  `student_id` int(11) NOT NULL,
  `blood_type` varchar(5) DEFAULT NULL,
  `chronic_diseases` text DEFAULT NULL,
  `allergies` text DEFAULT NULL,
  `special_needs` text DEFAULT NULL,
  `medications_required` text DEFAULT NULL,
  `emergency_contact_name` varchar(200) DEFAULT NULL,
  `emergency_contact_phone` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='السجل الصحي';

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

--
-- بنية الجدول `student_leave_requests`
--

CREATE TABLE `student_leave_requests` (
  `leave_id` bigint(20) NOT NULL,
  `student_id` int(11) NOT NULL,
  `leave_type` enum('إجازة مرضية','إجازة طارئة','خروج مبكر') NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date DEFAULT NULL,
  `reason` text NOT NULL,
  `attachment_path` varchar(500) DEFAULT NULL,
  `status` enum('قيد المراجعة','موافقة','مرفوض') DEFAULT 'قيد المراجعة',
  `approved_by` int(11) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='طلبات الإجازات';

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

--
-- بنية الجدول `student_results`
--

CREATE TABLE `student_results` (
  `result_id` int(11) NOT NULL,
  `student_id` int(11) NOT NULL COMMENT 'الطالب',
  `subject_id` int(11) NOT NULL COMMENT 'المادة',
  `semester` enum('الفصل الأول','الفصل الثاني','الدور الثاني') DEFAULT NULL COMMENT 'الفصل الدراسي',
  `academic_year` varchar(20) DEFAULT NULL COMMENT 'السنة الدراسية',
  `degree` decimal(5,2) DEFAULT NULL COMMENT 'الدرجة obtained',
  `max_degree` int(11) DEFAULT 100 COMMENT 'الدرجة الكاملة',
  `grade_letter` enum('ممتاز','جيد جداً','جيد','مقبول','راسب') DEFAULT NULL COMMENT 'التقدير الحرفي',
  `teacher_name` varchar(200) DEFAULT NULL COMMENT 'اسم المعلم',
  `notes` text DEFAULT NULL COMMENT 'ملاحظات',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='نتائج الطلاب الشهرية والدورية';

--
-- إرجاع أو استيراد بيانات الجدول `student_results`
--

INSERT INTO `student_results` (`result_id`, `student_id`, `subject_id`, `semester`, `academic_year`, `degree`, `max_degree`, `grade_letter`, `teacher_name`, `notes`, `created_at`) VALUES
(1, 1, 1, 'الفصل الأول', '1446', 100.00, 100, 'ممتاز', NULL, NULL, '2026-06-20 18:48:00'),
(2, 1, 2, 'الفصل الأول', '1446', 98.00, 100, 'ممتاز', NULL, NULL, '2026-06-20 18:48:00'),
(3, 1, 3, 'الفصل الأول', '1446', 97.00, 100, 'ممتاز', NULL, NULL, '2026-06-20 18:48:00'),
(4, 2, 1, 'الفصل الأول', '1446', 99.00, 100, 'ممتاز', NULL, NULL, '2026-06-20 18:48:00'),
(5, 2, 2, 'الفصل الأول', '1446', 95.00, 100, 'ممتاز', NULL, NULL, '2026-06-20 18:48:00'),
(6, 2, 3, 'الفصل الأول', '1446', 96.00, 100, 'ممتاز', NULL, NULL, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `subjects`
--

CREATE TABLE `subjects` (
  `subject_id` int(11) NOT NULL,
  `subject_name_ar` varchar(200) NOT NULL COMMENT 'اسم المادة بالعربية',
  `subject_name_en` varchar(200) DEFAULT NULL COMMENT 'اسم المادة بالإنجليزية',
  `max_degree` int(11) DEFAULT 100 COMMENT 'الدرجة العظمى',
  `grade_level_id` int(11) DEFAULT NULL COMMENT 'المرحلة الدراسية المرتبطة',
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='المواد الدراسية';

--
-- إرجاع أو استيراد بيانات الجدول `subjects`
--

INSERT INTO `subjects` (`subject_id`, `subject_name_ar`, `subject_name_en`, `max_degree`, `grade_level_id`, `is_active`, `created_at`) VALUES
(1, 'القرآن الكريم والتربية الإسلامية', NULL, 100, NULL, 1, '2026-06-20 18:48:00'),
(2, 'اللغة العربية وآدابها', NULL, 100, NULL, 1, '2026-06-20 18:48:00'),
(3, 'الرياضيات والعلوم التطبيقية', NULL, 100, NULL, 1, '2026-06-20 18:48:00'),
(4, 'اللغة الإنجليزية', NULL, 100, NULL, 1, '2026-06-20 18:48:00'),
(5, 'العلوم الطبيعية', NULL, 100, NULL, 1, '2026-06-20 18:48:00'),
(6, 'الدراسات الاجتماعية', NULL, 100, NULL, 1, '2026-06-20 18:48:00'),
(7, 'التربية البدنية', NULL, 100, NULL, 1, '2026-06-20 18:48:00'),
(8, 'الحاسب الآلي وتقنية المعلومات', NULL, 100, NULL, 1, '2026-06-20 18:48:00');

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

--
-- بنية الجدول `teachers`
--

CREATE TABLE `teachers` (
  `teacher_id` int(11) NOT NULL,
  `full_name_ar` varchar(200) NOT NULL,
  `full_name_en` varchar(200) DEFAULT NULL,
  `national_id` varchar(20) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `email` varchar(200) DEFAULT NULL,
  `specialization` varchar(200) DEFAULT NULL,
  `qualification` varchar(100) DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='بيانات المعلمين';

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

--
-- بنية الجدول `teacher_assignments`
--

CREATE TABLE `teacher_assignments` (
  `assignment_id` int(11) NOT NULL,
  `teacher_id` int(11) NOT NULL,
  `subject_id` int(11) NOT NULL,
  `section_id` int(11) NOT NULL,
  `term_id` int(11) DEFAULT NULL,
  `academic_year` varchar(20) NOT NULL,
  `is_active` tinyint(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='تكليف المعلمين';

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

--
-- بنية الجدول `users`
--

CREATE TABLE `users` (
  `user_id` int(11) NOT NULL,
  `username` varchar(100) NOT NULL COMMENT 'اسم المستخدم',
  `password_hash` varchar(255) NOT NULL COMMENT 'كلمة المرور المشفرة',
  `email` varchar(200) NOT NULL,
  `user_role` enum('مدير عام','مدير نظام','محاسب','معلم','موظف قبول','موظف دعم') NOT NULL,
  `full_name` varchar(300) NOT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT 1,
  `last_login` timestamp NULL 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_unicode_ci COMMENT='مستخدمي النظام وصلاحياتهم';

--
-- إرجاع أو استيراد بيانات الجدول `users`
--

INSERT INTO `users` (`user_id`, `username`, `password_hash`, `email`, `user_role`, `full_name`, `phone`, `is_active`, `last_login`, `created_at`, `updated_at`) VALUES
(1, 'admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin@alknowledge.edu.sa', 'مدير نظام', 'مدير النظام', '0500000000', 1, NULL, '2026-06-20 18:48:00', '2026-06-20 18:48:00');

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

--
-- بنية الجدول `user_sessions`
--

CREATE TABLE `user_sessions` (
  `session_id` int(11) NOT NULL,
  `user_type` enum('طالب','ولي أمر','معلم','إداري','مدير') NOT NULL,
  `user_id` int(11) NOT NULL COMMENT 'معرف المستخدم',
  `login_time` timestamp NOT NULL DEFAULT current_timestamp(),
  `logout_time` timestamp NULL DEFAULT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='سجل جلسات المستخدمين';

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

--
-- Stand-in structure for view `v_active_registrations`
-- (See below for the actual view)
--
CREATE TABLE `v_active_registrations` (
`request_id` int(11)
,`student_full_name` varchar(300)
,`national_id` varchar(20)
,`birth_date` date
,`gender` enum('ذكر','أنثى')
,`target_grade_id` int(11)
,`parent_name` varchar(300)
,`parent_phone` varchar(20)
,`parent_email` varchar(200)
,`previous_school` varchar(300)
,`notes` text
,`bus_service_id` int(11)
,`status` enum('جديد','قيد المراجعة','مقبول','مرفوض','مكتمل')
,`created_at` timestamp
,`updated_at` timestamp
,`target_grade_name` varchar(200)
,`bus_service_name` varchar(200)
);

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

--
-- Stand-in structure for view `v_student_fee_summary`
-- (See below for the actual view)
--
CREATE TABLE `v_student_fee_summary` (
`payment_id` int(11)
,`student_full_name` varchar(300)
,`national_id` varchar(20)
,`grade_name_ar` varchar(200)
,`base_fees` decimal(10,2)
,`bus_fees` decimal(10,2)
,`discount_amount` decimal(10,2)
,`total_fees` decimal(10,2)
,`paid_amount` decimal(10,2)
,`remaining_amount` decimal(11,2)
,`payment_status` enum('غير مدفوع','مدفوع جزئياً','مدفوع بالكامل')
,`academic_year` varchar(20)
);

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

--
-- Stand-in structure for view `v_student_full_results`
-- (See below for the actual view)
--
CREATE TABLE `v_student_full_results` (
`student_id` int(11)
,`student_full_name` varchar(300)
,`national_id` varchar(20)
,`current_grade` varchar(200)
,`classroom` varchar(50)
,`subject_name_ar` varchar(200)
,`semester` enum('الفصل الأول','الفصل الثاني','الدور الثاني')
,`academic_year` varchar(20)
,`degree` decimal(5,2)
,`max_degree` int(11)
,`grade_letter` enum('ممتاز','جيد جداً','جيد','مقبول','راسب')
,`percentage` decimal(9,2)
);

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

--
-- بنية الجدول `weekly_timetable`
--

CREATE TABLE `weekly_timetable` (
  `timetable_id` int(11) NOT NULL,
  `section_id` int(11) NOT NULL,
  `subject_id` int(11) NOT NULL,
  `teacher_id` int(11) NOT NULL,
  `day_of_week` enum('الأحد','الاثنين','الثلاثاء','الأربعاء','الخميس') NOT NULL,
  `period_number` int(11) NOT NULL,
  `room_number` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الجدول الأسبوعي';

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

--
-- Structure for view `v_active_registrations`
--
DROP TABLE IF EXISTS `v_active_registrations`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_active_registrations`  AS SELECT `rr`.`request_id` AS `request_id`, `rr`.`student_full_name` AS `student_full_name`, `rr`.`national_id` AS `national_id`, `rr`.`birth_date` AS `birth_date`, `rr`.`gender` AS `gender`, `rr`.`target_grade_id` AS `target_grade_id`, `rr`.`parent_name` AS `parent_name`, `rr`.`parent_phone` AS `parent_phone`, `rr`.`parent_email` AS `parent_email`, `rr`.`previous_school` AS `previous_school`, `rr`.`notes` AS `notes`, `rr`.`bus_service_id` AS `bus_service_id`, `rr`.`status` AS `status`, `rr`.`created_at` AS `created_at`, `rr`.`updated_at` AS `updated_at`, `gl`.`grade_name_ar` AS `target_grade_name`, `bs`.`service_name_ar` AS `bus_service_name` FROM ((`registration_requests` `rr` left join `grade_levels` `gl` on(`rr`.`target_grade_id` = `gl`.`grade_id`)) left join `bus_services` `bs` on(`rr`.`bus_service_id` = `bs`.`service_id`)) WHERE `rr`.`status` in ('جديد','قيد المراجعة') ;

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

--
-- Structure for view `v_student_fee_summary`
--
DROP TABLE IF EXISTS `v_student_fee_summary`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_student_fee_summary`  AS SELECT `fp`.`payment_id` AS `payment_id`, `s`.`student_full_name` AS `student_full_name`, `s`.`national_id` AS `national_id`, `gl`.`grade_name_ar` AS `grade_name_ar`, `fp`.`base_fees` AS `base_fees`, `fp`.`bus_fees` AS `bus_fees`, `fp`.`discount_amount` AS `discount_amount`, `fp`.`total_fees` AS `total_fees`, `fp`.`paid_amount` AS `paid_amount`, `fp`.`total_fees`- `fp`.`paid_amount` AS `remaining_amount`, `fp`.`payment_status` AS `payment_status`, `fp`.`academic_year` AS `academic_year` FROM ((`fee_payments` `fp` join `students` `s` on(`fp`.`student_id` = `s`.`student_id`)) join `grade_levels` `gl` on(`fp`.`grade_level_id` = `gl`.`grade_id`)) ;

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

--
-- Structure for view `v_student_full_results`
--
DROP TABLE IF EXISTS `v_student_full_results`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_student_full_results`  AS SELECT `s`.`student_id` AS `student_id`, `s`.`student_full_name` AS `student_full_name`, `s`.`national_id` AS `national_id`, `gl`.`grade_name_ar` AS `current_grade`, `s`.`classroom` AS `classroom`, `sub`.`subject_name_ar` AS `subject_name_ar`, `sr`.`semester` AS `semester`, `sr`.`academic_year` AS `academic_year`, `sr`.`degree` AS `degree`, `sr`.`max_degree` AS `max_degree`, `sr`.`grade_letter` AS `grade_letter`, round(`sr`.`degree` / `sr`.`max_degree` * 100,2) AS `percentage` FROM (((`students` `s` left join `grade_levels` `gl` on(`s`.`current_grade_id` = `gl`.`grade_id`)) join `student_results` `sr` on(`s`.`student_id` = `sr`.`student_id`)) join `subjects` `sub` on(`sr`.`subject_id` = `sub`.`subject_id`)) ;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `about_sections`
--
ALTER TABLE `about_sections`
  ADD PRIMARY KEY (`section_id`);

--
-- Indexes for table `academic_terms`
--
ALTER TABLE `academic_terms`
  ADD PRIMARY KEY (`term_id`);

--
-- Indexes for table `activities_media`
--
ALTER TABLE `activities_media`
  ADD PRIMARY KEY (`media_id`);

--
-- Indexes for table `administrators`
--
ALTER TABLE `administrators`
  ADD PRIMARY KEY (`admin_id`);

--
-- Indexes for table `attachments`
--
ALTER TABLE `attachments`
  ADD PRIMARY KEY (`attachment_id`);

--
-- Indexes for table `audit_logs`
--
ALTER TABLE `audit_logs`
  ADD PRIMARY KEY (`log_id`);

--
-- Indexes for table `bus_services`
--
ALTER TABLE `bus_services`
  ADD PRIMARY KEY (`service_id`);

--
-- Indexes for table `certificates`
--
ALTER TABLE `certificates`
  ADD PRIMARY KEY (`certificate_id`),
  ADD KEY `student_id` (`student_id`);

--
-- Indexes for table `class_sections`
--
ALTER TABLE `class_sections`
  ADD PRIMARY KEY (`section_id`),
  ADD UNIQUE KEY `unique_section_per_year` (`grade_id`,`section_name`,`academic_year`);

--
-- Indexes for table `contact_messages`
--
ALTER TABLE `contact_messages`
  ADD PRIMARY KEY (`message_id`),
  ADD KEY `idx_contact_messages_status` (`status`);

--
-- Indexes for table `daily_attendance`
--
ALTER TABLE `daily_attendance`
  ADD PRIMARY KEY (`attendance_id`),
  ADD UNIQUE KEY `unique_student_date` (`student_id`,`attendance_date`);

--
-- Indexes for table `faq`
--
ALTER TABLE `faq`
  ADD PRIMARY KEY (`faq_id`);

--
-- Indexes for table `fee_payments`
--
ALTER TABLE `fee_payments`
  ADD PRIMARY KEY (`payment_id`),
  ADD KEY `grade_level_id` (`grade_level_id`),
  ADD KEY `bus_service_id` (`bus_service_id`),
  ADD KEY `idx_fee_payments_student` (`student_id`);

--
-- Indexes for table `footer_links`
--
ALTER TABLE `footer_links`
  ADD PRIMARY KEY (`footer_link_id`);

--
-- Indexes for table `gallery`
--
ALTER TABLE `gallery`
  ADD PRIMARY KEY (`gallery_id`);

--
-- Indexes for table `grade_levels`
--
ALTER TABLE `grade_levels`
  ADD PRIMARY KEY (`grade_id`);

--
-- Indexes for table `grade_subjects`
--
ALTER TABLE `grade_subjects`
  ADD PRIMARY KEY (`mapping_id`),
  ADD UNIQUE KEY `unique_grade_subject` (`grade_id`,`subject_id`),
  ADD KEY `fk_gs_subject` (`subject_id`);

--
-- Indexes for table `hero_slides`
--
ALTER TABLE `hero_slides`
  ADD PRIMARY KEY (`slide_id`);

--
-- Indexes for table `job_applications`
--
ALTER TABLE `job_applications`
  ADD PRIMARY KEY (`application_id`),
  ADD KEY `job_id` (`job_id`),
  ADD KEY `idx_job_applications_status` (`status`);

--
-- Indexes for table `job_postings`
--
ALTER TABLE `job_postings`
  ADD PRIMARY KEY (`job_id`);

--
-- Indexes for table `navigation_links`
--
ALTER TABLE `navigation_links`
  ADD PRIMARY KEY (`nav_id`),
  ADD KEY `parent_id` (`parent_id`);

--
-- Indexes for table `news_events`
--
ALTER TABLE `news_events`
  ADD PRIMARY KEY (`event_id`),
  ADD KEY `idx_news_events_type` (`event_type`);

--
-- Indexes for table `notifications`
--
ALTER TABLE `notifications`
  ADD PRIMARY KEY (`notification_id`);

--
-- Indexes for table `registration_requests`
--
ALTER TABLE `registration_requests`
  ADD PRIMARY KEY (`request_id`),
  ADD KEY `target_grade_id` (`target_grade_id`),
  ADD KEY `bus_service_id` (`bus_service_id`),
  ADD KEY `idx_registration_status` (`status`);

--
-- Indexes for table `schools`
--
ALTER TABLE `schools`
  ADD PRIMARY KEY (`school_id`);

--
-- Indexes for table `school_grades`
--
ALTER TABLE `school_grades`
  ADD PRIMARY KEY (`grade_id`),
  ADD KEY `fk_sg_stage` (`stage_id`);

--
-- Indexes for table `sibling_discounts`
--
ALTER TABLE `sibling_discounts`
  ADD PRIMARY KEY (`discount_id`);

--
-- Indexes for table `site_settings`
--
ALTER TABLE `site_settings`
  ADD PRIMARY KEY (`setting_id`),
  ADD UNIQUE KEY `setting_key` (`setting_key`);

--
-- Indexes for table `social_links`
--
ALTER TABLE `social_links`
  ADD PRIMARY KEY (`social_id`);

--
-- Indexes for table `students`
--
ALTER TABLE `students`
  ADD PRIMARY KEY (`student_id`),
  ADD UNIQUE KEY `national_id` (`national_id`),
  ADD KEY `registration_request_id` (`registration_request_id`),
  ADD KEY `current_grade_id` (`current_grade_id`),
  ADD KEY `idx_students_national_id` (`national_id`);

--
-- Indexes for table `student_conduct_records`
--
ALTER TABLE `student_conduct_records`
  ADD PRIMARY KEY (`record_id`),
  ADD KEY `fk_cond_student` (`student_id`);

--
-- Indexes for table `student_health_records`
--
ALTER TABLE `student_health_records`
  ADD PRIMARY KEY (`health_id`),
  ADD UNIQUE KEY `unique_student_health` (`student_id`);

--
-- Indexes for table `student_leave_requests`
--
ALTER TABLE `student_leave_requests`
  ADD PRIMARY KEY (`leave_id`),
  ADD KEY `fk_leave_student` (`student_id`);

--
-- Indexes for table `student_results`
--
ALTER TABLE `student_results`
  ADD PRIMARY KEY (`result_id`),
  ADD KEY `subject_id` (`subject_id`),
  ADD KEY `idx_student_results_student` (`student_id`);

--
-- Indexes for table `subjects`
--
ALTER TABLE `subjects`
  ADD PRIMARY KEY (`subject_id`),
  ADD KEY `grade_level_id` (`grade_level_id`);

--
-- Indexes for table `teachers`
--
ALTER TABLE `teachers`
  ADD PRIMARY KEY (`teacher_id`);

--
-- Indexes for table `teacher_assignments`
--
ALTER TABLE `teacher_assignments`
  ADD PRIMARY KEY (`assignment_id`),
  ADD UNIQUE KEY `unique_ta` (`teacher_id`,`subject_id`,`section_id`,`academic_year`),
  ADD KEY `fk_ta_subject` (`subject_id`),
  ADD KEY `fk_ta_section` (`section_id`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`),
  ADD UNIQUE KEY `username` (`username`),
  ADD UNIQUE KEY `email` (`email`);

--
-- Indexes for table `user_sessions`
--
ALTER TABLE `user_sessions`
  ADD PRIMARY KEY (`session_id`);

--
-- Indexes for table `weekly_timetable`
--
ALTER TABLE `weekly_timetable`
  ADD PRIMARY KEY (`timetable_id`),
  ADD UNIQUE KEY `unique_slot` (`section_id`,`day_of_week`,`period_number`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `about_sections`
--
ALTER TABLE `about_sections`
  MODIFY `section_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `academic_terms`
--
ALTER TABLE `academic_terms`
  MODIFY `term_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `activities_media`
--
ALTER TABLE `activities_media`
  MODIFY `media_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT for table `administrators`
--
ALTER TABLE `administrators`
  MODIFY `admin_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `attachments`
--
ALTER TABLE `attachments`
  MODIFY `attachment_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `audit_logs`
--
ALTER TABLE `audit_logs`
  MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `bus_services`
--
ALTER TABLE `bus_services`
  MODIFY `service_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `certificates`
--
ALTER TABLE `certificates`
  MODIFY `certificate_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `class_sections`
--
ALTER TABLE `class_sections`
  MODIFY `section_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `contact_messages`
--
ALTER TABLE `contact_messages`
  MODIFY `message_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `daily_attendance`
--
ALTER TABLE `daily_attendance`
  MODIFY `attendance_id` bigint(20) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `faq`
--
ALTER TABLE `faq`
  MODIFY `faq_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `fee_payments`
--
ALTER TABLE `fee_payments`
  MODIFY `payment_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `footer_links`
--
ALTER TABLE `footer_links`
  MODIFY `footer_link_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `gallery`
--
ALTER TABLE `gallery`
  MODIFY `gallery_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `grade_levels`
--
ALTER TABLE `grade_levels`
  MODIFY `grade_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `grade_subjects`
--
ALTER TABLE `grade_subjects`
  MODIFY `mapping_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `hero_slides`
--
ALTER TABLE `hero_slides`
  MODIFY `slide_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `job_applications`
--
ALTER TABLE `job_applications`
  MODIFY `application_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `job_postings`
--
ALTER TABLE `job_postings`
  MODIFY `job_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `navigation_links`
--
ALTER TABLE `navigation_links`
  MODIFY `nav_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `news_events`
--
ALTER TABLE `news_events`
  MODIFY `event_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `notifications`
--
ALTER TABLE `notifications`
  MODIFY `notification_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `registration_requests`
--
ALTER TABLE `registration_requests`
  MODIFY `request_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `schools`
--
ALTER TABLE `schools`
  MODIFY `school_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `school_grades`
--
ALTER TABLE `school_grades`
  MODIFY `grade_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `sibling_discounts`
--
ALTER TABLE `sibling_discounts`
  MODIFY `discount_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `site_settings`
--
ALTER TABLE `site_settings`
  MODIFY `setting_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `social_links`
--
ALTER TABLE `social_links`
  MODIFY `social_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `students`
--
ALTER TABLE `students`
  MODIFY `student_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `student_conduct_records`
--
ALTER TABLE `student_conduct_records`
  MODIFY `record_id` bigint(20) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `student_health_records`
--
ALTER TABLE `student_health_records`
  MODIFY `health_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `student_leave_requests`
--
ALTER TABLE `student_leave_requests`
  MODIFY `leave_id` bigint(20) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `student_results`
--
ALTER TABLE `student_results`
  MODIFY `result_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `subjects`
--
ALTER TABLE `subjects`
  MODIFY `subject_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `teachers`
--
ALTER TABLE `teachers`
  MODIFY `teacher_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `teacher_assignments`
--
ALTER TABLE `teacher_assignments`
  MODIFY `assignment_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `user_sessions`
--
ALTER TABLE `user_sessions`
  MODIFY `session_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `weekly_timetable`
--
ALTER TABLE `weekly_timetable`
  MODIFY `timetable_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- قيود الجداول المُلقاة.
--

--
-- قيود الجداول `certificates`
--
ALTER TABLE `certificates`
  ADD CONSTRAINT `certificates_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON DELETE CASCADE;

--
-- قيود الجداول `class_sections`
--
ALTER TABLE `class_sections`
  ADD CONSTRAINT `fk_cs_grade` FOREIGN KEY (`grade_id`) REFERENCES `school_grades` (`grade_id`) ON DELETE CASCADE;

--
-- قيود الجداول `daily_attendance`
--
ALTER TABLE `daily_attendance`
  ADD CONSTRAINT `fk_att_student` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON DELETE CASCADE;

--
-- قيود الجداول `fee_payments`
--
ALTER TABLE `fee_payments`
  ADD CONSTRAINT `fee_payments_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fee_payments_ibfk_2` FOREIGN KEY (`grade_level_id`) REFERENCES `grade_levels` (`grade_id`),
  ADD CONSTRAINT `fee_payments_ibfk_3` FOREIGN KEY (`bus_service_id`) REFERENCES `bus_services` (`service_id`) ON DELETE SET NULL;

--
-- قيود الجداول `grade_subjects`
--
ALTER TABLE `grade_subjects`
  ADD CONSTRAINT `fk_gs_grade` FOREIGN KEY (`grade_id`) REFERENCES `school_grades` (`grade_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_gs_subject` FOREIGN KEY (`subject_id`) REFERENCES `subjects` (`subject_id`) ON DELETE CASCADE;

--
-- قيود الجداول `job_applications`
--
ALTER TABLE `job_applications`
  ADD CONSTRAINT `job_applications_ibfk_1` FOREIGN KEY (`job_id`) REFERENCES `job_postings` (`job_id`) ON DELETE SET NULL;

--
-- قيود الجداول `navigation_links`
--
ALTER TABLE `navigation_links`
  ADD CONSTRAINT `navigation_links_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `navigation_links` (`nav_id`) ON DELETE SET NULL;

--
-- قيود الجداول `registration_requests`
--
ALTER TABLE `registration_requests`
  ADD CONSTRAINT `registration_requests_ibfk_1` FOREIGN KEY (`target_grade_id`) REFERENCES `grade_levels` (`grade_id`) ON DELETE SET NULL,
  ADD CONSTRAINT `registration_requests_ibfk_2` FOREIGN KEY (`bus_service_id`) REFERENCES `bus_services` (`service_id`) ON DELETE SET NULL;

--
-- قيود الجداول `school_grades`
--
ALTER TABLE `school_grades`
  ADD CONSTRAINT `fk_sg_stage` FOREIGN KEY (`stage_id`) REFERENCES `grade_levels` (`grade_id`) ON DELETE CASCADE;

--
-- قيود الجداول `students`
--
ALTER TABLE `students`
  ADD CONSTRAINT `students_ibfk_1` FOREIGN KEY (`registration_request_id`) REFERENCES `registration_requests` (`request_id`) ON DELETE SET NULL,
  ADD CONSTRAINT `students_ibfk_2` FOREIGN KEY (`current_grade_id`) REFERENCES `grade_levels` (`grade_id`) ON DELETE SET NULL;

--
-- قيود الجداول `student_conduct_records`
--
ALTER TABLE `student_conduct_records`
  ADD CONSTRAINT `fk_cond_student` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON DELETE CASCADE;

--
-- قيود الجداول `student_health_records`
--
ALTER TABLE `student_health_records`
  ADD CONSTRAINT `fk_health_student` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON DELETE CASCADE;

--
-- قيود الجداول `student_leave_requests`
--
ALTER TABLE `student_leave_requests`
  ADD CONSTRAINT `fk_leave_student` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON DELETE CASCADE;

--
-- قيود الجداول `student_results`
--
ALTER TABLE `student_results`
  ADD CONSTRAINT `student_results_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `student_results_ibfk_2` FOREIGN KEY (`subject_id`) REFERENCES `subjects` (`subject_id`) ON DELETE CASCADE;

--
-- قيود الجداول `subjects`
--
ALTER TABLE `subjects`
  ADD CONSTRAINT `subjects_ibfk_1` FOREIGN KEY (`grade_level_id`) REFERENCES `grade_levels` (`grade_id`) ON DELETE SET NULL;

--
-- قيود الجداول `teacher_assignments`
--
ALTER TABLE `teacher_assignments`
  ADD CONSTRAINT `fk_ta_section` FOREIGN KEY (`section_id`) REFERENCES `class_sections` (`section_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_ta_subject` FOREIGN KEY (`subject_id`) REFERENCES `subjects` (`subject_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_ta_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teachers` (`teacher_id`) ON DELETE CASCADE;

--
-- قيود الجداول `weekly_timetable`
--
ALTER TABLE `weekly_timetable`
  ADD CONSTRAINT `fk_tt_section` FOREIGN KEY (`section_id`) REFERENCES `class_sections` (`section_id`) ON DELETE CASCADE;

DELIMITER $$
--
-- أحداث
--
CREATE DEFINER=`root`@`localhost` EVENT `cleanup_old_sessions` ON SCHEDULE EVERY 1 DAY STARTS '2026-06-20 21:48:00' ON COMPLETION NOT PRESERVE ENABLE DO DELETE FROM user_sessions 
    WHERE is_active = FALSE 
    AND login_time < DATE_SUB(NOW(), INTERVAL 30 DAY)$$

DELIMITER ;
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 */;
