-- 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),
(13, '2027-2028', '2027-09-01', '2028-07-24', '2026-03-09 18:12:45', '2026-03-09 18:12:45', 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
(83, 9, 'Extra classess', 90.00, '2026-03-10 19:12:36', '2026-03-10 19:12:36'),
(84, 9, 'Library', 15.00, '2026-03-10 19:12:36', '2026-03-10 19:12:36'),
(85, 9, 'Mock Fee', 150.00, '2026-03-10 19:12:36', '2026-03-10 19:12:36'),
(86, 9, 'Tuition', 300.00, '2026-03-10 19:12:36', '2026-03-10 19:12:36'),
(87, 8, 'Clinic Levy', 30.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(88, 8, 'Extra Class Fee', 70.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(89, 8, 'Feeding Fee', 300.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(90, 8, 'ICT dues', 45.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(91, 8, 'Library Fee', 15.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(92, 8, 'Maintenance', 15.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(93, 8, 'P.T.A Dues', 60.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(94, 8, 'Printing Fee', 25.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(95, 8, 'Tuition Fee', 70.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(96, 8, 'User Bus Fee', 300.00, '2026-03-10 19:13:40', '2026-03-10 19:13:40'),
(101, 10, 'Mock Fee', 300.00, '2026-03-10 19:26:31', '2026-03-10 19:26:31'),
(104, 11, 'Portfolio For All Class Works For The Term', 12000.00, '2026-03-10 19:39:41', '2026-03-10 19:39:41'),
(105, 11, 'Project Work', 200.00, '2026-03-10 19:39:41', '2026-03-10 19:39:41'),
(106, 12, 'Maintainance', 600.00, '2026-03-10 22:24:28', '2026-03-10 22:24:28'),
(107, 12, 'Library', 31.00, '2026-03-10 22:24:28', '2026-03-10 22:24:28'),
(108, 13, 'User Bus Fee', 211.00, '2026-03-10 22:52:09', '2026-03-10 22:52:09');

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

--
-- 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,
  `fee_system_id` int(9) UNSIGNED DEFAULT 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,
  `arrears_type` enum('bf','manual','new') DEFAULT 'new' COMMENT 'bf: brought forward, manual: manually entered, new: no previous term',
  `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`, `fee_system_id`, `term_id`, `bill_item`, `amount`, `discount`, `amount_due`, `arrears`, `arrears_type`, `total_payable`, `balance`, `status`, `payment_status`, `payment_date`, `last_payment_date`, `reference_number`, `payment_deadline`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(524, 9, 27, 11, NULL, 9, NULL, 555.00, 1.00, 554.00, 0.00, 'new', 554.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:42:47', '2026-03-13 23:40:24'),
(525, 10, 27, 11, NULL, 9, NULL, 555.00, 600.00, -45.00, 200.00, 'new', 155.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:42:47', '2026-03-13 23:40:24'),
(526, 17, 27, 11, NULL, 9, NULL, 555.00, 0.00, 555.00, 300.00, 'new', 855.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:42:47', '2026-03-13 23:40:24'),
(527, 15, 27, 11, NULL, 9, NULL, 555.00, 0.00, 555.00, 0.00, 'new', 555.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:42:47', '2026-03-13 23:40:24'),
(528, 16, 27, 11, NULL, 9, NULL, 555.00, 0.00, 555.00, 0.00, 'new', 555.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:42:47', '2026-03-13 23:40:24'),
(534, 9, 27, 11, NULL, 11, NULL, 631.00, 0.00, 631.00, -1516.00, 'new', -885.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:47:20', '2026-03-14 00:17:50'),
(535, 10, 27, 11, NULL, 11, NULL, 631.00, 0.00, 631.00, 1085.00, 'new', 1716.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:47:20', '2026-03-14 00:13:32'),
(536, 17, 27, 11, NULL, 11, NULL, 631.00, 0.00, 631.00, 1785.00, 'new', 2416.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:47:20', '2026-03-14 00:13:32'),
(537, 15, 27, 11, NULL, 11, NULL, 631.00, 0.00, 631.00, 1485.00, 'new', 2116.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:47:20', '2026-03-14 00:13:32'),
(538, 16, 27, 11, NULL, 11, NULL, 631.00, 0.00, 631.00, 1485.00, 'new', 2116.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 20:47:20', '2026-03-14 00:13:32'),
(539, 9, 27, 11, NULL, 10, NULL, 930.00, 0.00, 930.00, 554.00, 'new', 1484.00, 0.00, 'paid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:22:08', '2026-03-14 00:17:50'),
(540, 10, 27, 11, NULL, 10, NULL, 930.00, 0.00, 930.00, 155.00, 'new', 1085.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:22:08', '2026-03-14 00:06:28'),
(541, 17, 27, 11, NULL, 10, NULL, 930.00, 0.00, 930.00, 855.00, 'new', 1785.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:22:08', '2026-03-14 00:06:28'),
(542, 15, 27, 11, NULL, 10, NULL, 930.00, 0.00, 930.00, 555.00, 'new', 1485.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:22:08', '2026-03-14 00:06:28'),
(543, 16, 27, 11, NULL, 10, NULL, 930.00, 0.00, 930.00, 555.00, 'new', 1485.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:22:08', '2026-03-14 00:06:28'),
(544, 9, 27, 12, NULL, 9, NULL, 211.00, 0.00, 211.00, 11115.00, 'new', 11326.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:26:17', '2026-03-13 22:26:17'),
(545, 10, 27, 12, NULL, 9, NULL, 211.00, 0.00, 211.00, 1716.00, 'new', 1927.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:26:17', '2026-03-13 22:26:17'),
(546, 17, 27, 12, NULL, 9, NULL, 211.00, 0.00, 211.00, 2416.00, 'new', 2627.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:26:17', '2026-03-13 22:26:17'),
(547, 15, 27, 12, NULL, 9, NULL, 211.00, 0.00, 211.00, 2116.00, 'new', 2327.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:26:17', '2026-03-13 22:26:17'),
(548, 16, 27, 12, NULL, 9, NULL, 211.00, 0.00, 211.00, 2116.00, 'new', 2327.00, 0.00, 'unpaid', 'unpaid', '2026-03-13', NULL, NULL, NULL, NULL, NULL, '2026-03-13 22:26:17', '2026-03-13 22:26:17');

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

--
-- 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,
  `academic_year_id` int(10) UNSIGNED DEFAULT NULL,
  `term_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 `fee_systems`
--

INSERT INTO `fee_systems` (`id`, `name`, `description`, `department_id`, `academic_year_id`, `term_id`, `created_at`, `updated_at`) VALUES
(8, 'Billing A', '', 12, 11, 10, '2026-02-09 13:00:48', '2026-03-10 19:13:40'),
(9, 'Billing B', '', 12, 11, 9, '2026-02-09 13:02:27', '2026-03-10 19:12:36'),
(10, 'Billing C', '', 13, 11, 9, '2026-03-10 19:14:49', '2026-03-10 19:26:31'),
(11, 'Billing D', '', 13, 11, 10, '2026-03-10 19:26:03', '2026-03-10 19:39:41'),
(12, 'Billing E', '', 12, 11, 11, '2026-03-10 22:24:28', '2026-03-10 22:24:28'),
(13, 'Billing F', '', 12, 12, 9, '2026-03-10 22:52:09', '2026-03-10 22:52:09');

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

--
-- 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 `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'),
(70, 9, 86, 10.00, '2026-02-25 17:41:23', 'cash', 'RCT-20260225-4430A1A5', NULL, NULL, 'success', 'P.T.A Dues', 26, '2026-02-25 17:41:23', '2026-02-25 17:41:23'),
(71, 9, 86, 7.00, '2026-02-25 18:01:11', 'bank_transfer', 'RCT-20260225-8E731429', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 18:01:11', '2026-02-25 18:01:11'),
(72, 10, 87, 100.00, '2026-02-25 18:02:53', 'cash', 'RCT-20260225-94DB13CC', NULL, NULL, 'success', 'Full payment', 26, '2026-02-25 18:02:53', '2026-02-25 18:02:53'),
(73, 9, 86, 7.00, '2026-02-25 18:41:55', 'mobile_money', 'RCT-20260225-27375A75', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 18:41:55', '2026-02-25 18:41:55'),
(74, 10, 87, 6000.00, '2026-02-25 18:51:16', 'mobile_money', 'RCT-20260225-4A4D8885', NULL, NULL, 'success', 'P.T.A Dues', 26, '2026-02-25 18:51:16', '2026-02-25 18:51:16'),
(75, 10, 103, 1941.00, '2026-02-25 19:00:56', 'mobile_money', 'RCT-20260225-6E85A223', NULL, NULL, 'success', 'P.T.A Dues', 26, '2026-02-25 19:00:56', '2026-02-25 19:00:56'),
(78, 9, 110, 5830.00, '2026-02-25 21:36:28', 'mobile_money', 'RCT-20260225-B5C9352B', NULL, NULL, 'success', 'Full payment', 26, '2026-02-25 21:36:28', '2026-02-25 21:36:28'),
(79, 10, 111, 2000.00, '2026-02-25 22:48:00', 'mobile_money', 'RCT-20260225-B99B6EB8', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 21:37:29', '2026-02-25 22:48:00'),
(80, 9, 112, 930.00, '2026-02-25 21:59:28', 'cash', 'RCT-20260225-0C0E8133', NULL, NULL, 'success', 'Full payment', 26, '2026-02-25 21:59:28', '2026-02-25 21:59:28'),
(81, 10, 113, 2002.00, '2026-02-25 09:08:14', 'mobile_money', 'RCT-20260225-13ED2142', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 22:01:34', '2026-02-26 09:08:14'),
(82, 10, 111, 11.00, '2026-02-25 22:52:01', 'card', 'RCT-20260225-D11AD10B', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 22:52:01', '2026-02-25 22:52:01'),
(83, 10, 111, 13.00, '2026-02-25 22:52:27', 'cash', 'RCT-20260225-D2BDC759', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 22:52:27', '2026-02-25 22:52:27'),
(84, 10, 111, 27.00, '2026-02-25 09:07:24', 'mobile_money', 'RCT-20260225-D467AB21', NULL, NULL, 'success', 'P.T.A Dues', 26, '2026-02-25 22:52:54', '2026-02-26 09:07:24'),
(85, 10, 111, 65.00, '2026-02-25 09:05:18', 'cash', 'RCT-20260225-E029AB0B', NULL, NULL, 'success', 'Part pay', 26, '2026-02-25 22:56:02', '2026-02-26 09:05:18'),
(86, 10, 113, 100.00, '2026-02-26 09:51:27', 'mobile_money', 'RCT-20260226-79F1FB4C', NULL, NULL, 'success', 'P.T.A Dues', 26, '2026-02-26 09:51:27', '2026-02-26 09:51:27'),
(87, 9, 124, 930.00, '2026-03-03 13:31:00', 'cash', 'RCT-20260303-294BC799', NULL, NULL, 'success', 'Full payment', 26, '2026-03-03 13:31:00', '2026-03-03 13:31:00'),
(88, 9, 124, 8.00, '2026-03-03 13:49:03', 'mobile_money', 'RCT-20260303-6CFAD5EE', NULL, NULL, 'success', 'Full payment', 26, '2026-03-03 13:49:03', '2026-03-03 13:49:03'),
(89, 10, 125, 900.00, '2026-03-05 21:53:18', 'cash', 'RCT-20260305-B4E75570', NULL, NULL, 'success', 'Part payment for this term fee', 34, '2026-03-05 21:53:18', '2026-03-05 21:53:18'),
(90, 10, 125, 30.00, '2026-03-05 21:54:06', 'mobile_money', 'RCT-20260305-B7E44584', NULL, NULL, 'success', 'Library', 34, '2026-03-05 21:54:06', '2026-03-05 21:54:06'),
(91, 9, 124, 1000.00, '2026-03-05 21:55:14', 'bank_transfer', 'RCT-20260305-BC255920', NULL, NULL, 'success', 'Full payment', 34, '2026-03-05 21:55:14', '2026-03-05 21:55:14'),
(92, 9, 124, 5.00, '2026-03-05 22:02:35', 'mobile_money', 'RCT-20260305-D7B8F5F7', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-05 22:02:35', '2026-03-05 22:02:35'),
(93, 10, 125, 2.00, '2026-03-05 22:10:45', 'mobile_money', 'RCT-20260305-F6539EA7', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-05 22:10:45', '2026-03-05 22:10:45'),
(94, 9, 124, 10.00, '2026-03-05 22:30:36', 'cash', 'RCT-20260305-40C34AFC', NULL, NULL, 'success', 'Full payment', 34, '2026-03-05 22:30:36', '2026-03-05 22:30:36'),
(95, 10, 125, 2.00, '2026-03-05 22:31:51', 'mobile_money', 'RCT-20260305-45722F7A', NULL, NULL, 'success', 'Part pay', 34, '2026-03-05 22:31:51', '2026-03-05 22:31:51'),
(96, 10, 125, 1.00, '2026-03-06 22:26:21', 'cash', 'RCT-20260306-48DF13FA', NULL, NULL, 'success', 'Part pay', 34, '2026-03-06 22:26:21', '2026-03-06 22:26:21'),
(97, 10, 125, 50.00, '2026-03-06 23:05:46', 'mobile_money', 'RCT-20260306-DCAD2494', NULL, NULL, 'success', 'Library', 34, '2026-03-06 23:05:46', '2026-03-06 23:05:46'),
(98, 9, 124, 100.00, '2026-03-06 23:08:24', 'mobile_money', 'RCT-20260306-E6801BDB', NULL, NULL, 'success', 'Full payment', 34, '2026-03-06 23:08:24', '2026-03-06 23:08:24'),
(99, 9, 124, 11.00, '2026-03-06 23:08:54', 'mobile_money', 'RCT-20260306-E8696428', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-06 23:08:54', '2026-03-06 23:08:54'),
(100, 15, 126, 70.00, '2026-03-07 22:42:46', 'cash', 'RCT-20260307-9E603FDB', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-07 22:42:46', '2026-03-07 22:42:46'),
(101, 16, 127, 700.00, '2026-03-07 22:43:30', 'mobile_money', 'RCT-20260307-A12E3E0F', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-07 22:43:30', '2026-03-07 22:43:30'),
(102, 16, 127, 100.00, '2026-03-07 23:20:45', 'mobile_money', 'RCT-20260307-2CD284B2', NULL, NULL, 'success', 'Feeding Fee', 34, '2026-03-07 23:20:45', '2026-03-07 23:20:45'),
(103, 16, 127, 18.00, '2026-03-07 23:24:32', 'bank_transfer', 'RCT-20260307-3B00E56D', NULL, NULL, 'success', 'Being partment for excussion programme', 34, '2026-03-07 23:24:32', '2026-03-07 23:24:32'),
(104, 10, 125, 10.00, '2026-03-07 23:34:42', 'cash', 'RCT-20260307-6129C783', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-07 23:34:42', '2026-03-07 23:34:42'),
(105, 15, 126, 73.00, '2026-03-07 23:37:42', 'cash', 'RCT-20260307-6C699E5C', NULL, NULL, 'success', 'Part pay', 34, '2026-03-07 23:37:42', '2026-03-07 23:37:42'),
(106, 16, 127, 13.00, '2026-03-07 23:46:18', 'mobile_money', 'RCT-20260307-8CA1682A', NULL, NULL, 'success', 'Part payment for this term fee', 34, '2026-03-07 23:46:18', '2026-03-07 23:46:18'),
(107, 16, 127, 103.00, '2026-03-07 23:47:06', 'mobile_money', 'RCT-20260307-8FA1D2BC', NULL, NULL, 'success', 'Payment for Bus -User Fee', 34, '2026-03-07 23:47:06', '2026-03-07 23:47:06'),
(108, 16, 127, 1.00, '2026-03-07 23:47:33', 'cash', 'RCT-20260307-915217BA', NULL, NULL, 'success', 'Being partment for excussion ', 34, '2026-03-07 23:47:33', '2026-03-07 23:47:33'),
(109, 16, 127, 8.00, '2026-03-07 23:52:41', 'cheque', 'RCT-20260307-A4944777', NULL, NULL, 'success', 'Being payment for tourism', 34, '2026-03-07 23:52:41', '2026-03-07 23:52:41'),
(110, 12, 94, 56.00, '2026-03-10 21:19:49', 'mobile_money', 'RCT-20260310-AF5288E7', NULL, NULL, 'success', 'Part pay', 34, '2026-03-10 21:19:49', '2026-03-10 21:19:49'),
(111, 16, 407, 1001.00, '2026-03-11 21:30:45', 'mobile_money', 'RCT-20260311-E0693691', NULL, NULL, 'success', 'Being partment for excussion programme', 34, '2026-03-11 21:26:30', '2026-03-11 21:30:45'),
(112, 9, 403, 643.00, '2026-03-12 06:15:21', 'mobile_money', 'RCT-20260312-9F98B433', NULL, NULL, 'success', 'Full payment for this term fee', 34, '2026-03-12 06:15:21', '2026-03-12 06:15:21'),
(113, 9, 403, 5.00, '2026-03-12 06:21:49', 'bank_transfer', 'RCT-20260312-B7DC1645', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-12 06:21:49', '2026-03-12 06:21:49'),
(114, 10, 422, 2108.00, '2026-03-12 11:31:49', 'mobile_money', 'RCT-20260312-4259DDB8', NULL, NULL, 'success', 'Full payment for this term fee', 34, '2026-03-12 11:31:49', '2026-03-12 11:31:49'),
(115, 10, 440, 1499.00, '2026-03-12 12:29:42', 'bank_transfer', 'RCT-20260312-1B67BC75', NULL, NULL, 'success', 'Being partment for excussion programme', 34, '2026-03-12 12:29:42', '2026-03-12 12:29:42'),
(116, 10, 445, 575.00, '2026-03-12 13:19:59', 'bank_transfer', 'RCT-20260312-D7F04C82', NULL, NULL, 'success', 'Full payment', 34, '2026-03-12 13:19:59', '2026-03-12 13:19:59'),
(117, 16, 448, 300.00, '2026-03-12 13:20:53', 'mobile_money', 'RCT-20260312-DB52EAFE', NULL, NULL, 'success', 'Part payment for this term fee', 34, '2026-03-12 13:20:53', '2026-03-12 13:20:53'),
(118, 9, 454, 1495.00, '2026-03-12 13:42:54', 'mobile_money', 'RCT-20260312-2DE9B768', NULL, NULL, 'success', 'Full payment', 34, '2026-03-12 13:42:54', '2026-03-12 13:42:54'),
(119, 9, 459, 1495.00, '2026-03-12 14:03:27', 'mobile_money', 'id-003', NULL, NULL, 'success', 'Full payment - prompt pay, good!', 34, '2026-03-12 14:03:27', '2026-03-12 14:03:27'),
(120, 9, 474, 500.00, '2026-03-12 18:04:14', 'mobile_money', 'rc-930/ff', NULL, NULL, 'success', 'Full payment for this term fee - v-pay', 34, '2026-03-12 18:04:14', '2026-03-12 18:04:14'),
(121, 10, 475, 567.00, '2026-03-12 18:09:23', 'mobile_money', 'rrct-334-gg', NULL, NULL, 'success', 'Full payment for this term fee - C-Pay', 34, '2026-03-12 18:09:23', '2026-03-12 18:09:23'),
(122, 9, 494, 500.00, '2026-03-12 19:22:50', 'mobile_money', 'RCT-20260312-28A3E754', NULL, NULL, 'success', 'Being partment for excussion', 34, '2026-03-12 19:22:50', '2026-03-12 19:22:50'),
(123, 10, 495, 567.00, '2026-03-12 19:23:32', 'mobile_money', 'RCT-20260312-2B468563', NULL, NULL, 'success', 'Full payment', 34, '2026-03-12 19:23:32', '2026-03-12 19:23:32'),
(124, 16, 503, 1000.00, '2026-03-12 19:34:44', 'bank_transfer', 'rff-344-fd', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-12 19:34:44', '2026-03-12 19:34:44'),
(125, 16, 503, 300.00, '2026-03-12 19:35:52', 'bank_transfer', 'RCT-20260312-5986D3E6', NULL, NULL, 'success', 'Library', 34, '2026-03-12 19:35:52', '2026-03-12 19:35:52'),
(126, 16, 503, 5000.00, '2026-03-12 19:44:08', 'mobile_money', 'RCT-20260312-7888A1E0', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-12 19:44:08', '2026-03-12 19:44:08'),
(128, 9, 504, 500.00, '2026-03-13 10:54:59', 'mobile_money', 'RCT-20260313-D034EDAE', NULL, NULL, 'success', 'Library', 34, '2026-03-13 10:54:59', '2026-03-13 10:54:59'),
(129, 16, 498, 1001.00, '2026-03-13 11:23:26', 'cash', 'RCT-20260313-3AE7BE6C', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-13 11:23:26', '2026-03-13 11:23:26'),
(130, 16, 508, 120.00, '2026-03-13 11:58:12', 'cash', 'RCT-20260313-BD4C86F1', NULL, NULL, 'success', 'P.T.A Dues', 34, '2026-03-13 11:58:12', '2026-03-13 11:58:12'),
(131, 16, 508, 1000.00, '2026-03-13 12:00:26', 'bank_transfer', 'RCT-20260313-C5AC3183', NULL, NULL, 'success', 'Being partment for excussion programme', 34, '2026-03-13 12:00:26', '2026-03-13 12:00:26'),
(132, 9, 539, 3000.00, '2026-03-13 00:17:50', 'cash', 'RCT-20260313-B5E64752', NULL, NULL, 'success', 'Being partment for excussion', 34, '2026-03-13 23:18:54', '2026-03-14 00:17:50');

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

--
-- 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, 'New Proswoan International Academy. (The Pride of Volta)', 'proswoanacademy@gmail.com', '(+233) 0592409087', 'Post Office Box 56, La-Accra, Opposite Ariel View Hotel De Mark', 'Excellence is Our Hall Mark Everyday', '1770584402_5faa95af53900b681da7.png', '1770584402_13c364c90a97ed288e9e.jpg', '1770584402_89c5d3267300fcd9264e.jpg', 11, 11, NULL, NULL);

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

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

CREATE TABLE `sms_logs` (
  `id` int(11) NOT NULL,
  `batch_id` varchar(50) DEFAULT NULL,
  `recipient` varchar(20) NOT NULL,
  `recipient_name` varchar(255) DEFAULT NULL,
  `recipient_type` varchar(50) DEFAULT NULL,
  `message` text NOT NULL,
  `type` varchar(50) DEFAULT 'general',
  `status` enum('PENDING','QUEUED','SUBMITTED','DELIVERED','NOT_DELIVERED','REJECTED','PROHIBITED','EXPIRED','FAILED') DEFAULT 'PENDING',
  `status_message` varchar(255) DEFAULT NULL,
  `reference` varchar(100) DEFAULT NULL,
  `api_response` text DEFAULT NULL,
  `sent_by` int(11) DEFAULT NULL,
  `sent_at` datetime 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 `sms_logs`
--

INSERT INTO `sms_logs` (`id`, `batch_id`, `recipient`, `recipient_name`, `recipient_type`, `message`, `type`, `status`, `status_message`, `reference`, `api_response`, `sent_by`, `sent_at`, `created_at`, `updated_at`) VALUES
(1, 'BATCH_1772908631_69ac70570b1f2', '0249710432', 'AGBENYUI GIDEON (Parent)', 'class_parents', 'There will be a meeting for parents of form 3 students', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772908631_69ac70570b1f2_0249710432', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"4e0988fc-5131-4549-a891-668c2ffa7375\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1253},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 18:37:14', '2026-03-07 18:37:14', '2026-03-07 18:37:14'),
(2, 'BATCH_1772908631_69ac70570b1f2', '0249755593', 'FRIMPONG DORIS (Parent)', 'class_parents', 'There will be a meeting for parents of form 3 students', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772908631_69ac70570b1f2_0249755593', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"479e7625-77b9-4baa-9b5a-c2b1e5d63923\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1252},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 18:37:16', '2026-03-07 18:37:16', '2026-03-07 18:37:16'),
(3, 'BATCH_1772911842_69ac7ce21195d', '0249710432', 'AGBENYUI GIDEON (Parent)', 'class_parents', 'There will be a metting for bs1 parents.\r\nvenue: assembly hall\r\ntime: 10:30am\r\ndate: 12th march, 2026', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772911842_69ac7ce21195d_0249710432', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"e803286a-b2ce-4470-9a36-c7fd5cc840af\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1251},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 19:30:44', '2026-03-07 19:30:44', '2026-03-07 19:30:44'),
(4, 'BATCH_1772911842_69ac7ce21195d', '0249755593', 'FRIMPONG DORIS (Parent)', 'class_parents', 'There will be a metting for bs1 parents.\r\nvenue: assembly hall\r\ntime: 10:30am\r\ndate: 12th march, 2026', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772911842_69ac7ce21195d_0249755593', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"95e95c02-3360-4349-8a7f-0775695b85f8\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1250},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 19:30:48', '2026-03-07 19:30:48', '2026-03-07 19:30:48'),
(5, 'BATCH_1772912546_69ac7fa2b8f76', '0249710432', 'AGBENYUI GIDEON (Parent)', 'class_parents', 'We are glad to inform you that...', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772912546_69ac7fa2b8f76_0249710432', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"f36179d6-e4c7-4bc6-b27b-573ebd1cbda2\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1249},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 19:42:29', '2026-03-07 19:42:29', '2026-03-07 19:42:29'),
(6, 'BATCH_1772912546_69ac7fa2b8f76', '0249755593', 'FRIMPONG DORIS (Parent)', 'class_parents', 'We are glad to inform you that...', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772912546_69ac7fa2b8f76_0249755593', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"ac59c0d5-7d76-4b0c-ac16-fdb395113ab3\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1248},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 19:42:32', '2026-03-07 19:42:32', '2026-03-07 19:42:32'),
(7, 'BATCH_1772917364_69ac92748722c', '77777', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_77777', '[]', 34, '2026-03-07 21:02:44', '2026-03-07 21:02:44', '2026-03-07 21:02:44'),
(8, 'BATCH_1772917364_69ac92748722c', '55', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_55', '[]', 34, '2026-03-07 21:02:45', '2026-03-07 21:02:45', '2026-03-07 21:02:45'),
(9, 'BATCH_1772917364_69ac92748722c', '0249755593', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0249755593', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"474a8a4e-2561-4ef8-a03f-a484f90dd082\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1247},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:02:49', '2026-03-07 21:02:49', '2026-03-07 21:02:49'),
(10, 'BATCH_1772917364_69ac92748722c', '0249755593', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0249755593', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"98751e24-aa58-416f-8467-4d006da3aecc\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1246},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:02:52', '2026-03-07 21:02:52', '2026-03-07 21:02:52'),
(11, 'BATCH_1772917364_69ac92748722c', '0249111111', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0249111111', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"b5e10d2b-3e5a-4c46-9e7c-7e4eb8137661\",\"recipient\":\"233249111111\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1245},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:02:54', '2026-03-07 21:02:54', '2026-03-07 21:02:54'),
(12, 'BATCH_1772917364_69ac92748722c', '0249999999', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0249999999', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"815a98c2-eac6-4dbf-ae21-d2f8451aa6a2\",\"recipient\":\"233249999999\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1244},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:02:57', '2026-03-07 21:02:57', '2026-03-07 21:02:57'),
(13, 'BATCH_1772917364_69ac92748722c', '055', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_055', '[]', 34, '2026-03-07 21:02:58', '2026-03-07 21:02:58', '2026-03-07 21:02:58'),
(14, 'BATCH_1772917364_69ac92748722c', '0555555555', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0555555555', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"07446eec-ee59-4f8f-8c37-0b580ab15aae\",\"recipient\":\"233555555555\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1243},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:03:00', '2026-03-07 21:03:00', '2026-03-07 21:03:00'),
(15, 'BATCH_1772917364_69ac92748722c', '0200000000', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0200000000', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"49f52755-a904-4631-b538-ff416f8e6e74\",\"recipient\":\"233200000000\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1242},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:03:02', '2026-03-07 21:03:02', '2026-03-07 21:03:02'),
(16, 'BATCH_1772917364_69ac92748722c', '049755593', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_049755593', '{\"success\":true,\"data\":{\"message\":\"No valid number in recipients!\",\"status\":\"error\"},\"message\":\"SMS sent (unconfirmed)\"}', 34, '2026-03-07 21:03:04', '2026-03-07 21:03:04', '2026-03-07 21:03:04'),
(17, 'BATCH_1772917364_69ac92748722c', '0249710433', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0249710433', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"01738526-ebd7-407c-8896-b8bc4455a1ba\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1241},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:03:06', '2026-03-07 21:03:06', '2026-03-07 21:03:06'),
(18, 'BATCH_1772917364_69ac92748722c', '0300', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_0300', '[]', 34, '2026-03-07 21:03:07', '2026-03-07 21:03:07', '2026-03-07 21:03:07'),
(19, 'BATCH_1772917364_69ac92748722c', '02497555934', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_02497555934', '[]', 34, '2026-03-07 21:03:07', '2026-03-07 21:03:07', '2026-03-07 21:03:07'),
(20, 'BATCH_1772917364_69ac92748722c', '9999', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_9999', '[]', 34, '2026-03-07 21:03:08', '2026-03-07 21:03:08', '2026-03-07 21:03:08'),
(21, 'BATCH_1772917364_69ac92748722c', '76', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_76', '[]', 34, '2026-03-07 21:03:08', '2026-03-07 21:03:08', '2026-03-07 21:03:08'),
(22, 'BATCH_1772917364_69ac92748722c', '9654', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_9654', '[]', 34, '2026-03-07 21:03:09', '2026-03-07 21:03:09', '2026-03-07 21:03:09'),
(23, 'BATCH_1772917364_69ac92748722c', '5453', ' ', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_5453', '[]', 34, '2026-03-07 21:03:09', '2026-03-07 21:03:09', '2026-03-07 21:03:09'),
(24, 'BATCH_1772917364_69ac92748722c', '888', '777 877', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_888', '[]', 34, '2026-03-07 21:03:10', '2026-03-07 21:03:10', '2026-03-07 21:03:10'),
(25, 'BATCH_1772917364_69ac92748722c', '8080', 'GFHF 4HH', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_8080', '[]', 34, '2026-03-07 21:03:10', '2026-03-07 21:03:10', '2026-03-07 21:03:10'),
(26, 'BATCH_1772917364_69ac92748722c', '0249710432', 'Mercy Mad. Dogbey', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_0249710432', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"2c7362ea-538b-445d-a777-5a9872593865\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1240},\"message\":\"SMS sent successfully\"}', 34, '2026-03-07 21:03:13', '2026-03-07 21:03:13', '2026-03-07 21:03:13'),
(27, 'BATCH_1772917364_69ac92748722c', '111111111', 'pot2 pot', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772917364_69ac92748722c_111111111', '{\"success\":true,\"data\":{\"message\":\"No valid number in recipients!\",\"status\":\"error\"},\"message\":\"SMS sent (unconfirmed)\"}', 34, '2026-03-07 21:03:15', '2026-03-07 21:03:15', '2026-03-07 21:03:15'),
(28, 'BATCH_1772917364_69ac92748722c', '555', 'rtgt fff', 'all_parents', 'There will Fooball Match on our campus:\r\nDate: 20th March, 2026 to 31st March, 2026\r\nTime: 10:00:am to 5:00pm each day', 'general', 'FAILED', NULL, 'BATCH_1772917364_69ac92748722c_555', '[]', 34, '2026-03-07 21:03:16', '2026-03-07 21:03:16', '2026-03-07 21:03:16'),
(29, 'BATCH_1772921269_69aca1b5c7674', '0249710432', 'AGBENYUI GIDEON (Parent)', 'class_parents', 'cgeckings22', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772921269_69aca1b5c7674_0249710432', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"BATCH_1772921269_69aca1b5c7674_0249710432\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"b04e252e-4035-4949-a847-20e472f7bb59\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1239},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:07:52', '2026-03-07 22:07:52', '2026-03-07 22:07:52'),
(30, 'BATCH_1772921269_69aca1b5c7674', '0249755593', 'FRIMPONG DORIS (Parent)', 'class_parents', 'cgeckings22', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772921269_69aca1b5c7674_0249755593', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"BATCH_1772921269_69aca1b5c7674_0249755593\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"7ad74a8b-20cd-422c-aba7-99d93b9ea663\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1238},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:07:55', '2026-03-07 22:07:55', '2026-03-07 22:07:55'),
(31, 'BATCH_1772921269_69aca1b5c7674', '024509916277', 'Senyo Daniel (Parent)', 'class_parents', 'cgeckings22', 'general', '', 'Invalid phone number format: 024509916277', 'BATCH_1772921269_69aca1b5c7674_024509916277', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"BATCH_1772921269_69aca1b5c7674_0249755593\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"7ad74a8b-20cd-422c-aba7-99d93b9ea663\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1238},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:07:55', '2026-03-07 22:07:55', '2026-03-07 22:07:55'),
(32, 'BATCH_1772921269_69aca1b5c7674', '0592409087', 'Vedzo Aggie (Parent)', 'class_parents', 'cgeckings22', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772921269_69aca1b5c7674_0592409087', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"BATCH_1772921269_69aca1b5c7674_0592409087\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"66826a5a-6f61-4978-abea-513001e058ce\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1237},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:07:58', '2026-03-07 22:07:58', '2026-03-07 22:07:58'),
(33, 'BATCH_1772922433_69aca6415d4df', '0249710432', 'AGBENYUI GIDEON (Parent)', 'class_parents', 'Hi. There', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922433_69aca6415d4df_0249710432', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"BATCH_1772922433_69aca6415d4df_0249710432\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"90c8c9cf-7480-40d4-bdf7-675542f1124f\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1236},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:27:16', '2026-03-07 22:27:16', '2026-03-07 22:27:16'),
(34, 'BATCH_1772922433_69aca6415d4df', '0249755593', 'FRIMPONG DORIS (Parent)', 'class_parents', 'Hi. There', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922433_69aca6415d4df_0249755593', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"BATCH_1772922433_69aca6415d4df_0249755593\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"0e6bfad6-4ad5-4c3b-86d5-fa66f3b277db\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1235},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:27:18', '2026-03-07 22:27:18', '2026-03-07 22:27:18'),
(35, 'BATCH_1772922433_69aca6415d4df', '024509916277', 'Senyo Daniel (Parent)', 'class_parents', 'Hi. There', 'general', '', 'Invalid phone number format: 024509916277', 'BATCH_1772922433_69aca6415d4df_024509916277', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"BATCH_1772922433_69aca6415d4df_0249755593\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"0e6bfad6-4ad5-4c3b-86d5-fa66f3b277db\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1235},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:27:18', '2026-03-07 22:27:18', '2026-03-07 22:27:18'),
(36, 'BATCH_1772922433_69aca6415d4df', '0592409087', 'Vedzo Aggie (Parent)', 'class_parents', 'Hi. There', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922433_69aca6415d4df_0592409087', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"BATCH_1772922433_69aca6415d4df_0592409087\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"fd0588b6-52be-4fab-914d-c2dea3ab0d1f\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1234},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:27:21', '2026-03-07 22:27:21', '2026-03-07 22:27:21'),
(37, 'BATCH_1772922731_69aca76b651fc', '77777', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 77777', 'BATCH_1772922731_69aca76b651fc_77777', NULL, 34, '2026-03-07 22:32:11', '2026-03-07 22:32:11', '2026-03-07 22:32:11'),
(38, 'BATCH_1772922731_69aca76b651fc', '55', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 55', 'BATCH_1772922731_69aca76b651fc_55', NULL, 34, '2026-03-07 22:32:11', '2026-03-07 22:32:11', '2026-03-07 22:32:11'),
(39, 'BATCH_1772922731_69aca76b651fc', '0249755593', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0249755593', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249755593\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"e217bde1-0d7a-4996-a5d2-1987aab34dbc\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1233},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:15', '2026-03-07 22:32:15', '2026-03-07 22:32:15'),
(40, 'BATCH_1772922731_69aca76b651fc', '0249755593', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0249755593', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249755593\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"52139827-b257-4267-94a4-99dc437505e0\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1232},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:17', '2026-03-07 22:32:17', '2026-03-07 22:32:17'),
(41, 'BATCH_1772922731_69aca76b651fc', '0249111111', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0249111111', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249111111\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249111111\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"89408416-4a57-4b30-a3ae-17de7a8cbf90\",\"recipient\":\"233249111111\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1231},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:20', '2026-03-07 22:32:20', '2026-03-07 22:32:20'),
(42, 'BATCH_1772922731_69aca76b651fc', '0249999999', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0249999999', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249999999\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249999999\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"6d68b9cc-857e-4c1d-9b63-ed62a59c43cf\",\"recipient\":\"233249999999\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1230},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:23', '2026-03-07 22:32:23', '2026-03-07 22:32:23'),
(43, 'BATCH_1772922731_69aca76b651fc', '055', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 055', 'BATCH_1772922731_69aca76b651fc_055', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249999999\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249999999\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"6d68b9cc-857e-4c1d-9b63-ed62a59c43cf\",\"recipient\":\"233249999999\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1230},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:24', '2026-03-07 22:32:24', '2026-03-07 22:32:24'),
(44, 'BATCH_1772922731_69aca76b651fc', '0555555555', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0555555555', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233555555555\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0555555555\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"fbadd1cd-004c-4564-9471-f4d8f4e2b90e\",\"recipient\":\"233555555555\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1229},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:27', '2026-03-07 22:32:27', '2026-03-07 22:32:27'),
(45, 'BATCH_1772922731_69aca76b651fc', '0200000000', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0200000000', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233200000000\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0200000000\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"9acd274d-76c5-458e-8c47-8e008dd9349a\",\"recipient\":\"233200000000\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1228},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:29', '2026-03-07 22:32:29', '2026-03-07 22:32:29'),
(46, 'BATCH_1772922731_69aca76b651fc', '049755593', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 049755593', 'BATCH_1772922731_69aca76b651fc_049755593', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233200000000\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0200000000\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"9acd274d-76c5-458e-8c47-8e008dd9349a\",\"recipient\":\"233200000000\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1228},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:30', '2026-03-07 22:32:30', '2026-03-07 22:32:30'),
(47, 'BATCH_1772922731_69aca76b651fc', '0249710433', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0249710433', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:35', '2026-03-07 22:32:35', '2026-03-07 22:32:35'),
(48, 'BATCH_1772922731_69aca76b651fc', '0300', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 0300', 'BATCH_1772922731_69aca76b651fc_0300', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:36', '2026-03-07 22:32:36', '2026-03-07 22:32:36'),
(49, 'BATCH_1772922731_69aca76b651fc', '02497555934', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 02497555934', 'BATCH_1772922731_69aca76b651fc_02497555934', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:36', '2026-03-07 22:32:36', '2026-03-07 22:32:36'),
(50, 'BATCH_1772922731_69aca76b651fc', '9999', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 9999', 'BATCH_1772922731_69aca76b651fc_9999', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:37', '2026-03-07 22:32:37', '2026-03-07 22:32:37'),
(51, 'BATCH_1772922731_69aca76b651fc', '76', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 76', 'BATCH_1772922731_69aca76b651fc_76', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:37', '2026-03-07 22:32:37', '2026-03-07 22:32:37'),
(52, 'BATCH_1772922731_69aca76b651fc', '9654', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 9654', 'BATCH_1772922731_69aca76b651fc_9654', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:38', '2026-03-07 22:32:38', '2026-03-07 22:32:38'),
(53, 'BATCH_1772922731_69aca76b651fc', '5453', ' ', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 5453', 'BATCH_1772922731_69aca76b651fc_5453', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:38', '2026-03-07 22:32:38', '2026-03-07 22:32:38'),
(54, 'BATCH_1772922731_69aca76b651fc', '888', '777 877', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 888', 'BATCH_1772922731_69aca76b651fc_888', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:39', '2026-03-07 22:32:39', '2026-03-07 22:32:39'),
(55, 'BATCH_1772922731_69aca76b651fc', '8080', 'GFHF 4HH', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 8080', 'BATCH_1772922731_69aca76b651fc_8080', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710433\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710433\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"72a4c0a2-8021-43f1-811a-8b2160f46a54\",\"recipient\":\"233249710433\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1227},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:39', '2026-03-07 22:32:39', '2026-03-07 22:32:39'),
(56, 'BATCH_1772922731_69aca76b651fc', '0249710432', 'Mercy Mad. Dogbey', 'all_parents', 'Testing Message: Hi, there', 'general', 'SUBMITTED', 'SMS submitted', 'BATCH_1772922731_69aca76b651fc_0249710432', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710432\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"848860e5-50e2-4401-8ac6-12702a28cf1e\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1226},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:42', '2026-03-07 22:32:42', '2026-03-07 22:32:42'),
(57, 'BATCH_1772922731_69aca76b651fc', '111111111', 'pot2 pot', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 111111111', 'BATCH_1772922731_69aca76b651fc_111111111', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710432\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"848860e5-50e2-4401-8ac6-12702a28cf1e\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1226},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:43', '2026-03-07 22:32:43', '2026-03-07 22:32:43'),
(58, 'BATCH_1772922731_69aca76b651fc', '555', 'rtgt fff', 'all_parents', 'Testing Message: Hi, there', 'general', '', 'Invalid phone number format: 555', 'BATCH_1772922731_69aca76b651fc_555', '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"BATCH_1772922731_69aca76b651fc_0249710432\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"848860e5-50e2-4401-8ac6-12702a28cf1e\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1226},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 22:32:43', '2026-03-07 22:32:43', '2026-03-07 22:32:43'),
(59, 'PAYMENT_RCT-20260307-2CD284B2', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 Proswoan International Academy\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 100.00\nPaid As: Feeding Fee\nMethod: Mobile Money\nReceipt: RCT-20260307-2CD284B2\nDate: 07/03/2026 11:20 PM\nOutstanding: GH¢ 134.00', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260307-2CD284B2\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"fa2b9d04-a3ee-4e42-bbf3-d62d1b6a4281\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1222},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 23:20:48', '2026-03-07 23:20:48', '2026-03-07 23:20:48'),
(60, 'PAYMENT_RCT-20260307-3B00E56D', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 Proswoan International Academy\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 18.00\nPaid As: Being partment for excussion programme\nMethod: Bank Transfer\nReceipt: RCT-20260307-3B00E56D\nDate: 07/03/2026 11:24 PM\nBalance: GH¢ 116.00', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260307-3B00E56D\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"07982fde-c075-43db-8acd-10063810081e\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1218},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 23:24:34', '2026-03-07 23:24:34', '2026-03-07 23:24:34'),
(61, 'PAYMENT_RCT-20260307-6129C783', '233249755593', 'FRIMPONG DORIS ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: FRIMPONG DORIS \nAmount: GH¢ 10.00\nPaid As: P.T.A Dues\nMethod: Cash\nReceipt: RCT-20260307-6129C783\nDate: 07/03/2026 11:34 PM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"PAYMENT_RCT-20260307-6129C783\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"f72299a2-d704-4c53-9ea3-67f2bdf2f790\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1214},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 23:34:47', '2026-03-07 23:34:47', '2026-03-07 23:34:47'),
(62, 'PAYMENT_RCT-20260307-6C699E5C', '024509916277', 'Senyo Daniel ', 'parent', 'Payment receipt for GH¢ 73.00', 'payment', '', 'Invalid phone number format', NULL, NULL, 34, '2026-03-07 23:37:42', '2026-03-07 23:37:42', '2026-03-07 23:37:42'),
(63, 'PAYMENT_RCT-20260307-8CA1682A', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 13.00\nPaid As: Part payment for this term fee\nMethod: Mobile Money\nReceipt: RCT-20260307-8CA1682A\nDate: 07/03/2026 11:46 PM\nBalance: GH¢ 103.00', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260307-8CA1682A\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"bdba5922-a776-4af1-867f-272b4b073635\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1210},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 23:46:23', '2026-03-07 23:46:23', '2026-03-07 23:46:23'),
(64, 'PAYMENT_RCT-20260307-8FA1D2BC', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 103.00\nPaid As: Payment for Bus -User Fee\nMethod: Mobile Money\nReceipt: RCT-20260307-8FA1D2BC\nDate: 07/03/2026 11:47 PM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260307-8FA1D2BC\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"1bd6205d-5f6f-4d92-b000-aac119aaeb7b\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1206},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 23:47:08', '2026-03-07 23:47:08', '2026-03-07 23:47:08'),
(65, 'PAYMENT_RCT-20260307-915217BA', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 1.00\nPaid As: Being partment for excussion \nMethod: Cash\nReceipt: RCT-20260307-915217BA\nDate: 07/03/2026 11:47 PM\nOverpaid: GH¢ 1.00', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260307-915217BA\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"d1e50543-1cdd-45fa-9e42-bfa53091f0c8\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1202},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 23:47:35', '2026-03-07 23:47:35', '2026-03-07 23:47:35'),
(66, 'PAYMENT_RCT-20260307-A4944777', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 8.00\nPaid As: Being payment for tourism\nMethod: Cheque\nReceipt: RCT-20260307-A4944777\nDate: 07/03/2026 11:52 PM\nOverpaid: GH¢ 9.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260307-A4944777\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"97f6d29e-1e5f-4c53-95e3-0f56ee9c19c8\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1198},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-07 23:52:43', '2026-03-07 23:52:43', '2026-03-07 23:52:43'),
(67, 'PAYMENT_RCT-20260311-E0693691', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 1,000.00\nPaid As: Being partment for excussion programme\nMethod: Mobile Money\nReceipt: RCT-20260311-E0693691\nDate: 11/03/2026 09:26 PM\nBalance: GH¢ 40.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260311-E0693691\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"7cb3dbd3-7f89-4bb9-ba6b-11481cccc1c1\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1194},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-11 21:26:36', '2026-03-11 21:26:36', '2026-03-11 21:26:36'),
(68, 'PAYMENT_RCT-20260312-9F98B433', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 643.00\nPaid As: Full payment for this term fee\nMethod: Mobile Money\nReceipt: RCT-20260312-9F98B433\nDate: 12/03/2026 06:15 AM\nFully paid. Thank you!', 'payment', 'FAILED', 'CURL Error: Could not resolve host: sms.arkesel.com', NULL, '{\"success\":false,\"status\":\"FAILED\",\"status_message\":\"CURL Error: Could not resolve host: sms.arkesel.com\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_RCT-20260312-9F98B433\",\"data\":{\"success\":false,\"message\":\"CURL Error: Could not resolve host: sms.arkesel.com\"}}', 34, '2026-03-12 06:15:21', '2026-03-12 06:15:21', '2026-03-12 06:15:21'),
(69, 'PAYMENT_RCT-20260312-B7DC1645', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 5.00\nPaid As: P.T.A Dues\nMethod: Bank Transfer\nReceipt: RCT-20260312-B7DC1645\nDate: 12/03/2026 06:21 AM\nOverpaid: GH¢ 5.00 - Thank you!', 'payment', 'FAILED', 'CURL Error: Could not resolve host: sms.arkesel.com', NULL, '{\"success\":false,\"status\":\"FAILED\",\"status_message\":\"CURL Error: Could not resolve host: sms.arkesel.com\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_RCT-20260312-B7DC1645\",\"data\":{\"success\":false,\"message\":\"CURL Error: Could not resolve host: sms.arkesel.com\"}}', 34, '2026-03-12 06:21:49', '2026-03-12 06:21:49', '2026-03-12 06:21:49'),
(70, 'PAYMENT_RCT-20260312-4259DDB8', '233249755593', 'FRIMPONG DORIS ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: FRIMPONG DORIS \nAmount: GH¢ 2,108.00\nPaid As: Full payment for this term fee\nMethod: Mobile Money\nReceipt: RCT-20260312-4259DDB8\nDate: 12/03/2026 11:31 AM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"PAYMENT_RCT-20260312-4259DDB8\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"46d911c2-4079-4e2a-98b5-2726f38f93d2\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1189},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 11:31:53', '2026-03-12 11:31:53', '2026-03-12 11:31:53'),
(71, 'PAYMENT_RCT-20260312-1B67BC75', '233249755593', 'FRIMPONG DORIS ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: FRIMPONG DORIS \nAmount: GH¢ 1,499.00\nPaid As: Being partment for excussion programme\nMethod: Bank Transfer\nReceipt: RCT-20260312-1B67BC75\nDate: 12/03/2026 12:29 PM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"PAYMENT_RCT-20260312-1B67BC75\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"19df911e-1f48-40a5-86f2-60fcdb94f788\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1185},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 12:29:44', '2026-03-12 12:29:44', '2026-03-12 12:29:44'),
(72, 'PAYMENT_RCT-20260312-D7F04C82', '233249755593', 'FRIMPONG DORIS ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: FRIMPONG DORIS \nAmount: GH¢ 575.00\nPaid As: Full payment\nMethod: Bank Transfer\nReceipt: RCT-20260312-D7F04C82\nDate: 12/03/2026 01:19 PM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"PAYMENT_RCT-20260312-D7F04C82\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"dcd1671a-8fac-460a-bf4a-bad943365a6e\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1180},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 13:20:04', '2026-03-12 13:20:04', '2026-03-12 13:20:04'),
(73, 'PAYMENT_RCT-20260312-DB52EAFE', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 300.00\nPaid As: Part payment for this term fee\nMethod: Mobile Money\nReceipt: RCT-20260312-DB52EAFE\nDate: 12/03/2026 01:20 PM\nBalance: GH¢ 305.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260312-DB52EAFE\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"91fdbf21-3148-4508-a68a-71e2d3982a48\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1176},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 13:20:57', '2026-03-12 13:20:57', '2026-03-12 13:20:57'),
(74, 'PAYMENT_RCT-20260312-2DE9B768', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 1,495.00\nPaid As: Full payment\nMethod: Mobile Money\nReceipt: RCT-20260312-2DE9B768\nDate: 12/03/2026 01:42 PM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_RCT-20260312-2DE9B768\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"9c77dd2e-49ba-4c4f-8b8a-b0b12c460c33\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1171},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 13:42:57', '2026-03-12 13:42:57', '2026-03-12 13:42:57'),
(75, 'PAYMENT_id-003', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 1,495.00\nPaid As: Full payment\nMethod: Mobile Money\nReceipt: id-003\nDate: 12/03/2026 02:03 PM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_id-003\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"0d885cf6-3857-4bec-9184-db3b1c6e6c20\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1167},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 14:03:30', '2026-03-12 14:03:30', '2026-03-12 14:03:30'),
(76, 'PAYMENT_rc-930/ff', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 500.00\nPaid As: Full payment for this term fee\nMethod: Mobile Money\nReceipt: rc-930/ff\nDate: 12/03/2026 06:04 PM\nBalance: GH¢ 66.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_rc-930\\/ff\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"66199a2b-1f36-4b4e-8239-6278f628c8b3\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1163},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 18:04:18', '2026-03-12 18:04:18', '2026-03-12 18:04:18'),
(77, 'PAYMENT_rrct-334-gg', '233249755593', 'FRIMPONG DORIS ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: FRIMPONG DORIS \nAmount: GH¢ 567.00\nPaid As: Full payment for this term fee\nMethod: Mobile Money\nReceipt: rrct-334-gg\nDate: 12/03/2026 06:09 PM\nFully paid. Thank you!', 'payment', 'FAILED', 'CURL Error: Could not resolve host: sms.arkesel.com', NULL, '{\"success\":false,\"status\":\"FAILED\",\"status_message\":\"CURL Error: Could not resolve host: sms.arkesel.com\",\"recipient\":\"233249755593\",\"reference\":\"PAYMENT_rrct-334-gg\",\"data\":{\"success\":false,\"message\":\"CURL Error: Could not resolve host: sms.arkesel.com\"}}', 34, '2026-03-12 18:09:35', '2026-03-12 18:09:35', '2026-03-12 18:09:35'),
(78, 'PAYMENT_RCT-20260312-28A3E754', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 500.00\nPaid As: Being partment for excussion\nMethod: Mobile Money\nReceipt: RCT-20260312-28A3E754\nDate: 12/03/2026 07:22 PM\nBalance: GH¢ 56.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_RCT-20260312-28A3E754\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"866179ca-1d71-422e-889b-10e14966bb8c\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1159},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 19:22:52', '2026-03-12 19:22:52', '2026-03-12 19:22:52'),
(79, 'PAYMENT_RCT-20260312-2B468563', '233249755593', 'FRIMPONG DORIS ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: FRIMPONG DORIS \nAmount: GH¢ 567.00\nPaid As: Full payment\nMethod: Mobile Money\nReceipt: RCT-20260312-2B468563\nDate: 12/03/2026 07:23 PM\nFully paid. Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249755593\",\"reference\":\"PAYMENT_RCT-20260312-2B468563\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"118dd32d-5b53-4618-86a0-6ce0c0be5ca7\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1154},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 19:23:33', '2026-03-12 19:23:33', '2026-03-12 19:23:33');
INSERT INTO `sms_logs` (`id`, `batch_id`, `recipient`, `recipient_name`, `recipient_type`, `message`, `type`, `status`, `status_message`, `reference`, `api_response`, `sent_by`, `sent_at`, `created_at`, `updated_at`) VALUES
(80, 'PAYMENT_rff-344-fd', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 1,000.00\nPaid As: P.T.A Dues\nMethod: Bank Transfer\nReceipt: rff-344-fd\nDate: 12/03/2026 07:34 PM\nBalance: GH¢ 386.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_rff-344-fd\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"ba210703-f432-449a-93c5-8bd75b2ac2be\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1150},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 19:34:46', '2026-03-12 19:34:46', '2026-03-12 19:34:46'),
(81, 'PAYMENT_RCT-20260312-5986D3E6', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 300.00\nPaid As: Library\nMethod: Bank Transfer\nReceipt: RCT-20260312-5986D3E6\nDate: 12/03/2026 07:35 PM\nBalance: GH¢ 86.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260312-5986D3E6\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"b71a7cc6-4a2e-4cf6-bc50-6eac88fd49ce\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1146},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 19:35:55', '2026-03-12 19:35:55', '2026-03-12 19:35:55'),
(82, 'PAYMENT_RCT-20260312-7888A1E0', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 5,000.00\nPaid As: P.T.A Dues\nMethod: Mobile Money\nReceipt: RCT-20260312-7888A1E0\nDate: 12/03/2026 07:44 PM\nBalance: GH¢ 630.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260312-7888A1E0\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"a8029663-2df5-46cf-8dc9-e18837190609\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1142},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 19:44:11', '2026-03-12 19:44:11', '2026-03-12 19:44:11'),
(83, 'PAYMENT_RCT-20260312-918C752B', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 8,000.00\nPaid As: Library\nMethod: Bank Transfer\nReceipt: RCT-20260312-918C752B\nDate: 12/03/2026 07:50 PM\nBalance: GH¢ 455.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260312-918C752B\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"1feae5b3-0d26-4892-86ce-35dc333f63da\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1138},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-12 19:50:50', '2026-03-12 19:50:50', '2026-03-12 19:50:50'),
(84, 'PAYMENT_RCT-20260313-D034EDAE', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 500.00\nPaid As: Library\nMethod: Mobile Money\nReceipt: RCT-20260313-D034EDAE\nDate: 13/03/2026 10:54 AM\nBalance: GH¢ 131.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_RCT-20260313-D034EDAE\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"fc3d9fd3-1cfc-48b7-9280-072abd1db73d\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1134},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-13 10:55:01', '2026-03-13 10:55:01', '2026-03-13 10:55:01'),
(85, 'PAYMENT_RCT-20260313-3AE7BE6C', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 1,001.00\nPaid As: P.T.A Dues\nMethod: Cash\nReceipt: RCT-20260313-3AE7BE6C\nDate: 13/03/2026 11:23 AM\nBalance: GH¢ 7,454.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260313-3AE7BE6C\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"5e2938e6-e448-4ece-83dc-9948ff0f2118\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1130},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-13 11:23:29', '2026-03-13 11:23:29', '2026-03-13 11:23:29'),
(86, 'PAYMENT_RCT-20260313-BD4C86F1', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 120.00\nPaid As: P.T.A Dues\nMethod: Cash\nReceipt: RCT-20260313-BD4C86F1\nDate: 13/03/2026 11:58 AM\nBalance: GH¢ 3,596.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260313-BD4C86F1\",\"data\":{\"success\":true,\"data\":null,\"message\":\"SMS sent (unconfirmed)\"}}', 34, '2026-03-13 11:58:14', '2026-03-13 11:58:14', '2026-03-13 11:58:14'),
(87, 'PAYMENT_RCT-20260313-C5AC3183', '233592409087', 'Vedzo Aggie ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: Vedzo Aggie \nAmount: GH¢ 1,000.00\nPaid As: Being partment for excussion programme\nMethod: Bank Transfer\nReceipt: RCT-20260313-C5AC3183\nDate: 13/03/2026 12:00 PM\nBalance: GH¢ 2,596.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233592409087\",\"reference\":\"PAYMENT_RCT-20260313-C5AC3183\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"4abaa83f-04b5-4021-96fb-a6dd9300c2f6\",\"recipient\":\"233592409087\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":842},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-13 12:00:31', '2026-03-13 12:00:31', '2026-03-13 12:00:31'),
(88, 'PAYMENT_RCT-20260313-B5E64752', '233249710432', 'AGBENYUI GIDEON ', 'parent', '🏫 New Proswoan International Academy. (The Pride of Volta)\n✅ PAYMENT RECEIPT\nStudent: AGBENYUI GIDEON \nAmount: GH¢ 10,000.00\nPaid As: Being partment for excussion\nMethod: Cash\nReceipt: RCT-20260313-B5E64752\nDate: 13/03/2026 11:18 PM\nBalance: GH¢ 484.00 - Thank you!', 'payment', 'SUBMITTED', 'SMS submitted', NULL, '{\"success\":true,\"status\":\"SUBMITTED\",\"status_message\":\"SMS submitted\",\"recipient\":\"233249710432\",\"reference\":\"PAYMENT_RCT-20260313-B5E64752\",\"data\":{\"success\":true,\"data\":{\"data\":[{\"id\":\"846afd35-0ae0-4468-b95f-528cbc72cbb6\",\"recipient\":\"233249710432\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":3723},\"message\":\"SMS sent successfully\"}}', 34, '2026-03-13 23:18:57', '2026-03-13 23:18:57', '2026-03-13 23:18:57');

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

--
-- Table structure for table `sms_logs_old`
--

CREATE TABLE `sms_logs_old` (
  `id` int(11) NOT NULL,
  `recipient` text DEFAULT NULL,
  `message` text DEFAULT NULL,
  `type` varchar(50) DEFAULT NULL,
  `recipient_type` varchar(50) DEFAULT NULL,
  `recipient_count` int(11) DEFAULT 0,
  `recipients_list` longtext DEFAULT NULL,
  `success_count` int(11) DEFAULT 0,
  `failed_count` int(11) DEFAULT 0,
  `failed_numbers` longtext DEFAULT NULL,
  `reference` varchar(100) DEFAULT NULL,
  `status` enum('pending','sent','failed') DEFAULT 'pending',
  `response` text DEFAULT NULL,
  `sent_by` int(11) DEFAULT NULL,
  `sent_at` datetime 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 `sms_logs_old`
--

INSERT INTO `sms_logs_old` (`id`, `recipient`, `message`, `type`, `recipient_type`, `recipient_count`, `recipients_list`, `success_count`, `failed_count`, `failed_numbers`, `reference`, `status`, `response`, `sent_by`, `sent_at`, `created_at`, `updated_at`) VALUES
(1, '0249710432, 0249755593', 'Checking bulk sms', 'multiple', 'multiple', 2, NULL, 0, 0, NULL, 'SMS_1772834861', 'failed', '{\"success\":false,\"message\":\"Unknown error\",\"response\":{\"data\":[{\"id\":\"57d679e4-1182-4025-9c28-cdaa07165149\",\"recipient\":\"233249710432\"},{\"id\":\"5835d520-82dd-460f-8b6c-04707c78e10b\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1275}}', 34, '2026-03-06 22:07:41', '2026-03-06 22:07:41', '2026-03-06 22:07:41'),
(2, '0249710432, 0249755593', 'Checking bulk sms', 'multiple', 'multiple', 2, NULL, 0, 0, NULL, 'SMS_1772834861', 'failed', '{\"success\":false,\"message\":\"Unknown error\",\"response\":{\"data\":[{\"id\":\"57d679e4-1182-4025-9c28-cdaa07165149\",\"recipient\":\"233249710432\"},{\"id\":\"5835d520-82dd-460f-8b6c-04707c78e10b\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1275}}', 34, '2026-03-06 22:07:41', '2026-03-06 22:07:41', '2026-03-06 22:07:41'),
(3, '0249710432, 0249755593', 'Hi testin sms', 'class_parents', 'class_parents', 2, NULL, 0, 0, NULL, 'SMS_1772835256', 'sent', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"0924b342-15e3-4401-8c37-f75deaf8974e\",\"recipient\":\"233249710432\"},{\"id\":\"22b0c6a9-17d0-425f-8617-168b095373f0\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1273},\"message\":\"SMS sent successfully\",\"valid_count\":2,\"invalid_count\":0,\"invalid\":[]}', 34, '2026-03-06 22:14:16', '2026-03-06 22:14:16', '2026-03-06 22:14:16'),
(4, '0249710432, 0249755593', 'Hi testin sms', 'class_parents', 'class_parents', 2, NULL, 0, 0, NULL, 'SMS_1772835256', 'sent', '{\"success\":true,\"data\":{\"data\":[{\"id\":\"0924b342-15e3-4401-8c37-f75deaf8974e\",\"recipient\":\"233249710432\"},{\"id\":\"22b0c6a9-17d0-425f-8617-168b095373f0\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1273},\"message\":\"SMS sent successfully\",\"valid_count\":2,\"invalid_count\":0,\"invalid\":[]}', 34, '2026-03-06 22:14:16', '2026-03-06 22:14:16', '2026-03-06 22:14:16'),
(5, '0249710432, 8080, 888, 555, 77777...', 'new testing', 'all_parents', 'all_parents', 21, NULL, 0, 0, NULL, 'SMS_1772835640', 'sent', '{\"success\":true,\"data\":{\"message\":\"Some SMS were not delivered because there are invalid phone numbers!\",\"data\":[{\"id\":\"2d5ce8d6-c0da-417c-bcd9-83699dc90dd6\",\"recipient\":\"233249710432\"},{\"id\":\"b173059b-6140-45bf-a8ce-f94c9b3c9c12\",\"recipient\":\"233249755593\"},{\"id\":\"01ac2718-2999-4b28-89bd-4ec9c1b76d8e\",\"recipient\":\"233249111111\"},{\"id\":\"d104fa9d-58b2-4726-9787-6f84c48ce606\",\"recipient\":\"233249999999\"},{\"id\":\"31c62d2d-380e-4c30-916d-c8f1366c44d5\",\"recipient\":\"233555555555\"},{\"id\":\"b18b158f-84f5-4cff-b013-8c1e048459a0\",\"recipient\":\"233200000000\"},{\"id\":\"d1f3aa36-2592-4cba-953f-707bb43eab11\",\"recipient\":\"233249710433\"},{\"invalid numbers\":[\"233049755593\",\"233111111111\"]}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1271},\"message\":\"SMS sent successfully\",\"valid_count\":9,\"invalid_count\":12,\"invalid\":[\"8080\",\"888\",\"555\",\"77777\",\"55\",\"055\",\"0300\",\"02497555934\",\"9999\",\"76\",\"9654\",\"5453\"]}', 34, '2026-03-06 22:20:40', '2026-03-06 22:20:40', '2026-03-06 22:20:40'),
(6, '0249710432, 8080, 888, 555, 77777...', 'new testing', 'all_parents', 'all_parents', 21, NULL, 0, 0, NULL, 'SMS_1772835640', 'sent', '{\"success\":true,\"data\":{\"message\":\"Some SMS were not delivered because there are invalid phone numbers!\",\"data\":[{\"id\":\"2d5ce8d6-c0da-417c-bcd9-83699dc90dd6\",\"recipient\":\"233249710432\"},{\"id\":\"b173059b-6140-45bf-a8ce-f94c9b3c9c12\",\"recipient\":\"233249755593\"},{\"id\":\"01ac2718-2999-4b28-89bd-4ec9c1b76d8e\",\"recipient\":\"233249111111\"},{\"id\":\"d104fa9d-58b2-4726-9787-6f84c48ce606\",\"recipient\":\"233249999999\"},{\"id\":\"31c62d2d-380e-4c30-916d-c8f1366c44d5\",\"recipient\":\"233555555555\"},{\"id\":\"b18b158f-84f5-4cff-b013-8c1e048459a0\",\"recipient\":\"233200000000\"},{\"id\":\"d1f3aa36-2592-4cba-953f-707bb43eab11\",\"recipient\":\"233249710433\"},{\"invalid numbers\":[\"233049755593\",\"233111111111\"]}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1271},\"message\":\"SMS sent successfully\",\"valid_count\":9,\"invalid_count\":12,\"invalid\":[\"8080\",\"888\",\"555\",\"77777\",\"55\",\"055\",\"0300\",\"02497555934\",\"9999\",\"76\",\"9654\",\"5453\"]}', 34, '2026-03-06 22:20:40', '2026-03-06 22:20:40', '2026-03-06 22:20:40'),
(7, '0249710432, 0249755593', 'hello, test 2', 'class_parents', 'class_parents', 2, NULL, 0, 0, NULL, 'SMS_1772841360', 'sent', '{\"success\":true,\"message\":\"Bulk SMS processed\",\"success_count\":2,\"fail_count\":0,\"valid_count\":2,\"invalid_count\":0,\"invalid\":[],\"results\":[{\"success\":true,\"data\":{\"data\":[{\"id\":\"88d9a1ce-b841-49b7-9edd-09037e45e0cf\",\"recipient\":\"233249710432\"},{\"id\":\"f729b158-f652-4812-a649-56ebb7b6f796\",\"recipient\":\"233249755593\"}],\"status\":\"success\",\"main_balance\":0.2,\"sms_balance\":1255},\"message\":\"SMS sent successfully\"}]}', 34, '2026-03-06 23:56:00', '2026-03-06 23:56:00', '2026-03-06 23:56:00');

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

--
-- 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, '2026-03-12 12:09:54', NULL),
(10, 'FRIMPONG', 'DORIS', NULL, 'Female', NULL, '', '69890e84e4045.jpg', NULL, NULL, 1, NULL, 12, 27, NULL, NULL, 'ADM-P0002', '2026-02-08', '', '', '', '', '0249755593', 'proscetech@gmail.com', 'Mad. Fafa', '', '', NULL, '2026-03-12 12:10:04', 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),
(15, 'Senyo', 'Daniel', NULL, 'Male', NULL, '', '69ac8448c30e6.jpg', NULL, NULL, 1, NULL, 12, 27, NULL, NULL, 'adm/44', '2026-03-07', '', '', '', '', '024509916277', '', '', '', '', NULL, '2026-03-12 12:10:19', NULL),
(16, 'Vedzo', 'Aggie', NULL, 'Female', NULL, '', '69ac893d2c158.jpg', NULL, NULL, 1, NULL, 12, 27, NULL, NULL, 'ad-005', '2026-03-07', '', '', '', '', '0592409087', '', '', '', '', NULL, '2026-03-12 12:10:27', NULL),
(17, 'Hazi', 'Ben Kwame', NULL, 'Male', NULL, '', '69ad4a8e29841.jpg', NULL, NULL, 1, NULL, 12, 27, NULL, NULL, 'ad-006', '2026-03-08', '', '', '', '', '', '', '', '', '', NULL, '2026-03-12 12:08:47', 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_login_history`
--

CREATE TABLE `student_login_history` (
  `id` int(9) UNSIGNED NOT NULL,
  `student_user_id` int(9) UNSIGNED NOT NULL,
  `login_time` datetime DEFAULT current_timestamp(),
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `status` enum('success','failed') DEFAULT 'success'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `student_login_history`
--

INSERT INTO `student_login_history` (`id`, `student_user_id`, `login_time`, `ip_address`, `user_agent`, `status`) VALUES
(1, 1, '2026-03-04 14:38:45', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(2, 1, '2026-03-04 19:10:08', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(3, 1, '2026-03-04 19:51:11', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(4, 1, '2026-03-04 21:32:12', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(5, 1, '2026-03-05 19:29:34', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(6, 2, '2026-03-05 20:43:24', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(7, 1, '2026-03-05 21:48:29', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(8, 2, '2026-03-05 22:08:15', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(9, 1, '2026-03-06 19:20:37', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(10, 4, '2026-03-07 20:26:22', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(11, 4, '2026-03-11 22:56:09', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(12, 4, '2026-03-12 07:21:26', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(13, 4, '2026-03-12 21:26:13', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success'),
(14, 4, '2026-03-13 13:25:33', '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0', 'success');

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

--
-- Table structure for table `student_notifications`
--

CREATE TABLE `student_notifications` (
  `id` int(9) UNSIGNED NOT NULL,
  `student_id` int(9) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `type` enum('payment','result','bill','receipt','general') DEFAULT 'general',
  `recipient_type` enum('single','class','department','school') DEFAULT 'single',
  `recipient_id` int(9) UNSIGNED DEFAULT NULL,
  `sent_by` int(9) UNSIGNED DEFAULT NULL,
  `is_read` tinyint(1) DEFAULT 0,
  `created_at` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `student_notifications`
--

INSERT INTO `student_notifications` (`id`, `student_id`, `title`, `message`, `type`, `recipient_type`, `recipient_id`, `sent_by`, `is_read`, `created_at`) VALUES
(1, 9, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-04 14:38:45'),
(2, 9, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-04 19:10:08'),
(3, 9, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-04 19:51:11'),
(4, 9, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-04 21:32:12'),
(5, 9, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-05 19:29:34'),
(6, 10, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 0, '2026-03-05 20:43:24'),
(7, 9, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-05 21:48:29'),
(8, 10, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 0, '2026-03-05 22:08:15'),
(9, 9, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-06 19:20:37'),
(10, 9, 'Meeting', 'There will be a PTA meeting on the 10th of March, 2026. Thank You.', 'general', 'single', NULL, NULL, 1, '2026-03-06 20:45:25'),
(11, 10, 'Meeting', 'There will be a PTA meeting on the 10th of March, 2026. Thank You.', 'general', 'single', NULL, NULL, 0, '2026-03-06 20:45:25'),
(12, 9, 'hi there', 'test 1', 'general', 'single', NULL, NULL, 1, '2026-03-06 21:04:12'),
(13, 10, 'hi there', 'test 1', 'general', 'single', NULL, NULL, 0, '2026-03-06 21:04:12'),
(14, 9, 'reponing', 'We resume tomorrow', 'general', 'single', NULL, NULL, 0, '2026-03-06 23:42:46'),
(15, 10, 'reponing', 'We resume tomorrow', 'general', 'single', NULL, NULL, 0, '2026-03-06 23:42:46'),
(16, 16, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 1, '2026-03-07 20:26:22'),
(17, 16, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 0, '2026-03-11 22:56:09'),
(18, 16, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 0, '2026-03-12 07:21:26'),
(19, 16, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 0, '2026-03-12 21:26:13'),
(20, 16, 'Welcome', 'Welcome to the student portal. You can now view your fees, bills, and results.', 'general', 'single', NULL, NULL, 0, '2026-03-13 13:25:33');

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

--
-- 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 `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),
(38, 34, 1, 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`),
  ADD KEY `idx_fee_entries_fee_system` (`fee_system_id`);

--
-- Indexes for table `fee_systems`
--
ALTER TABLE `fee_systems`
  ADD PRIMARY KEY (`id`),
  ADD KEY `department_id` (`department_id`),
  ADD KEY `idx_fee_systems_academic_year` (`academic_year_id`),
  ADD KEY `idx_fee_systems_term` (`term_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 `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_batch_id` (`batch_id`),
  ADD KEY `idx_recipient` (`recipient`),
  ADD KEY `idx_status` (`status`),
  ADD KEY `idx_sent_at` (`sent_at`);

--
-- Indexes for table `sms_logs_old`
--
ALTER TABLE `sms_logs_old`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_status` (`status`),
  ADD KEY `idx_recipient_type` (`recipient_type`);

--
-- 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_login_history`
--
ALTER TABLE `student_login_history`
  ADD PRIMARY KEY (`id`),
  ADD KEY `student_user_id` (`student_user_id`);

--
-- Indexes for table `student_notifications`
--
ALTER TABLE `student_notifications`
  ADD PRIMARY KEY (`id`),
  ADD KEY `student_id` (`student_id`),
  ADD KEY `idx_recipient` (`recipient_type`,`recipient_id`);

--
-- 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 `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=14;

--
-- 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=109;

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

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

--
-- 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 `payments`
--
ALTER TABLE `payments`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=133;

--
-- 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=25;

--
-- 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(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=89;

--
-- AUTO_INCREMENT for table `sms_logs_old`
--
ALTER TABLE `sms_logs_old`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

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

--
-- 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_login_history`
--
ALTER TABLE `student_login_history`
  MODIFY `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;

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

--
-- 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 `user_roles`
--
ALTER TABLE `user_roles`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=39;

--
-- 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_fee_system` FOREIGN KEY (`fee_system_id`) REFERENCES `fee_systems` (`id`) ON DELETE SET NULL,
  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 `fee_systems`
--
ALTER TABLE `fee_systems`
  ADD CONSTRAINT `fk_fee_systems_academic_year` FOREIGN KEY (`academic_year_id`) REFERENCES `academic_years` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_fee_systems_term` 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;

