-- https://www.phpmyadmin.net/
--

START TRANSACTION;



--
-- Database: `school_db`
--

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

--
-- Table structure for table `academic_years`
--

CREATE TABLE `academic_years` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(50) NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `academic_years`
--

INSERT INTO `academic_years` (`id`, `name`, `start_date`, `end_date`, `created_at`, `updated_at`, `deleted_at`) VALUES
(11, '2025-2026', '0025-09-01', '2026-07-24', '2026-02-08 19:47:21', '2026-02-08 19:47:21', NULL),
(12, '2026-2027', '2026-09-01', '2027-09-24', '2026-02-08 19:47:57', '2026-02-08 19:47:57', NULL);

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

--
-- Table structure for table `activity_logs`
--

CREATE TABLE `activity_logs` (
  `id` int(9) UNSIGNED NOT NULL,
  `user_id` int(9) UNSIGNED DEFAULT NULL,
  `role` varchar(50) DEFAULT NULL,
  `action` varchar(255) NOT NULL,
  `ip_address` varchar(50) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `assessment_components`
--

CREATE TABLE `assessment_components` (
  `id` int(10) UNSIGNED NOT NULL,
  `assessment_section_id` int(10) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `max_mark` float NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `assessment_modules`
--

CREATE TABLE `assessment_modules` (
  `id` int(10) UNSIGNED NOT NULL,
  `department_id` int(10) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `assessment_sections`
--

CREATE TABLE `assessment_sections` (
  `id` int(10) UNSIGNED NOT NULL,
  `assessment_module_id` int(10) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `percentage` float DEFAULT NULL,
  `use_percentage` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `attendance_records`
--

CREATE TABLE `attendance_records` (
  `id` int(9) UNSIGNED NOT NULL,
  `academic_year_id` int(9) UNSIGNED NOT NULL,
  `term_id` int(9) UNSIGNED NOT NULL,
  `class_id` int(9) UNSIGNED NOT NULL,
  `house_id` int(9) UNSIGNED DEFAULT NULL,
  `student_id` int(9) UNSIGNED NOT NULL,
  `attendance_date` date NOT NULL,
  `status` enum('Present','Absent','Late','Excused') NOT NULL DEFAULT 'Present',
  `remarks` varchar(255) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `classes`
--

CREATE TABLE `classes` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `department_id` int(10) UNSIGNED NOT NULL,
  `description` text DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `classes`
--

INSERT INTO `classes` (`id`, `name`, `department_id`, `description`, `created_at`, `updated_at`) VALUES
(22, 'Creche', 11, '', '2026-02-08 20:11:37', '2026-02-08 20:13:13'),
(23, 'Nursery 1', 11, '', '2026-02-08 20:12:02', '2026-02-08 20:14:40'),
(24, 'Nursery 2', 11, '', '2026-02-08 20:12:20', '2026-02-08 20:15:02'),
(25, 'KG 1', 11, '', '2026-02-08 20:12:44', '2026-02-08 20:17:39'),
(26, 'KG 2', 11, '', '2026-02-08 20:13:41', '2026-02-08 20:18:02'),
(27, 'Basic 1', 12, '', '2026-02-08 20:16:20', '2026-02-08 20:18:21'),
(28, 'Basic 2', 12, NULL, '2026-02-08 20:18:38', '2026-02-08 20:18:38'),
(29, 'Basic 3', 12, NULL, '2026-02-08 20:18:58', '2026-02-08 20:18:58'),
(30, 'Basic 4', 12, NULL, '2026-02-08 20:19:23', '2026-02-08 20:19:23'),
(31, 'Basic 5', 12, NULL, '2026-02-08 20:20:17', '2026-02-08 20:20:17'),
(32, 'Basic 6', 12, NULL, '2026-02-08 20:20:38', '2026-02-08 20:20:38'),
(33, 'JHS 1A', 13, NULL, '2026-02-08 20:21:14', '2026-02-08 20:21:14'),
(34, 'JHS 1B', 13, NULL, '2026-02-08 20:21:31', '2026-02-08 20:21:31'),
(35, 'JHS 2A', 13, NULL, '2026-02-08 20:21:47', '2026-02-08 20:21:47'),
(36, 'JHS 2B', 13, NULL, '2026-02-08 20:22:11', '2026-02-08 20:22:11'),
(37, 'JHS 3', 13, NULL, '2026-02-08 20:22:38', '2026-02-08 20:22:38'),
(38, 'SCI 1', 14, NULL, '2026-02-08 20:23:11', '2026-02-08 20:23:11'),
(39, 'G/A 1A', 15, NULL, '2026-02-08 20:23:30', '2026-02-08 20:23:30'),
(40, 'G/A 1B', 15, NULL, '2026-02-08 20:23:56', '2026-02-08 20:23:56'),
(41, 'V/A 1', 17, NULL, '2026-02-08 20:24:32', '2026-02-08 20:24:32');

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

--
-- Table structure for table `class_subjects`
--

CREATE TABLE `class_subjects` (
  `id` int(10) UNSIGNED NOT NULL,
  `class_id` int(10) UNSIGNED NOT NULL,
  `subject_id` int(10) UNSIGNED NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `comments`
--

CREATE TABLE `comments` (
  `id` int(9) UNSIGNED NOT NULL,
  `academic_year_id` int(9) UNSIGNED NOT NULL,
  `term_id` int(9) UNSIGNED NOT NULL,
  `class_id` int(9) UNSIGNED NOT NULL,
  `student_id` int(9) UNSIGNED NOT NULL,
  `comment` text DEFAULT NULL,
  `attendance` int(10) UNSIGNED DEFAULT NULL,
  `promoted_to_class_id` int(10) UNSIGNED DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `comments`
--

INSERT INTO `comments` (`id`, `academic_year_id`, `term_id`, `class_id`, `student_id`, `comment`, `attendance`, `promoted_to_class_id`, `created_at`, `updated_at`) VALUES
(1, 1, 1, 12, 37, 'very hard working student. C & R Good', 51, 9, '2025-08-17 20:21:47', '2025-08-18 01:09:13'),
(2, 1, 1, 12, 41, 'she needs to take her studies seriously. Very respectful and Obedient', 43, 10, '2025-08-17 20:21:47', '2025-08-18 01:09:13'),
(3, 1, 1, 12, 40, 'Very Good. Keep it up. ', 16, 0, '2025-08-17 20:21:47', '2025-08-18 01:09:13'),
(4, 1, 1, 10, 43, 'goody', 61, 0, '2025-08-17 21:42:38', '2025-08-18 03:37:24'),
(5, 1, 1, 10, 38, 'fgd', 55, 0, '2025-08-17 21:42:38', '2025-08-18 03:37:24'),
(6, 1, 1, 10, 39, 'fdg', 56, 0, '2025-08-17 21:42:38', '2025-08-18 03:37:24'),
(7, 1, 1, 10, 42, 'dfg', 6, 0, '2025-08-17 21:42:38', '2025-08-18 03:37:24'),
(8, 1, 1, 12, 154, 'good', 57, 13, '2025-08-24 21:32:00', '2025-08-24 21:32:00'),
(9, 1, 1, 12, 155, 'fair', 61, 13, '2025-08-24 21:32:00', '2025-08-24 21:32:00'),
(10, 1, 2, 12, 154, 'fine', 44, 0, '2025-08-24 21:32:54', '2025-08-24 21:32:54'),
(11, 1, 2, 12, 155, 'not fine', 49, 13, '2025-08-24 21:32:54', '2025-08-24 21:32:54'),
(12, 1, 4, 12, 154, '', 0, 0, '2025-08-24 21:34:26', '2025-08-24 21:34:26'),
(13, 1, 4, 12, 155, '', 0, 0, '2025-08-24 21:34:26', '2025-08-24 21:34:26'),
(14, 1, 1, 12, 1, 'fine', 53, 0, '2025-08-25 05:39:38', '2025-08-29 08:51:38'),
(15, 1, 1, 12, 2, 'good', 60, 0, '2025-08-25 05:39:38', '2025-08-26 22:14:11'),
(16, 1, 1, 12, 3, 'v. good', 55, 0, '2025-08-29 08:51:38', '2025-08-29 08:51:38'),
(17, 1, 2, 10, 2, 'hhh', 45, 0, '2025-08-29 09:07:41', '2025-08-29 09:07:41'),
(18, 1, 2, 10, 4, 'jjjjjj', 55, 0, '2025-08-29 09:07:41', '2025-08-29 09:07:41'),
(19, 4, 2, 15, 5, 'more room for improvement', 50, 14, '2026-02-06 21:28:17', '2026-02-06 21:28:17'),
(20, 4, 2, 15, 6, 'has improved', 53, 0, '2026-02-06 21:28:17', '2026-02-06 21:28:17'),
(21, 8, 2, 15, 5, 'good work', 8, 0, '2026-02-06 22:11:11', '2026-02-06 22:11:11'),
(22, 8, 2, 15, 6, 'improving', 0, 0, '2026-02-06 22:11:11', '2026-02-06 22:11:11'),
(23, 8, 5, 15, 5, 'no fine', 7, 0, '2026-02-06 22:23:54', '2026-02-06 22:23:54'),
(24, 8, 5, 15, 6, 'fine', 8, 0, '2026-02-06 22:23:54', '2026-02-06 22:23:54'),
(25, 11, 9, 27, 9, 'Good Job!', 60, 0, '2026-02-08 23:15:47', '2026-02-08 23:15:47'),
(26, 11, 9, 27, 10, 'Keep Improving', 61, 0, '2026-02-08 23:15:47', '2026-02-08 23:15:47');

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

--
-- Table structure for table `departments`
--

CREATE TABLE `departments` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `departments`
--

INSERT INTO `departments` (`id`, `name`, `description`, `created_at`, `updated_at`) VALUES
(11, 'Pre School', '', '2026-02-08 20:08:47', '2026-02-08 20:08:47'),
(12, 'Primary School', '', '2026-02-08 20:09:07', '2026-02-08 20:09:07'),
(13, 'Junior High School', '', '2026-02-08 20:09:22', '2026-02-08 20:09:22'),
(14, 'Science Department', '', '2026-02-08 20:09:35', '2026-02-08 20:09:35'),
(15, 'General Arts Department', '', '2026-02-08 20:09:51', '2026-02-08 20:09:51'),
(16, 'Home Economics Department', '', '2026-02-08 20:10:04', '2026-02-08 20:10:04'),
(17, 'Visual Arts Deparment', '', '2026-02-08 20:10:15', '2026-02-08 20:10:15'),
(18, 'SDF', 'DFSDFS', '2026-02-13 18:49:18', '2026-02-13 18:49:18');

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

--
-- Table structure for table `discount_approvals`
--

CREATE TABLE `discount_approvals` (
  `id` int(10) UNSIGNED NOT NULL,
  `fee_entry_id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `original_amount` decimal(10,2) NOT NULL DEFAULT 0.00,
  `discount_amount` decimal(10,2) NOT NULL DEFAULT 0.00,
  `discount_percentage` decimal(5,2) DEFAULT NULL,
  `reason` text NOT NULL,
  `requested_by` int(11) DEFAULT NULL,
  `approved_by` int(11) DEFAULT NULL,
  `status` enum('pending','approved','rejected') NOT NULL DEFAULT 'pending',
  `remarks` text DEFAULT NULL,
  `approved_at` datetime DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `enrollments`
--

CREATE TABLE `enrollments` (
  `id` int(9) UNSIGNED NOT NULL,
  `student_id` int(9) UNSIGNED NOT NULL,
  `academic_year_id` int(9) UNSIGNED NOT NULL,
  `term_id` int(9) UNSIGNED NOT NULL,
  `department_id` int(9) UNSIGNED NOT NULL,
  `class_id` int(9) UNSIGNED NOT NULL,
  `house_id` int(9) UNSIGNED DEFAULT NULL,
  `enrollment_date` date DEFAULT NULL,
  `status` enum('active','transferred','graduated','suspended','withdrawn') DEFAULT 'active',
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `fee_bands`
--

CREATE TABLE `fee_bands` (
  `id` int(9) UNSIGNED NOT NULL,
  `fee_system_id` int(9) UNSIGNED NOT NULL,
  `bill_item` varchar(255) NOT NULL,
  `amount` decimal(10,2) NOT NULL DEFAULT 0.00,
  `created_at` datetime DEFAULT current_timestamp(),
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `fee_bands`
--

INSERT INTO `fee_bands` (`id`, `fee_system_id`, `bill_item`, `amount`, `created_at`, `updated_at`) VALUES
(39, 9, 'Mock Fee', 150.00, '2026-02-09 13:02:27', '2026-02-09 13:02:27'),
(40, 9, 'Tuition', 300.00, '2026-02-09 13:02:27', '2026-02-09 13:02:27'),
(41, 9, 'Extra classess', 90.00, '2026-02-09 13:02:27', '2026-02-09 13:02:27'),
(42, 9, 'Library', 15.00, '2026-02-09 13:02:27', '2026-02-09 13:02:27'),
(73, 8, 'Clinic Levy', 30.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(74, 8, 'Extra Class Fee', 70.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(75, 8, 'Feeding Fee', 300.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(76, 8, 'ICT dues', 45.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(77, 8, 'Library Fee', 15.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(78, 8, 'Maintenance', 15.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(79, 8, 'P.T.A Dues', 60.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(80, 8, 'Printing Fee', 25.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(81, 8, 'Tuition Fee', 70.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11'),
(82, 8, 'User Bus Fee', 300.00, '2026-02-25 00:36:11', '2026-02-25 00:36:11');

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

--
-- Table structure for table `fee_entries`
--

CREATE TABLE `fee_entries` (
  `id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `class_id` int(10) UNSIGNED NOT NULL,
  `academic_year_id` int(10) UNSIGNED NOT NULL,
  `term_id` int(10) UNSIGNED NOT NULL,
  `bill_item` varchar(255) DEFAULT NULL,
  `amount` decimal(10,2) NOT NULL DEFAULT 0.00,
  `discount` decimal(10,2) NOT NULL DEFAULT 0.00,
  `amount_due` decimal(10,2) NOT NULL DEFAULT 0.00,
  `arrears` decimal(10,2) NOT NULL DEFAULT 0.00,
  `total_payable` decimal(10,2) NOT NULL DEFAULT 0.00,
  `balance` decimal(10,2) DEFAULT 0.00,
  `status` enum('unpaid','paid','partial') NOT NULL DEFAULT 'unpaid',
  `payment_status` enum('unpaid','partial','paid','overpaid') DEFAULT 'unpaid',
  `payment_date` date DEFAULT NULL,
  `last_payment_date` datetime DEFAULT NULL,
  `reference_number` varchar(100) DEFAULT NULL,
  `payment_deadline` date DEFAULT NULL,
  `created_by` int(11) DEFAULT NULL,
  `updated_by` int(11) DEFAULT NULL,
  `created_at` datetime DEFAULT current_timestamp(),
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `fee_entries`
--

INSERT INTO `fee_entries` (`id`, `student_id`, `class_id`, `academic_year_id`, `term_id`, `bill_item`, `amount`, `discount`, `amount_due`, `arrears`, `total_payable`, `balance`, `status`, `payment_status`, `payment_date`, `last_payment_date`, `reference_number`, `payment_deadline`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(86, 9, 27, 11, 9, NULL, 930.00, 700.00, 230.00, 1000.00, 1230.00, 0.00, 'partial', 'unpaid', '2026-02-25', NULL, NULL, NULL, NULL, NULL, '2026-02-25 09:28:39', '2026-02-25 10:48:10'),
(87, 10, 27, 11, 9, NULL, 930.00, 800.00, 130.00, 2000.00, 2130.00, 0.00, 'partial', 'unpaid', '2026-02-25', NULL, NULL, NULL, NULL, NULL, '2026-02-25 09:28:39', '2026-02-25 12:59:03'),
(94, 12, 33, 11, 9, NULL, 555.00, 500.00, 55.00, 3000.00, 3055.00, 0.00, 'unpaid', 'unpaid', '2026-02-25', NULL, NULL, NULL, NULL, NULL, '2026-02-25 10:23:56', '2026-02-25 10:23:56'),
(95, 11, 33, 11, 9, NULL, 555.00, 100.00, 455.00, 5000.00, 5455.00, 0.00, 'unpaid', 'unpaid', '2026-02-25', NULL, NULL, NULL, NULL, NULL, '2026-02-25 10:23:56', '2026-02-25 10:23:56'),
(100, 9, 27, 11, 10, NULL, 930.00, 0.00, 930.00, 25.00, 955.00, 0.00, 'partial', 'unpaid', '2026-02-25', NULL, NULL, NULL, NULL, NULL, '2026-02-25 11:50:06', '2026-02-25 13:19:59'),
(101, 10, 27, 11, 10, NULL, 930.00, 0.00, 930.00, 0.00, 930.00, 0.00, 'partial', 'unpaid', '2026-02-25', NULL, NULL, NULL, NULL, NULL, '2026-02-25 11:50:06', '2026-02-25 12:57:44');

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

--
-- Table structure for table `fee_systems`
--

CREATE TABLE `fee_systems` (
  `id` int(9) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `department_id` int(9) UNSIGNED DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `fee_systems`
--

INSERT INTO `fee_systems` (`id`, `name`, `description`, `department_id`, `created_at`, `updated_at`) VALUES
(8, 'Billing A', '', 12, '2026-02-09 13:00:48', '2026-02-25 00:36:11'),
(9, 'Billing B', '', 13, '2026-02-09 13:02:27', '2026-02-09 13:02:27');

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

--
-- Table structure for table `grading_bands`
--

CREATE TABLE `grading_bands` (
  `id` int(9) UNSIGNED NOT NULL,
  `grading_system_id` int(9) UNSIGNED NOT NULL,
  `score_from` decimal(5,2) NOT NULL,
  `score_to` decimal(5,2) NOT NULL,
  `grade` varchar(5) NOT NULL,
  `remark` varchar(100) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `grading_bands`
--

INSERT INTO `grading_bands` (`id`, `grading_system_id`, `score_from`, `score_to`, `grade`, `remark`, `created_at`, `updated_at`) VALUES
(141, 12, 90.00, 100.00, '1', 'Highest', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(142, 12, 80.00, 89.00, '2', 'Higher', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(143, 12, 70.00, 79.00, '3', 'High', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(144, 12, 60.00, 69.00, '4', 'High Average', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(145, 12, 50.00, 59.00, '5', 'Average', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(146, 12, 45.00, 49.00, '6', 'Low Average', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(147, 12, 40.00, 44.00, '7', 'Low', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(148, 12, 35.00, 39.00, '8', 'Lower', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(149, 12, 0.00, 34.00, '9', 'Lowest', '2026-02-08 23:31:36', '2026-02-08 23:31:36'),
(152, 10, 80.00, 100.00, 'A', 'Excel', '2026-02-09 12:01:33', '2026-02-09 12:01:33'),
(153, 10, 70.00, 79.00, 'B', 'Very Good', '2026-02-09 12:01:33', '2026-02-09 12:01:33'),
(154, 10, 60.00, 69.00, 'C', 'Good', '2026-02-09 12:01:33', '2026-02-09 12:01:33'),
(155, 10, 50.00, 59.00, 'D', 'Credit', '2026-02-09 12:01:33', '2026-02-09 12:01:33'),
(156, 10, 40.00, 49.00, 'E', 'Pass', '2026-02-09 12:01:33', '2026-02-09 12:01:33'),
(157, 10, 0.00, 39.00, 'F', 'Fail', '2026-02-09 12:01:33', '2026-02-09 12:01:33');

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

--
-- Table structure for table `grading_systems`
--

CREATE TABLE `grading_systems` (
  `id` int(9) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `department_id` int(9) UNSIGNED DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `grading_systems`
--

INSERT INTO `grading_systems` (`id`, `name`, `description`, `department_id`, `created_at`, `updated_at`) VALUES
(10, 'Primary', '', 12, '2026-02-08 22:44:31', '2026-02-09 12:01:33'),
(12, 'Junior High', '', 13, '2026-02-08 22:55:02', '2026-02-08 23:31:36');

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

--
-- Table structure for table `houses`
--

CREATE TABLE `houses` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `houses`
--

INSERT INTO `houses` (`id`, `name`, `description`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 'Yellow', '', '2025-07-03 12:14:47', '2025-08-31 11:59:45', '2025-08-31 11:59:45'),
(2, 'Red', '', '2025-07-03 12:23:27', '2026-02-07 21:22:40', '2026-02-07 21:22:40'),
(3, 'Blue', '', '2025-07-03 12:23:42', '2026-02-07 21:22:45', '2026-02-07 21:22:45'),
(4, 'Green', '', '2025-07-03 12:23:54', '2026-02-07 21:22:51', '2026-02-07 21:22:51'),
(5, 'pink', '', '2025-07-03 12:24:05', '2025-07-03 12:24:24', '2025-07-03 12:24:24'),
(6, 'House 1', '', '2026-02-08 20:25:34', '2026-02-08 20:25:34', NULL),
(7, 'House 2', '', '2026-02-08 20:25:46', '2026-02-08 20:25:46', NULL),
(8, 'House 3', '', '2026-02-08 20:25:58', '2026-02-08 20:25:58', NULL),
(9, 'House 4', '', '2026-02-08 20:26:08', '2026-02-08 20:26:24', NULL);

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

--
-- Table structure for table `migrations`
--

CREATE TABLE `migrations` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `version` varchar(255) NOT NULL,
  `class` varchar(255) NOT NULL,
  `group` varchar(255) NOT NULL,
  `namespace` varchar(255) NOT NULL,
  `time` int(11) NOT NULL,
  `batch` int(11) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `migrations`
--

INSERT INTO `migrations` (`id`, `version`, `class`, `group`, `namespace`, `time`, `batch`) VALUES
(1, '2025-06-27-110000', 'App\\Database\\Migrations\\CreateRolesTable', 'default', 'App', 1751053594, 1),
(2, '2025-06-27-110010', 'App\\Database\\Migrations\\CreateUsersTable', 'default', 'App', 1751053594, 1),
(3, '2025-06-27-110020', 'App\\Database\\Migrations\\CreateAcademicYearsTable', 'default', 'App', 1751053594, 1),
(4, '2025-06-27-110030', 'App\\Database\\Migrations\\CreateTermsTable', 'default', 'App', 1751053594, 1),
(5, '2025-06-27-110040', 'App\\Database\\Migrations\\CreateDepartmentsTable', 'default', 'App', 1751053594, 1),
(6, '2025-06-27-110050', 'App\\Database\\Migrations\\CreateClassesTable', 'default', 'App', 1751053594, 1),
(7, '2025-06-27-110060', 'App\\Database\\Migrations\\CreateHousesTable', 'default', 'App', 1751053594, 1),
(8, '2025-06-27-110070', 'App\\Database\\Migrations\\CreateSubjectsTable', 'default', 'App', 1751053594, 1),
(9, '2025-06-27-110080', 'App\\Database\\Migrations\\CreateTeachersTable', 'default', 'App', 1751053594, 1),
(10, '2025-06-27-110090', 'App\\Database\\Migrations\\CreateParentsTable', 'default', 'App', 1751053595, 1),
(11, '2025-06-27-110100', 'App\\Database\\Migrations\\CreateStudentsTable', 'default', 'App', 1751053595, 1),
(12, '2025-06-27-110105', 'App\\Database\\Migrations\\CreateStudentParentsTable', 'default', 'App', 1751053595, 1),
(13, '2025-06-27-110110', 'App\\Database\\Migrations\\CreateEnrollmentsTable', 'default', 'App', 1751053595, 1),
(14, '2025-06-27-110120', 'App\\Database\\Migrations\\CreateClassSubjectsTable', 'default', 'App', 1751053595, 1),
(15, '2025-06-27-110130', 'App\\Database\\Migrations\\CreateTeacherAssignmentsTable', 'default', 'App', 1751053595, 1),
(16, '2025-06-27-110140', 'App\\Database\\Migrations\\CreateGradingSystemsTable', 'default', 'App', 1751053595, 1),
(17, '2025-06-27-110150', 'App\\Database\\Migrations\\CreateGradingBandsTable', 'default', 'App', 1751053595, 1),
(18, '2025-06-27-110160', 'App\\Database\\Migrations\\CreateScoreConversionsTable', 'default', 'App', 1751053595, 1),
(19, '2025-06-27-110170', 'App\\Database\\Migrations\\CreateFeesCategoriesTable', 'default', 'App', 1751053595, 1),
(20, '2025-06-27-110180', 'App\\Database\\Migrations\\CreateFeesStructuresTable', 'default', 'App', 1751053595, 1),
(21, '2025-06-27-110190', 'App\\Database\\Migrations\\CreateFeePaymentsTable', 'default', 'App', 1751053595, 1),
(22, '2025-06-27-110200', 'App\\Database\\Migrations\\CreateAttendanceRecordsTable', 'default', 'App', 1751116390, 2),
(23, '2025-06-27-110210', 'App\\Database\\Migrations\\CreateResultsTable', 'default', 'App', 1751116390, 2),
(24, '2025-06-27-110220', 'App\\Database\\Migrations\\CreateResultCommentsTable', 'default', 'App', 1751116390, 2),
(25, '2025-06-27-110230', 'App\\Database\\Migrations\\CreateSettingsTable', 'default', 'App', 1751116390, 2),
(26, '2025-06-27-110240', 'App\\Database\\Migrations\\CreateActivityLogsTable', 'default', 'App', 1751116390, 2),
(27, '2025-06-28-132243', 'App\\Database\\Migrations\\CreatePromotionRecordsTable', 'default', 'App', 1751117146, 3),
(28, '2025-06-28-132436', 'App\\Database\\Migrations\\CreateTimetablesTable', 'default', 'App', 1751117146, 3),
(29, '2025-06-28-161914', 'App\\Database\\Migrations\\CreateUserRolesTable', 'default', 'App', 1751127616, 4),
(30, '2025-06-28-110000', 'App\\Database\\Migrations\\CreateRolesTable', 'default', 'App', 1751131723, 5),
(31, '2025-06-28-110010', 'App\\Database\\Migrations\\CreateUsersTable', 'default', 'App', 1751131723, 5),
(32, '2025-06-28-110015', 'App\\Database\\Migrations\\CreateUserRolesTable', 'default', 'App', 1751131723, 5),
(33, '2025-06-29-110000', 'App\\Database\\Migrations\\CreateRolesTable', 'default', 'App', 1751199231, 6),
(34, '2025-06-29-110010', 'App\\Database\\Migrations\\CreateUsersTable', 'default', 'App', 1751199231, 6),
(35, '2025-06-29-110015', 'App\\Database\\Migrations\\CreateUserRolesTable', 'default', 'App', 1751199231, 6),
(36, '2025-07-04-215007', 'App\\Database\\Migrations\\AlterTeachersTable', 'default', 'App', 1751666035, 7),
(37, '2025-07-05-100838', 'App\\Database\\Migrations\\CreateTeacherAssignmentClassSubject', 'default', 'App', 1751710271, 8),
(38, '2025-07-05-115753', 'App\\Database\\Migrations\\RemoveClassAndSubjectFromTeacherAssignments', 'default', 'App', 1751716791, 9),
(39, '2025-07-06-125106', 'App\\Database\\Migrations\\AddStatusToEnrollments', 'default', 'App', 1752773040, 10),
(40, '2025-07-17-134153', 'App\\Database\\Migrations\\CreateAssessmentModules', 'default', 'App', 1752773471, 11),
(41, '2025-07-17-100000', 'App\\Database\\Migrations\\CreateAssessmentModules', 'default', 'App', 1752776053, 12),
(42, '2025-07-17-100100', 'App\\Database\\Migrations\\CreateAssessmentSections', 'default', 'App', 1752776053, 12),
(43, '2025-07-17-100200', 'App\\Database\\Migrations\\CreateAssessmentComponents', 'default', 'App', 1752776053, 12),
(44, '2025-07-20-112031', 'App\\Database\\Migrations\\CreateExamSchedulesTable', 'default', 'App', 1753010576, 13),
(45, '2025-07-22-110010', 'App\\Database\\Migrations\\CreateResultsTable', 'default', 'App', 1753197229, 14),
(46, '2025-07-22-152020', 'App\\Database\\Migrations\\CreateResultsTable', 'default', 'App', 1753197711, 15),
(47, '2025-07-22-162020', 'App\\Database\\Migrations\\CreateResultsTable', 'default', 'App', 1753222281, 16),
(48, '2026-02-11-180906', 'App\\Database\\Migrations\\AddFeeManagementColumns', 'default', 'App', 1770833431, 17);

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

--
-- Table structure for table `parents`
--

CREATE TABLE `parents` (
  `id` int(9) UNSIGNED NOT NULL,
  `surname` varchar(100) NOT NULL,
  `first_name` varchar(100) NOT NULL,
  `other_name` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `phone` varchar(20) NOT NULL,
  `password` varchar(255) NOT NULL,
  `address` varchar(255) DEFAULT NULL,
  `occupation` varchar(100) DEFAULT NULL,
  `photo` varchar(255) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `parents`
--

INSERT INTO `parents` (`id`, `surname`, `first_name`, `other_name`, `email`, `phone`, `password`, `address`, `occupation`, `photo`, `created_at`, `updated_at`) VALUES
(3, '', '', NULL, '', '', '', '', '', '1752350396_844fdc944c3152469276.jpg', '2025-07-12 19:59:56', '2025-07-12 19:59:56'),
(4, 'GAHA', 'OPEEY', '', '', '', '', '', '', '1752350425_05076c6e5c80ccf87b51.jpg', '2025-07-12 20:00:25', '2025-07-12 20:00:25'),
(5, 'Mad. Dogbey', 'Mercy', 'Amina', 'paul@gmail.com', '0249710432', '', 'Box 33, Tsito', 'Nurse', '68878a2469c3a.jpg', '2025-07-13 12:24:27', '2025-07-16 13:04:04'),
(6, '4HH', 'GFHF', 'FBBDF', '', '8080', '', '', '', NULL, '2025-07-13 12:41:59', '2025-07-13 12:41:59'),
(7, '877', '777', '', '', '888', '', '', '', NULL, '2025-07-13 13:34:39', '2025-07-13 13:34:39'),
(8, 'fff', 'rtgt', '', '', '555', '', '', '', '6875031891405.jpg', '2025-07-13 13:38:33', '2025-07-14 13:16:08'),
(9, '', '', '', '', '77777', '', '', '', NULL, '2025-07-13 19:10:26', '2025-07-13 19:21:13'),
(10, '', '', '', '', '55', '', '', '', '68750545f3f3a.jpg', '2025-07-13 20:17:42', '2025-07-14 13:29:01'),
(11, '', '', '', '', '0249755593', '', '', '', '68a8e6ca2d2ad.jpg', '2025-07-15 21:41:24', '2025-07-16 09:36:12'),
(12, '', '', '', '', '0249755593', '', '', '', NULL, '2025-07-15 21:41:24', '2025-07-15 21:41:24'),
(13, '', '', '', '', '0249111111', '', '', '', NULL, '2025-07-16 11:08:20', '2025-07-16 11:08:20'),
(14, '', '', '', '', '0249999999', '$2y$10$xhUzg1aP/Q0yH9t03uHu8OFRW82HWZ/xsckm2k7Iq4JBT/oBQh0m.', '', '', NULL, '2025-07-16 13:15:21', '2025-07-16 13:15:21'),
(15, '', '', '', '', '055', '$2y$10$vgQWI9VA9UTM7K2u26XWL.IonhOd2akg5HoT75S7TaEo64t64NH8m', '', '', NULL, '2025-07-16 16:14:13', '2025-07-16 16:14:13'),
(16, '', '', '', '', '0555555555', '$2y$10$VOwNaTv4cI7NBNqNcbGv2.WlIZITXUO6G3KbbwYGr3UG/Q4mOk0su', '', '', NULL, '2025-07-16 16:15:09', '2025-07-16 16:15:09'),
(17, '', '', '', '', '0200000000', '$2y$10$AQmBpImCi3YhH.TcWWUHSeWOQTEHdln.BBr6z4bVhGYyAoKRaMJ9O', '', '', NULL, NULL, NULL),
(18, '', '', '', '', '049755593', '$2y$10$PS2ZGmsFzAmxRVRoBgRmr.OIJ709oSSa2NuJbyxdF90POFQx1krw.', '', '', NULL, NULL, NULL),
(19, '', '', '', '', '0249710433', '$2y$10$8fl/9a.7PxnTbz.PVFZmV.aR8HRlJEKwEiOTri3YFqN0AaBAMZuoe', '', '', NULL, NULL, NULL),
(20, '', '', '', '', '0300', '$2y$10$X.RYvJWEM0WdZt6hcgBKee1eVuul6DkF.Hi1bBW6jhuZHjwsCzEXe', '', '', NULL, NULL, NULL),
(21, '', '', '', '', '02497555934', '$2y$10$xw6DouYLzyp4YDUnUXoT2OJipdiCWzk8usmBbjtWojWhpSwZjsAoq', '', '', NULL, NULL, NULL),
(22, '', '', '', '', '9999', '$2y$10$K9f.SuCuJMauCBgugxly0.dtMOaiEvZIheH/jXevyjfH9K/DtMjNS', '', '', NULL, NULL, NULL),
(23, '', '', '', '', '76', '$2y$10$4yDvkS0Yb6VEtxin7FPcMuA3fRWUSoUIqeduLwakWZzZ4DvTkYbma', '', '', NULL, NULL, NULL),
(24, '', '', '', '', '9654', '$2y$10$IGo07NUOA18IZK58tWsH5eR09vc0E3rNBgGCBo9VRJ4TcBkuWJylm', '', '', NULL, NULL, NULL),
(25, '', '', '', '', '5453', '$2y$10$.XcxxTMtXEoipOe8Q8UyJ.g.1h5Wh3rYjh9cehmohvPyYblGFs0Am', '', '', NULL, NULL, NULL),
(26, 'pot', 'pot2', 'pot3', '', '111111111', '$2y$10$SsWRh5aZQJzc33SIzGvMWeoG2ZrP4vzbKCH4q06FEIXWFSCGIPVH2', 'ad', 'op', NULL, NULL, NULL);

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

--
-- Table structure for table `payments`
--

CREATE TABLE `payments` (
  `id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `fee_entry_id` int(10) UNSIGNED NOT NULL,
  `amount_paid` decimal(10,2) NOT NULL DEFAULT 0.00,
  `payment_date` datetime NOT NULL,
  `payment_method` varchar(50) NOT NULL DEFAULT 'cash',
  `reference` varchar(100) NOT NULL,
  `paystack_reference` varchar(100) DEFAULT NULL,
  `transaction_id` varchar(100) DEFAULT NULL,
  `status` enum('pending','success','failed','refunded') NOT NULL DEFAULT 'pending',
  `notes` text DEFAULT NULL,
  `recorded_by` int(11) DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `payments`
--

INSERT INTO `payments` (`id`, `student_id`, `fee_entry_id`, `amount_paid`, `payment_date`, `payment_method`, `reference`, `paystack_reference`, `transaction_id`, `status`, `notes`, `recorded_by`, `created_at`, `updated_at`) VALUES
(1, 9, 42, 712.00, '2026-02-13 14:49:54', 'cash', '', NULL, NULL, 'success', '', 26, '2026-02-13 14:49:54', '2026-02-13 14:49:54'),
(6, 9, 42, 100.00, '2026-02-13 18:21:14', 'cash', 'RCT-20260213-B9AA71B9', NULL, NULL, 'success', '', 26, '2026-02-13 18:21:14', '2026-02-13 18:21:14'),
(7, 9, 42, 200.00, '2026-02-13 18:22:03', 'cash', 'RCT-20260213-BCB9E404', NULL, NULL, 'success', '', 26, '2026-02-13 18:22:03', '2026-02-13 18:22:03'),
(8, 9, 42, 150.00, '2026-02-13 18:25:37', 'mobile_money', 'RCT-20260213-CA1081BC', NULL, NULL, 'success', '', 26, '2026-02-13 18:25:37', '2026-02-13 18:25:37'),
(9, 9, 42, 150.00, '2026-02-13 18:26:56', 'mobile_money', 'RCT-20260213-CF0D7DBC', NULL, NULL, 'success', '', 26, '2026-02-13 18:26:56', '2026-02-13 18:26:56'),
(10, 9, 42, 20.00, '2026-02-13 18:27:27', 'mobile_money', 'RCT-20260213-D0F928B8', NULL, NULL, 'success', '', 26, '2026-02-13 18:27:27', '2026-02-13 18:27:27'),
(11, 9, 42, 55.00, '2026-02-13 18:29:46', 'cash', 'RCT-20260213-D9ACF4E5', NULL, NULL, 'success', '', 26, '2026-02-13 18:29:46', '2026-02-13 18:29:46'),
(12, 9, 42, 22.00, '2026-02-13 18:35:07', 'cash', 'RCT-20260213-EDB9841D', NULL, NULL, 'success', '', 26, '2026-02-13 18:35:07', '2026-02-13 18:35:07'),
(13, 9, 42, 33.00, '2026-02-13 18:40:48', 'cash', 'RCT-20260213-030B002E', NULL, NULL, 'success', '', 26, '2026-02-13 18:40:48', '2026-02-13 18:40:48'),
(14, 9, 42, 34.00, '2026-02-13 18:48:43', 'cash', 'RCT-20260213-20B5A0E2', NULL, NULL, 'success', '', 26, '2026-02-13 18:48:43', '2026-02-13 18:48:43'),
(15, 9, 42, 11.00, '2026-02-13 19:01:17', 'bank_transfer', 'RCT-20260213-4FDC319F', NULL, NULL, 'success', '', 26, '2026-02-13 19:01:17', '2026-02-13 19:01:17'),
(16, 9, 42, 12.00, '2026-02-13 19:08:06', 'card', 'RCT-20260213-6961BDBE', NULL, NULL, 'success', '', 26, '2026-02-13 19:08:06', '2026-02-13 19:08:06'),
(17, 9, 42, 23.00, '2026-02-13 19:08:59', 'card', 'RCT-20260213-6CBC08D3', NULL, NULL, 'success', '', 26, '2026-02-13 19:08:59', '2026-02-13 19:08:59'),
(18, 9, 42, 12.00, '2026-02-13 19:09:37', 'bank_transfer', 'RCT-20260213-6F12368B', NULL, NULL, 'success', '', 26, '2026-02-13 19:09:37', '2026-02-13 19:09:37'),
(19, 9, 42, 11.00, '2026-02-13 19:10:47', 'cash', 'RCT-20260213-7370067E', NULL, NULL, 'success', '', 26, '2026-02-13 19:10:47', '2026-02-13 19:10:47'),
(20, 9, 42, 2.00, '2026-02-13 19:11:51', 'cash', 'RCT-20260213-7772DDB7', NULL, NULL, 'success', '', 26, '2026-02-13 19:11:51', '2026-02-13 19:11:51'),
(23, 9, 42, 50.00, '2026-02-13 23:01:07', 'cash', 'RCT-20260213-D337B794', NULL, NULL, 'success', '', 26, '2026-02-13 23:01:07', '2026-02-13 23:01:07'),
(24, 12, 26, 2555.00, '2026-02-13 23:25:38', 'cash', 'RCT-20260213-2F2186C1', NULL, NULL, 'success', '', 26, '2026-02-13 23:25:38', '2026-02-13 23:25:38'),
(26, 9, 42, 111.00, '2026-02-13 23:47:35', 'card', 'RCT-20260213-817E507D', NULL, NULL, 'success', '', 26, '2026-02-13 23:47:35', '2026-02-13 23:47:35'),
(27, 9, 42, 165.00, '2026-02-13 09:34:38', 'card', 'RCT-20260213-9A0E65BB', NULL, NULL, 'success', 'Part payment for this term fee', 26, '2026-02-13 23:54:08', '2026-02-14 09:34:38'),
(28, 12, 26, 3000.00, '2026-02-14 18:49:59', 'cash', 'RCT-20260214-3D7CCE9E', NULL, NULL, 'success', '', 26, '2026-02-14 18:49:59', '2026-02-14 18:49:59'),
(29, 9, 44, 3000.00, '2026-02-14 22:03:26', 'cash', 'RCT-20260214-12E68DC1', NULL, NULL, 'success', '', 26, '2026-02-14 22:03:26', '2026-02-14 22:03:26'),
(30, 9, 44, 600.00, '2026-02-22 11:19:02', 'cash', 'RCT-20260222-6269460F', NULL, NULL, 'success', '', 26, '2026-02-22 11:19:02', '2026-02-22 11:19:02'),
(31, 10, 45, 50.00, '2026-02-22 13:20:24', 'mobile_money', 'RCT-20260222-2985A126', NULL, NULL, 'success', '', 26, '2026-02-22 13:20:24', '2026-02-22 13:20:24'),
(32, 10, 45, 70.00, '2026-02-22 13:33:47', 'bank_transfer', 'RCT-20260222-5BBF31E3', NULL, NULL, 'success', '', 26, '2026-02-22 13:33:47', '2026-02-22 13:33:47'),
(33, 9, 46, 45.00, '2026-02-22 13:52:27', 'cash', 'RCT-20260222-A1B2225A', NULL, NULL, 'success', '', 26, '2026-02-22 13:52:27', '2026-02-22 13:52:27'),
(34, 9, 46, 32.00, '2026-02-22 13:53:11', 'mobile_money', 'RCT-20260222-A47D3227', NULL, NULL, 'success', '', 26, '2026-02-22 13:53:11', '2026-02-22 13:53:11'),
(35, 9, 48, 125.00, '2026-02-22 14:17:20', 'cash', 'RCT-20260222-FF02B970', NULL, NULL, 'success', '', 26, '2026-02-22 14:17:20', '2026-02-22 14:17:20'),
(36, 9, 48, 90.00, '2026-02-22 14:18:38', 'cash', 'RCT-20260222-03E9AB6A', NULL, NULL, 'success', '', 26, '2026-02-22 14:18:38', '2026-02-22 14:18:38'),
(37, 9, 50, 603.00, '2026-02-22 06:49:21', 'mobile_money', 'RCT-20260222-A6BCB888', NULL, NULL, 'success', 'Part pay', 26, '2026-02-22 16:10:19', '2026-02-23 06:49:21'),
(38, 9, 50, 480.00, '2026-02-22 06:47:56', 'mobile_money', 'RCT-20260222-D7E4F548', NULL, NULL, 'success', 'Full payment', 26, '2026-02-22 23:13:02', '2026-02-23 06:47:56'),
(39, 11, 27, 500.00, '2026-02-23 07:04:33', 'card', 'RCT-20260223-C018814D', NULL, NULL, 'success', '', 26, '2026-02-23 07:04:33', '2026-02-23 07:04:33'),
(40, 11, 27, 12.00, '2026-02-23 07:04:57', 'bank_transfer', 'RCT-20260223-C1940A33', NULL, NULL, 'success', '', 26, '2026-02-23 07:04:57', '2026-02-23 07:04:57'),
(41, 9, 50, 5.00, '2026-02-23 12:25:29', 'card', 'RCT-20260223-73986CE8', NULL, NULL, 'success', '', 26, '2026-02-23 12:25:29', '2026-02-23 12:25:29'),
(42, 9, 50, 200.00, '2026-02-23 12:33:51', 'cash', 'RCT-20260223-92FA3D44', NULL, NULL, 'success', '', 26, '2026-02-23 12:33:51', '2026-02-23 12:33:51'),
(43, 9, 50, 300.00, '2026-02-23 12:39:29', 'mobile_money', 'RCT-20260223-A8168270', NULL, NULL, 'success', '', 26, '2026-02-23 12:39:29', '2026-02-23 12:39:29'),
(44, 12, 26, 600.00, '2026-02-23 13:23:14', 'cash', 'RCT-20260223-4C244573', NULL, NULL, 'success', '', 26, '2026-02-23 13:23:14', '2026-02-23 13:23:14'),
(45, 9, 50, 1000.00, '2026-02-23 14:33:48', 'cheque', 'RCT-20260223-54C25D84', NULL, NULL, 'success', '', 26, '2026-02-23 14:33:48', '2026-02-23 14:33:48'),
(46, 9, 50, 900.00, '2026-02-23 14:51:32', 'mobile_money', 'RCT-20260223-97419084', NULL, NULL, 'success', '', 26, '2026-02-23 14:51:32', '2026-02-23 14:51:32'),
(47, 9, 52, 1.00, '2026-02-23 20:08:42', 'mobile_money', 'RCT-20260223-2EB81A04', NULL, NULL, 'success', 'Part pay', 26, '2026-02-23 20:04:59', '2026-02-23 20:08:42'),
(48, 9, 52, 700.00, '2026-02-23 20:07:58', 'cash', 'RCT-20260223-31A724B8', NULL, NULL, 'success', 'Part pay', 26, '2026-02-23 20:05:46', '2026-02-23 20:07:58'),
(49, 9, 52, 5139.00, '2026-02-23 20:47:41', 'cash', 'RCT-20260223-CED0936E', NULL, NULL, 'success', '', 26, '2026-02-23 20:47:41', '2026-02-23 20:47:41'),
(50, 9, 52, 100.00, '2026-02-23 20:48:17', 'mobile_money', 'RCT-20260223-D113DC1C', NULL, NULL, 'success', '', 26, '2026-02-23 20:48:17', '2026-02-23 20:48:17'),
(51, 10, 53, 60.00, '2026-02-23 23:31:23', 'mobile_money', 'RCT-20260223-34BC2840', NULL, NULL, 'success', 'Part payment for this term fee', 26, '2026-02-23 23:31:23', '2026-02-23 23:31:23'),
(53, 12, 54, 15.00, '2026-02-24 12:16:22', 'mobile_money', 'RCT-20260224-69653F7D', NULL, NULL, 'success', 'Library', 26, '2026-02-24 12:16:22', '2026-02-24 12:16:22'),
(54, 10, 53, 50.00, '2026-02-24 17:18:36', 'cash', 'RCT-20260224-D6C3FA6C', NULL, NULL, 'success', 'Part pay og library', 26, '2026-02-24 17:18:36', '2026-02-24 17:18:36'),
(55, 10, 53, 61.50, '2026-02-24 17:19:51', 'mobile_money', 'RCT-20260224-DB799031', NULL, NULL, 'success', 'ghfh', 26, '2026-02-24 17:19:51', '2026-02-24 17:19:51'),
(56, 10, 53, 56.00, '2026-02-24 21:29:41', 'cash', 'RCT-20260224-84555489', NULL, NULL, 'success', 'P.T.A Dues', 26, '2026-02-24 21:29:41', '2026-02-24 21:29:41'),
(57, 9, 56, 1000.00, '2026-02-24 21:41:28', 'mobile_money', 'RCT-20260224-B085F467', NULL, NULL, 'success', 'Part payment for this term fee', 26, '2026-02-24 21:41:28', '2026-02-24 21:41:28'),
(58, 9, 56, 500.00, '2026-02-24 21:42:01', 'cash', 'RCT-20260224-B296BA98', NULL, NULL, 'success', 'Part payment for this term fee', 26, '2026-02-24 21:42:01', '2026-02-24 21:42:01'),
(59, 10, 53, 2.00, '2026-02-24 23:22:48', 'card', 'RCT-20260224-2C80514D', NULL, NULL, 'success', 'Part pay', 26, '2026-02-24 23:22:48', '2026-02-24 23:22:48'),
(60, 9, 70, 100.00, '2026-02-25 00:29:50', 'mobile_money', 'RCT-20260225-27EE4CFA', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 00:29:50', '2026-02-25 00:29:50'),
(61, 9, 70, 70.00, '2026-02-25 00:30:12', 'cash', 'RCT-20260225-294D7887', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 00:30:12', '2026-02-25 00:30:12'),
(62, 9, 86, 1000.00, '2026-02-25 10:25:33', 'mobile_money', 'RCT-20260225-E1D1B357', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 10:25:33', '2026-02-25 10:25:33'),
(63, 9, 86, 200.00, '2026-02-25 10:25:55', 'cash', 'RCT-20260225-E33E35EF', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 10:25:55', '2026-02-25 10:25:55'),
(64, 10, 87, 2120.00, '2026-02-25 12:59:03', 'cash', 'RCT-20260225-E6DA6179', NULL, NULL, 'success', 'Full payment', 26, '2026-02-25 10:26:53', '2026-02-25 12:59:03'),
(65, 9, 86, 5.00, '2026-02-25 10:48:10', 'cash', 'RCT-20260225-36A472E9', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 10:48:10', '2026-02-25 10:48:10'),
(66, 10, 63, 1000.00, '2026-02-25 10:53:57', 'cash', 'RCT-20260225-4C5BEA7B', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 10:53:57', '2026-02-25 10:53:57'),
(67, 10, 101, 900.00, '2026-02-25 12:57:44', 'cash', 'RCT-20260225-1C83CFC6', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 12:57:44', '2026-02-25 12:57:44'),
(68, 9, 100, 800.00, '2026-02-25 13:06:49', 'cash', 'RCT-20260225-380DF390', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 13:05:04', '2026-02-25 13:06:49'),
(69, 9, 100, 75.00, '2026-02-25 13:19:59', 'mobile_money', 'RCT-20260225-6FF14D42', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 13:19:59', '2026-02-25 13:19:59');

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

--
-- Table structure for table `payment_reminders`
--

CREATE TABLE `payment_reminders` (
  `id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `fee_entry_id` int(10) UNSIGNED NOT NULL,
  `reminder_type` enum('email','sms') NOT NULL DEFAULT 'sms',
  `scheduled_date` date NOT NULL,
  `sent_date` date DEFAULT NULL,
  `status` enum('pending','sent','failed') NOT NULL DEFAULT 'pending',
  `message` text DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `promotion_records`
--

CREATE TABLE `promotion_records` (
  `id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `new_student_id` int(11) DEFAULT NULL,
  `from_class_id` int(10) UNSIGNED NOT NULL,
  `to_class_id` int(10) UNSIGNED NOT NULL,
  `promotion_date` date NOT NULL,
  `promoted_by` int(10) UNSIGNED DEFAULT NULL,
  `remarks` text DEFAULT NULL,
  `is_current` tinyint(1) DEFAULT 0,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `results`
--

CREATE TABLE `results` (
  `id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `class_id` int(10) UNSIGNED NOT NULL,
  `subject_id` int(10) UNSIGNED NOT NULL,
  `academic_year_id` int(10) UNSIGNED NOT NULL,
  `term_id` int(10) UNSIGNED NOT NULL,
  `class_score` decimal(4,1) DEFAULT NULL,
  `exam_score` decimal(4,1) DEFAULT NULL,
  `converted_class_score` decimal(4,1) DEFAULT NULL,
  `converted_exam_score` decimal(4,1) DEFAULT NULL,
  `total_score` decimal(4,1) DEFAULT NULL,
  `grade` varchar(10) DEFAULT NULL,
  `remark` varchar(255) DEFAULT NULL,
  `position` int(11) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `results`
--

INSERT INTO `results` (`id`, `student_id`, `class_id`, `subject_id`, `academic_year_id`, `term_id`, `class_score`, `exam_score`, `converted_class_score`, `converted_exam_score`, `total_score`, `grade`, `remark`, `position`, `created_at`, `updated_at`) VALUES
(1, 9, 27, 31, 11, 9, 80.0, 80.0, 32.0, 48.0, 80.0, 'A', 'Excel', 2, '2026-02-08 22:59:42', '2026-02-10 14:16:02'),
(2, 10, 27, 31, 11, 9, 90.0, 90.0, 36.0, 54.0, 90.0, 'A', 'Excel', 1, '2026-02-08 22:59:42', '2026-02-10 14:16:02'),
(3, 9, 27, 32, 11, 9, 70.0, 70.0, 28.0, 42.0, 70.0, 'B', 'Very Good', 2, '2026-02-08 23:01:18', '2026-02-08 23:01:18'),
(4, 10, 27, 32, 11, 9, 60.0, 90.0, 24.0, 54.0, 78.0, 'B', 'Very Good', 1, '2026-02-08 23:01:18', '2026-02-08 23:01:18'),
(5, 9, 27, 33, 11, 9, 90.0, 90.0, 36.0, 54.0, 90.0, 'A', 'Excelllent', 1, '2026-02-08 23:02:02', '2026-02-08 23:02:02'),
(6, 10, 27, 33, 11, 9, 80.0, 70.0, 32.0, 42.0, 74.0, 'B', 'Very Good', 2, '2026-02-08 23:02:02', '2026-02-08 23:02:02'),
(7, 9, 27, 34, 11, 9, 90.0, 90.0, 36.0, 54.0, 90.0, 'A', 'Excelllent', 2, '2026-02-08 23:03:12', '2026-02-08 23:03:12'),
(8, 10, 27, 34, 11, 9, 90.0, 100.0, 36.0, 60.0, 96.0, 'A', 'Excelllent', 1, '2026-02-08 23:03:12', '2026-02-08 23:03:12'),
(9, 12, 33, 35, 11, 9, 90.0, 90.0, 27.0, 63.0, 90.0, '1', 'Highest', 1, '2026-02-08 23:04:46', '2026-02-08 23:04:46'),
(10, 11, 33, 35, 11, 9, 80.0, 70.0, 24.0, 49.0, 73.0, '3', 'High', 2, '2026-02-08 23:04:46', '2026-02-08 23:04:46'),
(11, 12, 33, 36, 11, 9, 90.0, 90.0, 27.0, 63.0, 90.0, '1', 'Highest', 1, '2026-02-08 23:13:22', '2026-02-08 23:13:22'),
(12, 11, 33, 36, 11, 9, 100.0, 80.0, 30.0, 56.0, 86.0, '2', 'Higher', 2, '2026-02-08 23:13:22', '2026-02-08 23:13:22');

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

--
-- Table structure for table `roles`
--

CREATE TABLE `roles` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(50) NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `roles`
--

INSERT INTO `roles` (`id`, `name`, `created_at`, `updated_at`) VALUES
(1, 'admin', NULL, NULL),
(2, 'teacher', NULL, NULL),
(3, 'student', NULL, NULL),
(4, 'parent', NULL, NULL),
(5, 'accountant', NULL, NULL);

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

--
-- Table structure for table `score_conversions`
--

CREATE TABLE `score_conversions` (
  `id` int(9) UNSIGNED NOT NULL,
  `department_id` int(9) UNSIGNED DEFAULT NULL,
  `class_score` decimal(4,1) DEFAULT NULL,
  `exam_score` decimal(4,1) DEFAULT NULL,
  `description` varchar(150) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `score_conversions`
--

INSERT INTO `score_conversions` (`id`, `department_id`, `class_score`, `exam_score`, `description`, `created_at`, `updated_at`) VALUES
(19, 12, 40.0, 60.0, NULL, '2026-02-08 22:56:38', '2026-02-08 22:58:16'),
(20, 13, 30.0, 70.0, NULL, '2026-02-08 22:57:06', '2026-02-08 22:57:21');

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

--
-- Table structure for table `settings`
--

CREATE TABLE `settings` (
  `id` int(9) UNSIGNED NOT NULL,
  `school_name` varchar(255) DEFAULT NULL,
  `school_email` varchar(100) DEFAULT NULL,
  `school_phone` varchar(50) DEFAULT NULL,
  `school_address` varchar(255) DEFAULT NULL,
  `motto` varchar(255) DEFAULT NULL,
  `logo` varchar(255) DEFAULT NULL,
  `signature_principal` varchar(255) DEFAULT NULL,
  `signature_accountant` varchar(255) DEFAULT NULL,
  `current_academic_year_id` int(9) UNSIGNED DEFAULT NULL,
  `current_term_id` int(9) UNSIGNED DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `settings`
--

INSERT INTO `settings` (`id`, `school_name`, `school_email`, `school_phone`, `school_address`, `motto`, `logo`, `signature_principal`, `signature_accountant`, `current_academic_year_id`, `current_term_id`, `created_at`, `updated_at`) VALUES
(5, 'Proswoan International Academy', 'proswoanacademy@gmail.com', '(+233) 0592409087', 'Post Office Box 56, La-Accra, Opposite Ariel View Hotel De Mark', 'Excellence is Our Hall Mark', '1770584402_5faa95af53900b681da7.png', '1770584402_13c364c90a97ed288e9e.jpg', '1770584402_89c5d3267300fcd9264e.jpg', 11, 10, NULL, NULL);

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

--
-- Table structure for table `sms_logs`
--

CREATE TABLE `sms_logs` (
  `id` int(10) UNSIGNED NOT NULL,
  `recipient` varchar(15) NOT NULL,
  `message` text NOT NULL,
  `type` varchar(50) NOT NULL DEFAULT 'payment_reminder',
  `reference` varchar(100) DEFAULT NULL,
  `status` enum('pending','sent','failed') NOT NULL DEFAULT 'pending',
  `response` text DEFAULT NULL,
  `sent_by` int(11) DEFAULT NULL,
  `sent_at` datetime DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `students`
--

CREATE TABLE `students` (
  `id` int(9) UNSIGNED NOT NULL,
  `surname` varchar(100) NOT NULL,
  `first_name` varchar(100) NOT NULL,
  `other_names` varchar(100) DEFAULT NULL,
  `gender` enum('Male','Female') NOT NULL,
  `date_of_birth` date DEFAULT NULL,
  `nationality` varchar(100) DEFAULT NULL,
  `photo` varchar(255) DEFAULT NULL,
  `academic_year_id` int(11) DEFAULT NULL,
  `previous_academic_year_id` int(11) DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT 1,
  `term_id` int(11) DEFAULT NULL,
  `department_id` int(9) UNSIGNED DEFAULT NULL,
  `class_id` int(9) UNSIGNED DEFAULT NULL,
  `previous_class_id` int(11) DEFAULT NULL,
  `house_id` int(9) UNSIGNED DEFAULT NULL,
  `admission_number` varchar(50) NOT NULL,
  `admission_date` date DEFAULT NULL,
  `religion` varchar(50) DEFAULT NULL,
  `previous_school` varchar(150) DEFAULT NULL,
  `disability` varchar(150) DEFAULT NULL,
  `parent_relationship` varchar(20) DEFAULT NULL,
  `parent_phone` varchar(20) DEFAULT NULL,
  `parent_email` varchar(100) DEFAULT NULL,
  `parent_full_name` varchar(255) DEFAULT NULL,
  `parent_address` varchar(255) DEFAULT NULL,
  `parent_occupation` varchar(100) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `students`
--

INSERT INTO `students` (`id`, `surname`, `first_name`, `other_names`, `gender`, `date_of_birth`, `nationality`, `photo`, `academic_year_id`, `previous_academic_year_id`, `is_active`, `term_id`, `department_id`, `class_id`, `previous_class_id`, `house_id`, `admission_number`, `admission_date`, `religion`, `previous_school`, `disability`, `parent_relationship`, `parent_phone`, `parent_email`, `parent_full_name`, `parent_address`, `parent_occupation`, `created_at`, `updated_at`, `deleted_at`) VALUES
(9, 'AGBENYUI', 'GIDEON', NULL, 'Male', '2016-06-05', 'GHANAIAN', '69890e4876542.jpg', NULL, NULL, 1, NULL, 12, 27, NULL, 6, 'AD/PRM001', '2026-02-08', 'CHRISTIAN', 'TEMA BASIC SCHOOL', 'NONE', 'Father', '0249710432', 'proscetech@gmail.com', 'MR. AGBENYUI MIKE', 'VX-8945-2394', 'PHARMARCIST', NULL, NULL, NULL),
(10, 'FRIMPONG', 'DORIS', NULL, 'Female', NULL, '', '69890e84e4045.jpg', NULL, NULL, 1, NULL, 12, 27, NULL, NULL, 'ADM-P0002', '2026-02-08', '', '', '', '', '0249755593', '', 'Mad. Fafa', '', '', NULL, NULL, NULL),
(11, 'GANYO', 'KWAME', NULL, 'Male', NULL, '', '69890ec723667.jpg', NULL, NULL, 1, NULL, 13, 33, NULL, NULL, 'Adm44', '2026-02-08', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL),
(12, 'DEGAH', 'HARRY', NULL, 'Male', NULL, '', '69890f05e0988.jpg', NULL, NULL, 1, NULL, 13, 33, NULL, NULL, 'ADM-886', '2026-02-08', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL),
(13, 'HADOR', 'MAWUSI', NULL, 'Female', NULL, '', '698b5af85fc63.jpg', NULL, NULL, 1, NULL, 13, 35, NULL, NULL, 'ADM-P0005', '2026-02-10', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL),
(14, 'JOE-GHARTEY', 'DAVIS', NULL, 'Male', NULL, '', '698b5b31a2f94.jpg', NULL, NULL, 1, NULL, 13, 37, NULL, NULL, 'ADM-P0006', '2026-02-10', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL);

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

--
-- Table structure for table `student_fee_options`
--

CREATE TABLE `student_fee_options` (
  `id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `fees_category_id` int(10) UNSIGNED NOT NULL,
  `academic_year_id` int(10) UNSIGNED NOT NULL,
  `term_id` int(10) UNSIGNED NOT NULL,
  `class_id` int(10) UNSIGNED NOT NULL,
  `assigned_by` int(10) UNSIGNED DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `student_parents`
--

CREATE TABLE `student_parents` (
  `id` int(10) UNSIGNED NOT NULL,
  `student_id` int(10) UNSIGNED NOT NULL,
  `parent_id` int(10) UNSIGNED NOT NULL,
  `relationship` enum('Father','Mother','Guardian') NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `subjects`
--

CREATE TABLE `subjects` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `code` varchar(20) DEFAULT NULL,
  `department_id` int(10) UNSIGNED NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `subjects`
--

INSERT INTO `subjects` (`id`, `name`, `code`, `department_id`, `created_at`, `updated_at`) VALUES
(28, 'matb', '79', 5, '2025-08-31 12:05:52', '2025-08-31 12:05:52'),
(29, 'Numeracy', 'Num-001', 11, '2026-02-08 20:29:05', '2026-02-08 20:32:55'),
(30, 'Literacy', 'Lit-001', 11, '2026-02-08 20:29:29', '2026-02-08 20:33:14'),
(31, 'English Language', 'Eng-001', 12, '2026-02-08 20:30:08', '2026-02-08 20:30:50'),
(32, 'Mathematics', 'Mat-001', 12, '2026-02-08 20:30:33', '2026-02-08 20:30:33'),
(33, 'Science', 'Sci-001', 12, '2026-02-08 20:31:53', '2026-02-08 20:32:34'),
(34, 'Creative Art & Design', 'Crt-001', 12, '2026-02-08 20:33:54', '2026-02-08 20:33:54'),
(35, 'English Language', 'Eng-002', 13, '2026-02-08 20:34:19', '2026-02-08 20:34:19'),
(36, 'Mathematics', 'Mat-002', 13, '2026-02-08 20:34:37', '2026-02-08 20:34:37');

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

--
-- Table structure for table `teachers`
--

CREATE TABLE `teachers` (
  `id` int(10) UNSIGNED NOT NULL,
  `user_id` int(10) UNSIGNED NOT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  `gender` enum('Male','Female') DEFAULT NULL,
  `qualification` varchar(100) DEFAULT NULL,
  `photo` varchar(255) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `teachers`
--

INSERT INTO `teachers` (`id`, `user_id`, `phone`, `address`, `gender`, `qualification`, `photo`, `created_at`, `updated_at`) VALUES
(10, 3, '0249710432', 'Box 63, Tema', 'Male', 'Degree', '1753341507_92ea9f7b4b4ab1cdd376.jpg', '2025-07-24 07:18:27', '2025-07-24 07:18:27'),
(15, 22, '0249710432', 'BOX 44, ACCRA', 'Male', 'TEACHING', '1770584174_7e83d6384be740e9e04f.jpg', '2026-02-08 20:55:50', '2026-02-08 20:56:14'),
(16, 23, '049755593', 'BOX 32', 'Female', 'DEGREE', '1770584239_0921e7bad00463784bf2.jpg', '2026-02-08 20:57:19', '2026-02-08 20:57:19'),
(17, 27, '0249710432', 'BOX 43-TEMA', 'Male', 'DEGREE', '1770739889_78a25ebe1933c6b8c2d2.jpg', '2026-02-10 16:11:29', '2026-02-10 16:11:29'),
(18, 28, '0249755593', 'BOX 56 ACCRA', 'Female', 'DIPLOMA', '1770739951_a6f28f8f7d7dc626153e.jpg', '2026-02-10 16:12:31', '2026-02-10 16:12:31');

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

--
-- Table structure for table `teacher_assignments`
--

CREATE TABLE `teacher_assignments` (
  `id` int(9) UNSIGNED NOT NULL,
  `teacher_id` int(9) UNSIGNED NOT NULL,
  `academic_year_id` int(9) UNSIGNED NOT NULL,
  `term_id` int(9) UNSIGNED NOT NULL,
  `department_id` int(9) UNSIGNED NOT NULL,
  `assigned_date` date DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `teacher_assignments`
--

INSERT INTO `teacher_assignments` (`id`, `teacher_id`, `academic_year_id`, `term_id`, `department_id`, `assigned_date`, `created_at`, `updated_at`) VALUES
(29, 10, 4, 2, 5, '2025-11-13', NULL, NULL),
(30, 15, 11, 9, 12, '2026-02-08', NULL, NULL),
(31, 16, 11, 9, 13, '2026-02-07', NULL, NULL),
(32, 17, 11, 9, 12, '2026-01-26', NULL, NULL),
(33, 17, 11, 9, 13, '2026-01-26', NULL, NULL),
(35, 18, 11, 9, 13, '2026-01-26', NULL, NULL);

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

--
-- Table structure for table `teacher_assignment_class_subject`
--

CREATE TABLE `teacher_assignment_class_subject` (
  `id` int(10) UNSIGNED NOT NULL,
  `teacher_assignment_id` int(10) UNSIGNED NOT NULL,
  `class_id` int(10) UNSIGNED NOT NULL,
  `subject_id` int(10) UNSIGNED NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `teacher_assignment_class_subject`
--

INSERT INTO `teacher_assignment_class_subject` (`id`, `teacher_assignment_id`, `class_id`, `subject_id`, `created_at`, `updated_at`) VALUES
(196, 29, 11, 28, NULL, NULL),
(197, 29, 14, 28, NULL, NULL),
(198, 30, 27, 31, NULL, NULL),
(199, 30, 27, 32, NULL, NULL),
(200, 30, 27, 33, NULL, NULL),
(201, 30, 27, 34, NULL, NULL),
(208, 31, 33, 36, NULL, NULL),
(209, 31, 34, 36, NULL, NULL),
(210, 31, 35, 36, NULL, NULL),
(211, 31, 36, 36, NULL, NULL),
(212, 31, 37, 36, NULL, NULL),
(213, 32, 27, 31, NULL, NULL),
(214, 32, 27, 32, NULL, NULL),
(215, 32, 27, 33, NULL, NULL),
(216, 32, 27, 34, NULL, NULL),
(217, 33, 35, 35, NULL, NULL),
(218, 33, 35, 36, NULL, NULL),
(222, 35, 37, 35, NULL, NULL);

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

--
-- Table structure for table `terms`
--

CREATE TABLE `terms` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(50) NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `number_of_days_open` int(10) UNSIGNED DEFAULT NULL,
  `next_term_begins` date DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `terms`
--

INSERT INTO `terms` (`id`, `name`, `start_date`, `end_date`, `number_of_days_open`, `next_term_begins`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 'First Term', '2025-07-23', '2025-08-10', 62, '2025-09-02', '2025-07-01 15:31:16', '2025-08-31 12:14:32', '2025-08-31 12:14:32'),
(2, 'Second Term', '2026-01-01', '2026-06-25', 56, '2026-07-14', '2025-07-01 15:32:26', '2026-02-07 20:53:56', '2026-02-07 20:53:56'),
(4, 'Third Term', '2025-04-15', '2025-08-30', 0, '0000-00-00', '2025-08-24 21:29:02', '2026-02-07 20:54:08', '2026-02-07 20:54:08'),
(5, 'First Term', '2025-08-20', '2025-08-14', 79, '0000-00-00', '2025-08-31 12:55:07', '2026-02-07 20:54:19', '2026-02-07 20:54:19'),
(6, 'nh', '2025-09-03', '2025-08-29', 564, '2025-08-21', '2025-08-31 14:07:58', '2026-02-07 20:54:01', '2026-02-07 20:54:01'),
(8, 'Fourth Term', '2025-01-10', '2025-07-30', 71, '2025-09-20', '2025-08-31 14:43:47', '2026-02-07 20:54:14', '2026-02-07 20:54:14'),
(9, 'First Term', '2025-09-01', '2025-12-22', 62, '2026-01-08', '2026-02-08 19:58:19', '2026-02-08 19:58:19', NULL),
(10, 'Second Term', '2026-04-08', '2026-04-15', 60, '2026-05-10', '2026-02-08 20:00:20', '2026-02-08 20:00:20', NULL),
(11, 'Third Term', '2026-06-08', '2026-07-24', 55, '2027-01-10', '2026-02-08 20:01:47', '2026-02-08 20:01:47', NULL);

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

--
-- Table structure for table `timetables`
--

CREATE TABLE `timetables` (
  `id` int(10) UNSIGNED NOT NULL,
  `academic_year_id` int(10) UNSIGNED NOT NULL,
  `term_id` int(10) UNSIGNED DEFAULT NULL,
  `class_id` int(10) UNSIGNED NOT NULL,
  `house_id` int(10) UNSIGNED DEFAULT NULL,
  `day_of_week` varchar(20) NOT NULL,
  `period_number` int(2) NOT NULL,
  `start_time` time NOT NULL,
  `end_time` time NOT NULL,
  `subject_id` int(10) UNSIGNED NOT NULL,
  `teacher_id` int(10) UNSIGNED DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `password` varchar(255) NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `name`, `email`, `password`, `created_at`, `updated_at`) VALUES
(1, '', 'cx@gmail.com', '$2y$10$FLEkc9TbumTa29rRl.eKSesgC4pmwK.F0VRGMmZmmRFahZ9A5vxjm', '2025-06-29 12:39:58', '2025-06-29 12:39:58'),
(2, 'bb', 'bb@gmail.com', '$2y$10$dcveisBNqa.NBG6N3hf9zOz2rgLbX/5IjEh7gNcWO/WC1jkm57Hha', '2025-06-29 13:08:36', '2025-06-29 13:08:36'),
(9, 'Mr New Tep', 'new@gmail.com', '$2y$10$NLCe7Vmely1TGuHs0dEz3upTDV1ur7LJ9HbuOZ55bTJAP7eJw9s0u', '2025-07-04 13:31:38', '2025-07-04 13:33:03'),
(10, 'koo', 'koo@gmail.com', '$2y$10$XRSeDIVSP3tDKzkUT85Nq.fGMy8xALghh8W2UPWOupdaBzIPS7uwi', '2025-07-16 22:51:19', '2025-07-16 22:51:19'),
(11, 'goo', 'goo@gmail.com', '$2y$10$keiBBOAAFz4i62gRvJFV3ed15CxS1Hr9t/4BPoQLuU7RSoHFM5tb.', '2025-07-16 22:52:02', '2025-07-16 22:52:02'),
(12, 'namey', 'name@gmail.com', '$2y$10$PMFgqX2cJSvxZN8ucMPFu.mhdQiAUMQlYTIzHTFNUYCiTx1DXoige', '2025-07-16 22:57:58', '2025-07-16 22:57:58'),
(26, 'MARK PROSPER', 'mark@gmail.com', '$2y$10$78Axa5h9mNJLr62wlrU8neFLnDJfI4IDAucPMS1ab48N3ORbDGJee', '2026-02-10 14:27:36', '2026-02-10 14:27:36'),
(27, 'Mr. Ganyo Agbeshi Kwame', 'ganyo@gmail.com', '$2y$10$wRaRzCyhBM4r4rJ3VMFC.OEBTE0IOf7KgbHC6whLEhi6cDwmuApHa', '2026-02-10 14:40:03', '2026-02-10 14:40:49'),
(28, 'Mad. Aseye Ama', 'aseye@gmail.com', '$2y$10$974.1aHE.Ku8B1n.yHw5TedvV2SLWgWim6XilIT8ZJo/t5vHXjBWq', '2026-02-10 14:48:05', '2026-02-10 16:08:11'),
(32, 'acc', 'acc@gmial.com', '$2y$10$UVEVofAOPicBECk4szRcCu29ErT1IfoK8WMu6/pu4LEB3HoJfbvF.', '2026-02-14 00:19:04', '2026-02-14 00:19:04'),
(33, 'accc', 'accc@gmail.com', '$2y$10$bE.wob0FtwXQugadHmp00.6PrdLIw7WKX19FunW8GsJf4Uqpe8H9.', '2026-02-14 00:20:07', '2026-02-14 00:20:07');

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

--
-- Table structure for table `user_roles`
--

CREATE TABLE `user_roles` (
  `id` int(10) UNSIGNED NOT NULL,
  `user_id` int(10) UNSIGNED NOT NULL,
  `role_id` int(10) UNSIGNED NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `user_roles`
--

INSERT INTO `user_roles` (`id`, `user_id`, `role_id`, `created_at`, `updated_at`) VALUES
(11, 3, 1, '2025-06-29 13:40:25', '2025-06-29 18:10:46'),
(13, 5, 1, NULL, NULL),
(15, 7, 2, NULL, NULL),
(16, 8, 2, NULL, NULL),
(17, 13, 1, NULL, NULL),
(18, 14, 4, NULL, NULL),
(19, 15, 4, NULL, NULL),
(20, 16, 2, NULL, NULL),
(21, 17, 2, NULL, NULL),
(22, 18, 2, NULL, NULL),
(23, 19, 3, NULL, NULL),
(24, 20, 2, NULL, NULL),
(25, 21, 5, NULL, NULL),
(26, 22, 2, NULL, NULL),
(27, 23, 2, NULL, NULL),
(28, 24, 1, NULL, NULL),
(29, 25, 2, NULL, NULL),
(30, 26, 1, NULL, NULL),
(31, 27, 2, NULL, NULL),
(32, 28, 2, NULL, NULL),
(33, 29, 2, NULL, NULL),
(34, 30, 2, NULL, NULL),
(35, 31, 2, NULL, NULL),
(36, 32, 5, NULL, NULL),
(37, 33, 5, NULL, NULL);

--
-- Indexes for dumped tables
--

--
-- Indexes for table `academic_years`
--
ALTER TABLE `academic_years`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `activity_logs`
--
ALTER TABLE `activity_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `activity_logs_user_id_foreign` (`user_id`);

--
-- Indexes for table `assessment_components`
--
ALTER TABLE `assessment_components`
  ADD PRIMARY KEY (`id`),
  ADD KEY `assessment_components_assessment_section_id_foreign` (`assessment_section_id`);

--
-- Indexes for table `assessment_modules`
--
ALTER TABLE `assessment_modules`
  ADD PRIMARY KEY (`id`),
  ADD KEY `assessment_modules_department_id_foreign` (`department_id`);

--
-- Indexes for table `assessment_sections`
--
ALTER TABLE `assessment_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `assessment_sections_assessment_module_id_foreign` (`assessment_module_id`);

--
-- Indexes for table `attendance_records`
--
ALTER TABLE `attendance_records`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `student_id_attendance_date` (`student_id`,`attendance_date`),
  ADD KEY `attendance_records_academic_year_id_foreign` (`academic_year_id`),
  ADD KEY `attendance_records_term_id_foreign` (`term_id`),
  ADD KEY `attendance_records_class_id_foreign` (`class_id`),
  ADD KEY `attendance_records_house_id_foreign` (`house_id`);

--
-- Indexes for table `classes`
--
ALTER TABLE `classes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `classes_department_id_foreign` (`department_id`);

--
-- Indexes for table `class_subjects`
--
ALTER TABLE `class_subjects`
  ADD PRIMARY KEY (`id`),
  ADD KEY `class_subjects_class_id_foreign` (`class_id`),
  ADD KEY `class_subjects_subject_id_foreign` (`subject_id`);

--
-- Indexes for table `comments`
--
ALTER TABLE `comments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `academic_year_id` (`academic_year_id`),
  ADD KEY `term_id` (`term_id`),
  ADD KEY `class_id` (`class_id`),
  ADD KEY `student_id` (`student_id`),
  ADD KEY `promoted_to_class_id` (`promoted_to_class_id`);

--
-- Indexes for table `departments`
--
ALTER TABLE `departments`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `name` (`name`);

--
-- Indexes for table `discount_approvals`
--
ALTER TABLE `discount_approvals`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_fee_entry_id` (`fee_entry_id`),
  ADD KEY `idx_student_id` (`student_id`),
  ADD KEY `idx_status` (`status`);

--
-- Indexes for table `enrollments`
--
ALTER TABLE `enrollments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `enrollments_student_id_foreign` (`student_id`),
  ADD KEY `enrollments_academic_year_id_foreign` (`academic_year_id`),
  ADD KEY `enrollments_term_id_foreign` (`term_id`),
  ADD KEY `enrollments_department_id_foreign` (`department_id`),
  ADD KEY `enrollments_class_id_foreign` (`class_id`),
  ADD KEY `enrollments_house_id_foreign` (`house_id`);

--
-- Indexes for table `fee_bands`
--
ALTER TABLE `fee_bands`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fee_system_id` (`fee_system_id`);

--
-- Indexes for table `fee_entries`
--
ALTER TABLE `fee_entries`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_student_id` (`student_id`),
  ADD KEY `idx_class_id` (`class_id`),
  ADD KEY `idx_academic_year_id` (`academic_year_id`),
  ADD KEY `idx_term_id` (`term_id`),
  ADD KEY `idx_status` (`status`);

--
-- Indexes for table `fee_systems`
--
ALTER TABLE `fee_systems`
  ADD PRIMARY KEY (`id`),
  ADD KEY `department_id` (`department_id`);

--
-- Indexes for table `grading_bands`
--
ALTER TABLE `grading_bands`
  ADD PRIMARY KEY (`id`),
  ADD KEY `grading_bands_grading_system_id_foreign` (`grading_system_id`);

--
-- Indexes for table `grading_systems`
--
ALTER TABLE `grading_systems`
  ADD PRIMARY KEY (`id`),
  ADD KEY `grading_systems_department_id_foreign` (`department_id`);

--
-- Indexes for table `houses`
--
ALTER TABLE `houses`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `migrations`
--
ALTER TABLE `migrations`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `parents`
--
ALTER TABLE `parents`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `payments`
--
ALTER TABLE `payments`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uk_reference` (`reference`),
  ADD KEY `idx_student_id` (`student_id`),
  ADD KEY `idx_fee_entry_id` (`fee_entry_id`),
  ADD KEY `idx_status` (`status`),
  ADD KEY `idx_payment_date` (`payment_date`);

--
-- Indexes for table `payment_reminders`
--
ALTER TABLE `payment_reminders`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_student_id` (`student_id`),
  ADD KEY `idx_fee_entry_id` (`fee_entry_id`),
  ADD KEY `idx_status` (`status`),
  ADD KEY `idx_scheduled_date` (`scheduled_date`);

--
-- Indexes for table `promotion_records`
--
ALTER TABLE `promotion_records`
  ADD PRIMARY KEY (`id`),
  ADD KEY `promotion_records_student_id_foreign` (`student_id`),
  ADD KEY `promotion_records_from_class_id_foreign` (`from_class_id`),
  ADD KEY `promotion_records_to_class_id_foreign` (`to_class_id`),
  ADD KEY `promotion_records_promoted_by_foreign` (`promoted_by`),
  ADD KEY `idx_is_current` (`is_current`),
  ADD KEY `idx_student_current` (`student_id`,`is_current`);

--
-- Indexes for table `results`
--
ALTER TABLE `results`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `roles`
--
ALTER TABLE `roles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `name` (`name`);

--
-- Indexes for table `score_conversions`
--
ALTER TABLE `score_conversions`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `department_id_class_score_exam_score` (`department_id`,`class_score`,`exam_score`);

--
-- Indexes for table `settings`
--
ALTER TABLE `settings`
  ADD PRIMARY KEY (`id`),
  ADD KEY `settings_current_academic_year_id_foreign` (`current_academic_year_id`),
  ADD KEY `settings_current_term_id_foreign` (`current_term_id`);

--
-- Indexes for table `sms_logs`
--
ALTER TABLE `sms_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_recipient` (`recipient`),
  ADD KEY `idx_status` (`status`),
  ADD KEY `idx_type` (`type`),
  ADD KEY `idx_reference` (`reference`);

--
-- Indexes for table `students`
--
ALTER TABLE `students`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `admission_number` (`admission_number`),
  ADD KEY `students_academic_year_id_foreign` (`academic_year_id`),
  ADD KEY `students_term_id_foreign` (`term_id`),
  ADD KEY `students_department_id_foreign` (`department_id`),
  ADD KEY `students_class_id_foreign` (`class_id`),
  ADD KEY `students_house_id_foreign` (`house_id`);

--
-- Indexes for table `student_fee_options`
--
ALTER TABLE `student_fee_options`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uniq_student_fee_option` (`student_id`,`fees_category_id`,`academic_year_id`,`term_id`,`class_id`),
  ADD KEY `fk_sfo_cat` (`fees_category_id`),
  ADD KEY `fk_sfo_ay` (`academic_year_id`),
  ADD KEY `fk_sfo_term` (`term_id`),
  ADD KEY `fk_sfo_class` (`class_id`),
  ADD KEY `fk_sfo_user` (`assigned_by`);

--
-- Indexes for table `student_parents`
--
ALTER TABLE `student_parents`
  ADD PRIMARY KEY (`id`),
  ADD KEY `student_parents_student_id_foreign` (`student_id`),
  ADD KEY `student_parents_parent_id_foreign` (`parent_id`);

--
-- Indexes for table `subjects`
--
ALTER TABLE `subjects`
  ADD PRIMARY KEY (`id`),
  ADD KEY `subjects_department_id_foreign` (`department_id`);

--
-- Indexes for table `teachers`
--
ALTER TABLE `teachers`
  ADD PRIMARY KEY (`id`),
  ADD KEY `teachers_user_id_foreign` (`user_id`);

--
-- Indexes for table `teacher_assignments`
--
ALTER TABLE `teacher_assignments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `teacher_assignments_teacher_id_foreign` (`teacher_id`),
  ADD KEY `teacher_assignments_academic_year_id_foreign` (`academic_year_id`),
  ADD KEY `teacher_assignments_term_id_foreign` (`term_id`),
  ADD KEY `teacher_assignments_department_id_foreign` (`department_id`);

--
-- Indexes for table `teacher_assignment_class_subject`
--
ALTER TABLE `teacher_assignment_class_subject`
  ADD PRIMARY KEY (`id`),
  ADD KEY `teacher_assignment_class_subject_teacher_assignment_id_foreign` (`teacher_assignment_id`),
  ADD KEY `teacher_assignment_class_subject_class_id_foreign` (`class_id`),
  ADD KEY `teacher_assignment_class_subject_subject_id_foreign` (`subject_id`);

--
-- Indexes for table `terms`
--
ALTER TABLE `terms`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `timetables`
--
ALTER TABLE `timetables`
  ADD PRIMARY KEY (`id`),
  ADD KEY `timetables_academic_year_id_foreign` (`academic_year_id`),
  ADD KEY `timetables_term_id_foreign` (`term_id`),
  ADD KEY `timetables_class_id_foreign` (`class_id`),
  ADD KEY `timetables_house_id_foreign` (`house_id`),
  ADD KEY `timetables_subject_id_foreign` (`subject_id`),
  ADD KEY `timetables_teacher_id_foreign` (`teacher_id`);

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

--
-- Indexes for table `user_roles`
--
ALTER TABLE `user_roles`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_roles_user_id_foreign` (`user_id`),
  ADD KEY `user_roles_role_id_foreign` (`role_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `academic_years`
--
ALTER TABLE `academic_years`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT for table `activity_logs`
--
ALTER TABLE `activity_logs`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `assessment_components`
--
ALTER TABLE `assessment_components`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `assessment_modules`
--
ALTER TABLE `assessment_modules`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `assessment_sections`
--
ALTER TABLE `assessment_sections`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `attendance_records`
--
ALTER TABLE `attendance_records`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `classes`
--
ALTER TABLE `classes`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=42;

--
-- AUTO_INCREMENT for table `class_subjects`
--
ALTER TABLE `class_subjects`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `comments`
--
ALTER TABLE `comments`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=27;

--
-- AUTO_INCREMENT for table `departments`
--
ALTER TABLE `departments`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT for table `discount_approvals`
--
ALTER TABLE `discount_approvals`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `enrollments`
--
ALTER TABLE `enrollments`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT for table `fee_bands`
--
ALTER TABLE `fee_bands`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=83;

--
-- AUTO_INCREMENT for table `fee_entries`
--
ALTER TABLE `fee_entries`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=102;

--
-- AUTO_INCREMENT for table `fee_systems`
--
ALTER TABLE `fee_systems`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `grading_bands`
--
ALTER TABLE `grading_bands`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=160;

--
-- AUTO_INCREMENT for table `grading_systems`
--
ALTER TABLE `grading_systems`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18;

--
-- AUTO_INCREMENT for table `houses`
--
ALTER TABLE `houses`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `migrations`
--
ALTER TABLE `migrations`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=49;

--
-- AUTO_INCREMENT for table `parents`
--
ALTER TABLE `parents`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=27;

--
-- AUTO_INCREMENT for table `payments`
--
ALTER TABLE `payments`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=70;

--
-- AUTO_INCREMENT for table `payment_reminders`
--
ALTER TABLE `payment_reminders`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `promotion_records`
--
ALTER TABLE `promotion_records`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=20;

--
-- AUTO_INCREMENT for table `results`
--
ALTER TABLE `results`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT for table `roles`
--
ALTER TABLE `roles`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `score_conversions`
--
ALTER TABLE `score_conversions`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;

--
-- AUTO_INCREMENT for table `settings`
--
ALTER TABLE `settings`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `sms_logs`
--
ALTER TABLE `sms_logs`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `students`
--
ALTER TABLE `students`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;

--
-- AUTO_INCREMENT for table `student_fee_options`
--
ALTER TABLE `student_fee_options`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `student_parents`
--
ALTER TABLE `student_parents`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=55;

--
-- AUTO_INCREMENT for table `subjects`
--
ALTER TABLE `subjects`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=37;

--
-- AUTO_INCREMENT for table `teachers`
--
ALTER TABLE `teachers`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT for table `teacher_assignments`
--
ALTER TABLE `teacher_assignments`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=36;

--
-- AUTO_INCREMENT for table `teacher_assignment_class_subject`
--
ALTER TABLE `teacher_assignment_class_subject`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=223;

--
-- AUTO_INCREMENT for table `terms`
--
ALTER TABLE `terms`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT for table `timetables`
--
ALTER TABLE `timetables`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=34;

--
-- AUTO_INCREMENT for table `user_roles`
--
ALTER TABLE `user_roles`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=38;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `activity_logs`
--
ALTER TABLE `activity_logs`
  ADD CONSTRAINT `activity_logs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE SET NULL;

--
-- Constraints for table `assessment_components`
--
ALTER TABLE `assessment_components`
  ADD CONSTRAINT `assessment_components_assessment_section_id_foreign` FOREIGN KEY (`assessment_section_id`) REFERENCES `assessment_sections` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `assessment_modules`
--
ALTER TABLE `assessment_modules`
  ADD CONSTRAINT `assessment_modules_department_id_foreign` FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `assessment_sections`
--
ALTER TABLE `assessment_sections`
  ADD CONSTRAINT `assessment_sections_assessment_module_id_foreign` FOREIGN KEY (`assessment_module_id`) REFERENCES `assessment_modules` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `attendance_records`
--
ALTER TABLE `attendance_records`
  ADD CONSTRAINT `attendance_records_academic_year_id_foreign` FOREIGN KEY (`academic_year_id`) REFERENCES `academic_years` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `attendance_records_class_id_foreign` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `attendance_records_house_id_foreign` FOREIGN KEY (`house_id`) REFERENCES `houses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `attendance_records_student_id_foreign` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `attendance_records_term_id_foreign` FOREIGN KEY (`term_id`) REFERENCES `terms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `classes`
--
ALTER TABLE `classes`
  ADD CONSTRAINT `classes_department_id_foreign` FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `class_subjects`
--
ALTER TABLE `class_subjects`
  ADD CONSTRAINT `class_subjects_class_id_foreign` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `class_subjects_subject_id_foreign` FOREIGN KEY (`subject_id`) REFERENCES `subjects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `enrollments`
--
ALTER TABLE `enrollments`
  ADD CONSTRAINT `enrollments_academic_year_id_foreign` FOREIGN KEY (`academic_year_id`) REFERENCES `academic_years` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `enrollments_class_id_foreign` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `enrollments_department_id_foreign` FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `enrollments_house_id_foreign` FOREIGN KEY (`house_id`) REFERENCES `houses` (`id`) ON DELETE CASCADE ON UPDATE SET NULL,
  ADD CONSTRAINT `enrollments_student_id_foreign` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `enrollments_term_id_foreign` FOREIGN KEY (`term_id`) REFERENCES `terms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `fee_bands`
--
ALTER TABLE `fee_bands`
  ADD CONSTRAINT `fee_bands_ibfk_1` FOREIGN KEY (`fee_system_id`) REFERENCES `fee_systems` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `fee_entries`
--
ALTER TABLE `fee_entries`
  ADD CONSTRAINT `fk_fee_entries_academic_years` FOREIGN KEY (`academic_year_id`) REFERENCES `academic_years` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_fee_entries_classes` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_fee_entries_students` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_fee_entries_terms` FOREIGN KEY (`term_id`) REFERENCES `terms` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `grading_bands`
--
ALTER TABLE `grading_bands`
  ADD CONSTRAINT `grading_bands_grading_system_id_foreign` FOREIGN KEY (`grading_system_id`) REFERENCES `grading_systems` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `grading_systems`
--
ALTER TABLE `grading_systems`
  ADD CONSTRAINT `grading_systems_department_id_foreign` FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`) ON DELETE CASCADE ON UPDATE SET NULL;

--
-- Constraints for table `promotion_records`
--
ALTER TABLE `promotion_records`
  ADD CONSTRAINT `promotion_records_from_class_id_foreign` FOREIGN KEY (`from_class_id`) REFERENCES `classes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `promotion_records_promoted_by_foreign` FOREIGN KEY (`promoted_by`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE SET NULL,
  ADD CONSTRAINT `promotion_records_student_id_foreign` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `promotion_records_to_class_id_foreign` FOREIGN KEY (`to_class_id`) REFERENCES `classes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `score_conversions`
--
ALTER TABLE `score_conversions`
  ADD CONSTRAINT `score_conversions_department_id_foreign` FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`) ON DELETE CASCADE ON UPDATE SET NULL;

--
-- Constraints for table `settings`
--
ALTER TABLE `settings`
  ADD CONSTRAINT `settings_current_academic_year_id_foreign` FOREIGN KEY (`current_academic_year_id`) REFERENCES `academic_years` (`id`) ON DELETE CASCADE ON UPDATE SET NULL,
  ADD CONSTRAINT `settings_current_term_id_foreign` FOREIGN KEY (`current_term_id`) REFERENCES `terms` (`id`) ON DELETE CASCADE ON UPDATE SET NULL;

--
-- Constraints for table `students`
--
ALTER TABLE `students`
  ADD CONSTRAINT `fk_students_class_id` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`) ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_students_department_id` FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`) ON UPDATE CASCADE,
  ADD CONSTRAINT `students_house_id_foreign` FOREIGN KEY (`house_id`) REFERENCES `houses` (`id`) ON DELETE CASCADE ON UPDATE SET NULL;

--
-- Constraints for table `student_parents`
--
ALTER TABLE `student_parents`
  ADD CONSTRAINT `student_parents_parent_id_foreign` FOREIGN KEY (`parent_id`) REFERENCES `parents` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `student_parents_student_id_foreign` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;

