إضافة الهوية الجديدة Tripz

This commit is contained in:
Hamza-Ayed
2026-07-29 02:41:05 +03:00
parent b9a97effe5
commit d34550e1ca
6 changed files with 7017 additions and 16 deletions
+16 -16
View File
@@ -1,25 +1,25 @@
-- تُنشأ القواعد فارغة عند أول إقلاع فقط (volume جديد).
-- ⚠️ الأسماء مطابقة لبيئة اللايف الخاصة بك.
CREATE DATABASE IF NOT EXISTS `jorSiroDB` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `intaleqDB1` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- ⚠️ تم تحديث الأسماء وتوليد كلمات مرور جديدة بناءً على طلبك
CREATE DATABASE IF NOT EXISTS `mainDB` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `locationDB` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `intaleq-ridesDB` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `siroTransitDb` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `ridesDB` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `transitDB` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `paymentDB` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- إنشاء المستخدمين وإعطائهم الصلاحيات لكي تتطابق البيئة مع اللايف 100%
CREATE USER IF NOT EXISTS 'intaleqapp-jordan-siro'@'%' IDENTIFIED BY '7B7skfibrexQrGCUG1Y8';
GRANT ALL PRIVILEGES ON `jorSiroDB`.* TO 'intaleqapp-jordan-siro'@'%';
-- إنشاء المستخدمين وإعطائهم الصلاحيات
CREATE USER IF NOT EXISTS 'mainUser'@'%' IDENTIFIED BY 'M4in_Tr!pz_P@ss2026';
GRANT ALL PRIVILEGES ON `mainDB`.* TO 'mainUser'@'%';
CREATE USER IF NOT EXISTS 'intaleqUserDB1'@'%' IDENTIFIED BY 'NANatr7j4d8HzZjAcp00bbsjkdhfjsn';
GRANT ALL PRIVILEGES ON `intaleqDB1`.* TO 'intaleqUserDB1'@'%';
CREATE USER IF NOT EXISTS 'locationUser'@'%' IDENTIFIED BY 'L0c_Tr!pz_P@ss2026';
GRANT ALL PRIVILEGES ON `locationDB`.* TO 'locationUser'@'%';
CREATE USER IF NOT EXISTS 'intaleqLocation'@'%' IDENTIFIED BY '9otdMyiExMTXwnoA32sP';
GRANT ALL PRIVILEGES ON `locationDB`.* TO 'intaleqLocation'@'%';
CREATE USER IF NOT EXISTS 'ridesUser'@'%' IDENTIFIED BY 'R!des_Tr!pz_P@ss2026';
GRANT ALL PRIVILEGES ON `ridesDB`.* TO 'ridesUser'@'%';
CREATE USER IF NOT EXISTS 'intaleq-rides'@'%' IDENTIFIED BY '0bHHMALEj4sqSmdT0avT';
GRANT ALL PRIVILEGES ON `intaleq-ridesDB`.* TO 'intaleq-rides'@'%';
CREATE USER IF NOT EXISTS 'transitUser'@'%' IDENTIFIED BY 'Tr4ns!t_Tr!pz_P@ss2026';
GRANT ALL PRIVILEGES ON `transitDB`.* TO 'transitUser'@'%';
CREATE USER IF NOT EXISTS 'siroTransitUser'@'%' IDENTIFIED BY 'eZiDYxCJ2yyGfC32zG0Z';
GRANT ALL PRIVILEGES ON `siroTransitDb`.* TO 'siroTransitUser'@'%';
CREATE USER IF NOT EXISTS 'paymentUser'@'%' IDENTIFIED BY 'P4ym3nt_Tr!pz_P@ss2026';
GRANT ALL PRIVILEGES ON `paymentDB`.* TO 'paymentUser'@'%';
FLUSH PRIVILEGES;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+359
View File
@@ -0,0 +1,359 @@
USE transitDB;
-- =============================================================
-- schema_transit.sql — قاعدة بيانات منصة مواصلاتي (siroTransitDb)
-- عزل كامل عن main/ride/tracking — ممنوع أي JOIN خارجي
-- الربط بالنظام الرئيسي عبر passenger_id / driver_id فقط
-- =============================================================
SET FOREIGN_KEY_CHECKS = 0;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
-- -----------------------------------------------------------------
-- 1. transit_orgs — المؤسسات (جامعات، مدارس، فنادق، شركات، ناقلون)
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_orgs` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`type` ENUM('university','school','hotel','company','transporter') NOT NULL,
`country` CHAR(2) NOT NULL COMMENT 'JO | SY | EG | ...',
`city` VARCHAR(80) NOT NULL,
`name_ar` VARCHAR(200) NOT NULL,
`name_en` VARCHAR(200) NOT NULL,
`logo_url` VARCHAR(500) DEFAULT NULL,
`campus_polygon` JSON DEFAULT NULL COMMENT 'حدود الحرم — مصفوفة [{lat,lng}]',
`website` VARCHAR(300) DEFAULT NULL,
`contact_phone` VARCHAR(30) DEFAULT NULL,
`contact_email` VARCHAR(150) DEFAULT NULL,
`contract_status` ENUM('trial','active','suspended','terminated') NOT NULL DEFAULT 'trial',
`trial_ends_at` DATE DEFAULT NULL,
`notes` TEXT DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_country_type` (`country`, `type`),
KEY `idx_contract_status` (`contract_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 2. transit_org_links — ربط ناقل ↔ مؤسسة (النمط الثاني)
-- جامعة حكومية لا تملك أسطولاً → تُخدَم بناقل مسجّل
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_org_links` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`institution_id` INT UNSIGNED NOT NULL COMMENT 'org_id للمؤسسة (جامعة/مدرسة)',
`transporter_id` INT UNSIGNED NOT NULL COMMENT 'org_id للناقل (type=transporter)',
`status` ENUM('active','inactive') NOT NULL DEFAULT 'active',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_link` (`institution_id`, `transporter_id`),
KEY `idx_transporter` (`transporter_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 3. transit_org_admins — مشرفو المؤسسة (لوحة تحكم الويب)
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_org_admins` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`org_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(120) NOT NULL,
`phone` VARCHAR(25) NOT NULL,
`role` ENUM('owner','transport_manager','dispatcher') NOT NULL DEFAULT 'transport_manager',
`permissions` JSON DEFAULT NULL COMMENT '{"routes":true,"drivers":true,"roster":true,"broadcast":true}',
`is_active` TINYINT(1) NOT NULL DEFAULT 1,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_phone_org` (`phone`, `org_id`),
KEY `idx_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 4. transit_sessions — جلسات تسجيل دخول مشرف الويب (OTP-based)
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_sessions` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`admin_id` INT UNSIGNED NOT NULL,
`org_id` INT UNSIGNED NOT NULL,
`token_hash` VARCHAR(64) NOT NULL COMMENT 'sha256 للـ session token',
`ip` VARCHAR(45) DEFAULT NULL,
`user_agent` VARCHAR(300) DEFAULT NULL,
`expires_at` TIMESTAMP NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_token` (`token_hash`),
KEY `idx_admin` (`admin_id`),
KEY `idx_expires` (`expires_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 5. transit_vehicles — الباصات والفانات المملوكة للمؤسسة
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_vehicles` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`org_id` INT UNSIGNED NOT NULL,
`plate` VARCHAR(30) NOT NULL,
`make` VARCHAR(50) DEFAULT NULL,
`model` VARCHAR(50) DEFAULT NULL,
`year` SMALLINT DEFAULT NULL,
`color` VARCHAR(30) DEFAULT NULL,
`capacity` TINYINT NOT NULL DEFAULT 30,
`vehicle_type` ENUM('bus','minibus','van','other') NOT NULL DEFAULT 'bus',
`is_active` TINYINT(1) NOT NULL DEFAULT 1,
`notes` VARCHAR(300) DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_plate` (`plate`),
KEY `idx_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 6. transit_drivers — سائقو الباصات (يُنشئهم مشرف المؤسسة)
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_drivers` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`org_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(120) NOT NULL,
`phone` VARCHAR(25) NOT NULL,
`license_number` VARCHAR(50) DEFAULT NULL,
`license_img_url` VARCHAR(500) DEFAULT NULL,
`main_driver_id` VARCHAR(100) DEFAULT NULL COMMENT 'معرّف في جدول driver الرئيسي إن كان كابتن مشاوير أيضاً',
`invite_token` VARCHAR(64) DEFAULT NULL COMMENT 'رمز الدعوة للتفعيل الأولي',
`invite_sent_at` TIMESTAMP DEFAULT NULL,
`activated_at` TIMESTAMP DEFAULT NULL,
`status` ENUM('invited','active','suspended') NOT NULL DEFAULT 'invited',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_phone_org` (`phone`, `org_id`),
KEY `idx_org` (`org_id`),
KEY `idx_invite_token` (`invite_token`),
KEY `idx_main_driver` (`main_driver_id`) -- يُستعلم في transitResolveDriver + driver/me.php
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 7. transit_routes — خطوط النقل
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_routes` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`org_id` INT UNSIGNED NOT NULL,
`name_ar` VARCHAR(150) NOT NULL,
`name_en` VARCHAR(150) DEFAULT NULL,
`direction` ENUM('outbound','inbound','circular') NOT NULL DEFAULT 'outbound',
`polyline` TEXT DEFAULT NULL COMMENT 'Encoded polyline للمسار',
`distance_km` DECIMAL(7,2) DEFAULT NULL,
`duration_min` SMALLINT DEFAULT NULL,
`status` ENUM('draft','active','suspended','rejected') NOT NULL DEFAULT 'draft',
`created_by` INT UNSIGNED DEFAULT NULL COMMENT 'admin_id من أنشأه',
`approved_by` INT UNSIGNED DEFAULT NULL COMMENT 'admin_id من اعتمده (فريق سيرو)',
`approved_at` TIMESTAMP DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_org_status` (`org_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 8. transit_stops — محطات الخط مع جيوفينس
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_stops` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`route_id` INT UNSIGNED NOT NULL,
`org_id` INT UNSIGNED NOT NULL,
`sequence` TINYINT NOT NULL COMMENT 'ترتيب المحطة في الخط (1، 2، 3…)',
`name_ar` VARCHAR(120) NOT NULL,
`name_en` VARCHAR(120) DEFAULT NULL,
`latitude` DECIMAL(10,7) NOT NULL,
`longitude` DECIMAL(10,7) NOT NULL,
`geofence_radius` SMALLINT NOT NULL DEFAULT 150 COMMENT 'نصف قطر الجيوفينس بالمتر',
`eta_offset_min` SMALLINT DEFAULT NULL COMMENT 'الإزاحة الزمنية عن وقت الانطلاق بالدقائق',
`is_major` TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'محطة رئيسية (تظهر بارزة للطالب)',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_route_seq` (`route_id`, `sequence`),
KEY `idx_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 9. transit_schedules — جداول انطلاق الخطوط
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_schedules` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`route_id` INT UNSIGNED NOT NULL,
`org_id` INT UNSIGNED NOT NULL,
`vehicle_id` INT UNSIGNED DEFAULT NULL COMMENT 'الباص المخصص لهذا الجدول (NULL = يُحدد يومياً)',
`driver_id` INT UNSIGNED DEFAULT NULL COMMENT 'السائق المخصص (NULL = يُحدد يومياً)',
`days_mask` TINYINT NOT NULL DEFAULT 62 COMMENT 'قناع الأيام: bit0=أحد…bit6=سبت (62=الأحد–الخميس)',
`departure_time` TIME NOT NULL,
`valid_from` DATE NOT NULL,
`valid_until` DATE DEFAULT NULL,
`is_active` TINYINT(1) NOT NULL DEFAULT 1,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_route_active` (`route_id`, `is_active`),
KEY `idx_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 10. transit_trips — الرحلات اليومية الفعلية
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_trips` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`schedule_id` INT UNSIGNED NOT NULL,
`route_id` INT UNSIGNED NOT NULL,
`org_id` INT UNSIGNED NOT NULL,
`driver_id` INT UNSIGNED NOT NULL,
`vehicle_id` INT UNSIGNED DEFAULT NULL COMMENT 'NULL إن كان الجدول بلا باص مخصص',
`trip_date` DATE NOT NULL,
`status` ENUM('scheduled','started','completed','cancelled','no_show') NOT NULL DEFAULT 'scheduled',
`started_at` TIMESTAMP DEFAULT NULL,
`completed_at` TIMESTAMP DEFAULT NULL,
`delay_minutes` TINYINT DEFAULT 0,
`delay_reason` VARCHAR(300) DEFAULT NULL,
`current_stop_seq` TINYINT DEFAULT NULL COMMENT 'آخر محطة جيوفينس مرّ عليها الباص',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_schedule_date` (`schedule_id`, `trip_date`),
KEY `idx_route_date` (`route_id`, `trip_date`),
KEY `idx_org_date` (`org_id`, `trip_date`),
KEY `idx_driver_date` (`driver_id`, `trip_date`),
KEY `idx_status` (`status`) -- cron_approaching_alerts يستعلم WHERE status='started' كل دقيقة
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 11. transit_enrollments — عضويات الطلاب/الموظفين في المؤسسة
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_enrollments` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`org_id` INT UNSIGNED NOT NULL,
`passenger_id` VARCHAR(100) DEFAULT NULL COMMENT 'معرّف في جدول passengers الرئيسي — NULL لصفوف الكشف قبل تفعيل الطالب',
`student_id` VARCHAR(50) NOT NULL COMMENT 'الرقم الجامعي/الوظيفي (encrypted)',
`member_name` VARCHAR(120) DEFAULT NULL COMMENT 'الاسم من كشف الجامعة',
`preferred_stop_id` INT UNSIGNED DEFAULT NULL COMMENT 'محطتي المفضلة',
`preferred_route_id` INT UNSIGNED DEFAULT NULL,
`verify_method` ENUM('api','roster_phone_match','roster_manual','manual_admin') NOT NULL DEFAULT 'roster_manual',
`status` ENUM('pending','active','suspended','expired') NOT NULL DEFAULT 'pending',
`verified_at` TIMESTAMP DEFAULT NULL,
`expires_at` DATE DEFAULT NULL COMMENT 'نهاية الفصل الدراسي',
`roster_id` INT UNSIGNED DEFAULT NULL COMMENT 'الكشف الذي جاءت منه العضوية',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_org_passenger` (`org_id`, `passenger_id`),
KEY `idx_org_status` (`org_id`, `status`),
KEY `idx_passenger` (`passenger_id`),
KEY `idx_preferred_route` (`preferred_route_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 12. transit_rosters — سجلات استيراد كشوف الطلاب
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_rosters` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`org_id` INT UNSIGNED NOT NULL,
`uploaded_by` INT UNSIGNED NOT NULL COMMENT 'admin_id',
`filename` VARCHAR(200) DEFAULT NULL,
`total_rows` INT DEFAULT 0,
`matched_rows` INT DEFAULT 0 COMMENT 'طلاب طابق هاتفهم حساباً موجوداً',
`new_enrollments` INT DEFAULT 0,
`expired_count` INT DEFAULT 0 COMMENT 'طلاب تخرجوا وأُوقفت عضويتهم',
`semester` VARCHAR(30) DEFAULT NULL COMMENT 'مثال: 2026-S1',
`notes` VARCHAR(300) DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 13. transit_guardians — أولياء الأمور (للمدارس)
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_guardians` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`enrollment_id` INT UNSIGNED NOT NULL,
`org_id` INT UNSIGNED NOT NULL,
`guardian_passenger_id` VARCHAR(100) NOT NULL COMMENT 'معرّف ولي الأمر في passengers الرئيسي',
`relation` ENUM('father','mother','guardian') NOT NULL DEFAULT 'guardian',
`notify_depart` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'إشعار عند انطلاق الباص',
`notify_board` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'إشعار عند صعود الطفل',
`notify_arrive` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'إشعار عند وصول الباص للمدرسة',
`notify_return` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'إشعار عند العودة للبيت',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_enrollment_guardian` (`enrollment_id`, `guardian_passenger_id`),
KEY `idx_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 14. transit_broadcasts — إعلانات المشرف للمشتركين
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_broadcasts` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`org_id` INT UNSIGNED NOT NULL,
`sent_by` INT UNSIGNED NOT NULL COMMENT 'admin_id',
`target_type` ENUM('all','route','role') NOT NULL DEFAULT 'all',
`target_id` INT UNSIGNED DEFAULT NULL COMMENT 'route_id عند target_type=route',
`title_ar` VARCHAR(200) DEFAULT NULL,
`body_ar` TEXT NOT NULL,
`fcm_topic` VARCHAR(150) DEFAULT NULL COMMENT 'الموضوع المستخدم للإرسال',
`sent_at` TIMESTAMP DEFAULT NULL,
`delivery_count` INT DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 15. transit_boardings — إثبات الصعود والنزول (مرحلة ثانية)
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_boardings` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`trip_id` INT UNSIGNED NOT NULL,
`enrollment_id` INT UNSIGNED NOT NULL,
`stop_id` INT UNSIGNED DEFAULT NULL,
`boarded_at` TIMESTAMP DEFAULT NULL,
`alighted_at` TIMESTAMP DEFAULT NULL,
`method` ENUM('geofence','qr','driver_tap') NOT NULL DEFAULT 'geofence',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_trip` (`trip_id`),
KEY `idx_enrollment` (`enrollment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
-- 16. transit_otp_log — سجل OTPs لمشرفي الويب (تنظيف دوري)
-- -----------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `transit_otp_log` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`phone` VARCHAR(25) NOT NULL,
`otp_hash` VARCHAR(64) NOT NULL COMMENT 'sha256 للكود',
`expires_at` TIMESTAMP NOT NULL,
`used` TINYINT(1) NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_phone` (`phone`),
KEY `idx_expires` (`expires_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
SET FOREIGN_KEY_CHECKS = 1;
-- -----------------------------------------------------------------
-- ترحيل (Migration) لقاعدة أُنشئت قبل 2026-07-12 — نفّذ مرة واحدة:
-- ALTER TABLE transit_enrollments MODIFY passenger_id VARCHAR(100) DEFAULT NULL
-- COMMENT 'معرّف في جدول passengers الرئيسي — NULL لصفوف الكشف قبل تفعيل الطالب';
-- ALTER TABLE transit_trips MODIFY vehicle_id INT UNSIGNED DEFAULT NULL
-- COMMENT 'NULL إن كان الجدول بلا باص مخصص';
-- ALTER TABLE transit_routes MODIFY status ENUM('draft','active','suspended','rejected') NOT NULL DEFAULT 'draft';
-- (بدونها: Admin/transit/route/approve.php بإجراء reject يفشل بخطأ SQL دائماً)
-- ALTER TABLE transit_drivers ADD KEY idx_main_driver (main_driver_id);
-- (بدونها: كل استعلام transitResolveDriver / driver/me.php = مسح جدول كامل)
-- ALTER TABLE transit_trips ADD KEY idx_status (status);
-- (بدونها: cron_approaching_alerts كل دقيقة = مسح جدول transit_trips كامل)
-- -----------------------------------------------------------------
-- -----------------------------------------------------------------
-- ملاحظات الـ Redis (keys تُكتب من PHP — ليست في SQL)
-- transit:trip:{trip_id}:pos → آخر موقع GPS للباص (Hash: lat,lng,ts)
-- transit:trip:{trip_id}:status → حالة الرحلة الحية
-- transit:otp:{phone} → OTP مشرف الويب (TTL 300s)
-- transit:session:{token_hash} → admin_id+org_id (TTL 86400s)
-- transit:driver_mode:{driver_id} → وضع السائق الحالي (bus/ride), TTL session
-- FCM Topics: transit_route_{route_id} ← كل مشتركي خط
-- -----------------------------------------------------------------
+971
View File
@@ -0,0 +1,971 @@
USE paymentDB;
-- phpMyAdmin SQL Dump
-- version 5.2.2
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Jun 16, 2026 at 05:29 PM
-- Server version: 8.0.43-0ubuntu0.22.04.2
-- PHP Version: 8.1.33
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `WalletIntaleqDB`
--
-- --------------------------------------------------------
--
-- Table structure for table `adminUser`
--
CREATE TABLE `adminUser` (
`id` int NOT NULL,
`device_number` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- --------------------------------------------------------
--
-- Table structure for table `cliq_invoices`
--
CREATE TABLE `cliq_invoices` (
`id` int NOT NULL,
`invoice_number` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
`user_id` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
`user_type` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
`amount` decimal(10,2) NOT NULL,
`cliq_phone` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
`status` varchar(20) COLLATE utf8mb4_general_ci DEFAULT 'pending',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- --------------------------------------------------------
--
-- Table structure for table `driver`
--
CREATE TABLE `driver` (
`id` varchar(100) NOT NULL,
`phone` varchar(20) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`gender` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'Male',
`license_type` varchar(255) DEFAULT NULL,
`national_number` varchar(255) DEFAULT NULL,
`name_arabic` varchar(255) DEFAULT NULL,
`name_english` varchar(255) DEFAULT NULL,
`issue_date` date DEFAULT NULL,
`expiry_date` date DEFAULT NULL,
`license_categories` varchar(255) DEFAULT NULL,
`address` text,
`card_id` varchar(255) DEFAULT NULL,
`occupation` varchar(255) DEFAULT NULL,
`licenseIssueDate` varchar(50) DEFAULT NULL,
`religion` varchar(255) DEFAULT NULL,
`status` varchar(20) NOT NULL DEFAULT 'notDeleted',
`birthdate` varchar(20) NOT NULL,
`site` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`accountBank` varchar(55) NOT NULL DEFAULT 'yet',
`bankCode` varchar(20) NOT NULL DEFAULT 'CIB',
`education` varchar(255) DEFAULT NULL,
`employmentType` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
`maritalStatus` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
`fullNameMaritial` varchar(255) DEFAULT NULL,
`expirationDate` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
-- --------------------------------------------------------
--
-- Table structure for table `driverToken`
--
CREATE TABLE `driverToken` (
`id` int NOT NULL,
`token` varchar(255) NOT NULL,
`captain_id` varchar(255) NOT NULL,
`fingerPrint` varchar(100) NOT NULL,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `driverWallet`
--
CREATE TABLE `driverWallet` (
`id` int NOT NULL,
`driverID` varchar(100) NOT NULL,
`paymentID` varchar(200) NOT NULL,
`dateCreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`amount` decimal(12,3) NOT NULL,
`paymentMethod` varchar(20) NOT NULL,
`dateUpdated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `driver_withdrawal_requests`
--
CREATE TABLE `driver_withdrawal_requests` (
`id` int NOT NULL,
`driver_id` varchar(255) NOT NULL,
`driver_name` varchar(255) NOT NULL,
`amount` decimal(10,2) NOT NULL,
`wallet_type` varchar(50) NOT NULL,
`wallet_number` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL DEFAULT 'pending',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `ecash_transactions`
--
CREATE TABLE `ecash_transactions` (
`id` bigint UNSIGNED NOT NULL,
`order_ref` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`passenger_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending',
`ecash_transaction_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Table structure for table `ecash_transactions_driver`
--
CREATE TABLE `ecash_transactions_driver` (
`id` bigint UNSIGNED NOT NULL,
`order_ref` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`driver_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending',
`ecash_transaction_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Table structure for table `invoices_shamcash`
--
CREATE TABLE `invoices_shamcash` (
`id` int NOT NULL,
`invoice_number` int NOT NULL,
`driverID` varchar(44) NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` enum('pending','processing','completed','failed') NOT NULL DEFAULT 'pending',
`transaction_id` varchar(50) DEFAULT NULL COMMENT 'رقم عملية شام كاش لمنع التكرار',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`paid_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `invoices_shamcash_passenger`
--
CREATE TABLE `invoices_shamcash_passenger` (
`id` int NOT NULL,
`invoice_number` int NOT NULL,
`passengerID` varchar(33) NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` enum('pending','processing','completed','failed') NOT NULL DEFAULT 'pending',
`transaction_id` varchar(50) DEFAULT NULL,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`paid_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `invoices_sms`
--
CREATE TABLE `invoices_sms` (
`id` int NOT NULL,
`invoice_number` varchar(20) NOT NULL,
`user_phone` varchar(20) NOT NULL,
`amount` decimal(10,3) NOT NULL,
`status` enum('pending','completed','failed') NOT NULL DEFAULT 'pending',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`driverID` varchar(33) DEFAULT NULL,
`currency` varchar(8) DEFAULT 'SYP'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `invoices_sms_passenger`
--
CREATE TABLE `invoices_sms_passenger` (
`id` int NOT NULL,
`invoice_number` varchar(20) NOT NULL,
`user_phone` varchar(20) NOT NULL,
`amount` decimal(10,0) NOT NULL,
`status` enum('pending','completed','failed') NOT NULL DEFAULT 'pending',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`passengerID` varchar(33) NOT NULL,
`currency` varchar(8) NOT NULL DEFAULT 'SYP'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `kazan`
--
CREATE TABLE `kazan` (
`id` int NOT NULL,
`country` varchar(30) NOT NULL,
`kazan` varchar(10) NOT NULL,
`comfortPrice` varchar(10) NOT NULL,
`speedPrice` varchar(10) NOT NULL,
`deliveryPrice` varchar(11) NOT NULL,
`freePrice` varchar(11) NOT NULL,
`latePrice` varchar(10) NOT NULL,
`heavyPrice` varchar(10) NOT NULL,
`adminId` varchar(100) NOT NULL,
`createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`naturePrice` varchar(10) NOT NULL,
`fuelPrice` varchar(6) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `mtn_invoices`
--
CREATE TABLE `mtn_invoices` (
`id` int NOT NULL,
`invoice_number` varchar(20) NOT NULL,
`user_id` varchar(50) NOT NULL,
`user_type` enum('driver','passenger') NOT NULL COMMENT 'يحدد هل المستخدم سائق أم راكب',
`amount` decimal(10,2) NOT NULL,
`mtn_phone` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'رقم MTN الذي سيتم الدفع منه',
`status` enum('pending','completed','failed','expired') NOT NULL DEFAULT 'pending',
`mtn_transaction_id` varchar(255) DEFAULT NULL COMMENT 'معرّف العملية من طرف MTN بعد الدفع',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `passengers`
--
CREATE TABLE `passengers` (
`id` varchar(100) NOT NULL,
`phone` varchar(15) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(100) NOT NULL,
`gender` varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`status` varchar(20) NOT NULL DEFAULT 'notDeleted',
`birthdate` varchar(44) NOT NULL,
`site` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`sosPhone` varchar(33) NOT NULL DEFAULT 'sos',
`education` varchar(30) NOT NULL DEFAULT 'none',
`employmentType` varchar(30) NOT NULL DEFAULT 'none',
`maritalStatus` varchar(30) NOT NULL DEFAULT 'none',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
-- --------------------------------------------------------
--
-- Table structure for table `passengerWallet`
--
CREATE TABLE `passengerWallet` (
`id` int NOT NULL,
`passenger_id` varchar(100) NOT NULL,
`balance` decimal(10,2) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `payments`
--
CREATE TABLE `payments` (
`id` varchar(111) NOT NULL,
`amount` decimal(10,2) NOT NULL,
`payment_method` varchar(255) NOT NULL,
`passengerID` varchar(100) NOT NULL,
`rideId` varchar(100) NOT NULL,
`driverID` varchar(100) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`isGiven` varchar(20) NOT NULL DEFAULT 'waiting'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
-- --------------------------------------------------------
--
-- Table structure for table `paymentsDriverPoints`
--
CREATE TABLE `paymentsDriverPoints` (
`id` int NOT NULL,
`amount` decimal(10,2) NOT NULL,
`payment_method` varchar(50) NOT NULL,
`driverID` varchar(60) NOT NULL,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `paymentsLog`
--
CREATE TABLE `paymentsLog` (
`id` int NOT NULL,
`payment_id` varchar(255) NOT NULL,
`user_id` char(40) NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` tinyint NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `paymentsLogSyria`
--
CREATE TABLE `paymentsLogSyria` (
`id` int NOT NULL,
`user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` tinyint NOT NULL DEFAULT '0',
`order_ref` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`payment_method` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'ecash',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- --------------------------------------------------------
--
-- Table structure for table `paymentsLogSyriaDriver`
--
CREATE TABLE `paymentsLogSyriaDriver` (
`id` int NOT NULL,
`user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`amount` decimal(10,2) NOT NULL DEFAULT '0.00',
`status` tinyint NOT NULL DEFAULT '2',
`processed_wallet` tinyint(1) NOT NULL DEFAULT '0',
`order_ref` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`payment_method` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'ecash',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- --------------------------------------------------------
--
-- Table structure for table `payment_log_driver`
--
CREATE TABLE `payment_log_driver` (
`id` int NOT NULL,
`payment_id` varchar(255) NOT NULL,
`user_id` char(70) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '0',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `payment_tokens`
--
CREATE TABLE `payment_tokens` (
`id` int NOT NULL,
`token` varchar(255) NOT NULL,
`driverID` varchar(255) NOT NULL,
`dateCreated` datetime NOT NULL,
`amount` decimal(10,2) NOT NULL,
`isUsed` tinyint(1) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `payment_tokens_passenger`
--
CREATE TABLE `payment_tokens_passenger` (
`id` int NOT NULL,
`token` varchar(255) NOT NULL,
`passengerId` varchar(255) NOT NULL,
`dateCreated` datetime NOT NULL,
`amount` decimal(10,2) NOT NULL,
`isUsed` tinyint(1) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `payout_requests`
--
CREATE TABLE `payout_requests` (
`id` int NOT NULL,
`driver_id` varchar(35) NOT NULL,
`driver_phone` varchar(20) NOT NULL,
`amount` decimal(10,2) NOT NULL,
`wallet_type` varchar(50) DEFAULT NULL,
`status` enum('pending','completed','failed') NOT NULL DEFAULT 'pending',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`completed_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `phone_verification`
--
CREATE TABLE `phone_verification` (
`id` int NOT NULL,
`phone_number` varchar(20) NOT NULL,
`driverId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'yet',
`email` varchar(50) NOT NULL DEFAULT 'yet',
`token_code` varchar(10) NOT NULL,
`expiration_time` datetime NOT NULL,
`is_verified` tinyint(1) DEFAULT '0',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `phone_verification_passenger`
--
CREATE TABLE `phone_verification_passenger` (
`id` int NOT NULL,
`phone_number` varchar(15) NOT NULL,
`token` varchar(6) NOT NULL,
`expiration_time` datetime NOT NULL,
`verified` tinyint(1) DEFAULT '0',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `raw_sms_log`
--
CREATE TABLE `raw_sms_log` (
`id` int NOT NULL,
`sender` varchar(50) NOT NULL,
`message_body` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`status` enum('pending','processed','failed') NOT NULL DEFAULT 'pending',
`gemini_result` json DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `siroWallet`
--
CREATE TABLE `siroWallet` (
`id` int NOT NULL,
`driverId` varchar(100) NOT NULL,
`passengerId` varchar(100) NOT NULL,
`amount` decimal(12,3) NOT NULL,
`paymentMethod` varchar(50) NOT NULL,
`token` varchar(100) NOT NULL,
`createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `smsSender`
--
CREATE TABLE `smsSender` (
`id` int NOT NULL,
`senderId` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- --------------------------------------------------------
--
-- Table structure for table `tokens`
--
CREATE TABLE `tokens` (
`id` int NOT NULL,
`token` varchar(333) NOT NULL,
`passengerID` varchar(111) NOT NULL,
`fingerPrint` varchar(300) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `adminUser`
--
ALTER TABLE `adminUser`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `cliq_invoices`
--
ALTER TABLE `cliq_invoices`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `invoice_number` (`invoice_number`);
--
-- Indexes for table `driver`
--
ALTER TABLE `driver`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `phone` (`phone`,`email`),
ADD UNIQUE KEY `national_number` (`national_number`);
--
-- Indexes for table `driverToken`
--
ALTER TABLE `driverToken`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `driverWallet`
--
ALTER TABLE `driverWallet`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `driver_withdrawal_requests`
--
ALTER TABLE `driver_withdrawal_requests`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `ecash_transactions`
--
ALTER TABLE `ecash_transactions`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `order_ref_unique` (`order_ref`),
ADD KEY `user_id_index` (`user_id`),
ADD KEY `passenger_id_index` (`passenger_id`);
--
-- Indexes for table `ecash_transactions_driver`
--
ALTER TABLE `ecash_transactions_driver`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `order_ref_unique_driver` (`order_ref`),
ADD KEY `driver_id_index` (`driver_id`);
--
-- Indexes for table `invoices_shamcash`
--
ALTER TABLE `invoices_shamcash`
ADD PRIMARY KEY (`id`),
ADD KEY `invoice_number` (`invoice_number`),
ADD KEY `status` (`status`);
--
-- Indexes for table `invoices_shamcash_passenger`
--
ALTER TABLE `invoices_shamcash_passenger`
ADD PRIMARY KEY (`id`),
ADD KEY `invoice_number` (`invoice_number`),
ADD KEY `status` (`status`);
--
-- Indexes for table `invoices_sms`
--
ALTER TABLE `invoices_sms`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `invoice_number` (`invoice_number`),
ADD KEY `idx_user_phone` (`user_phone`),
ADD KEY `idx_status` (`status`);
--
-- Indexes for table `invoices_sms_passenger`
--
ALTER TABLE `invoices_sms_passenger`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `uniq_invoice_number_passenger` (`invoice_number`);
--
-- Indexes for table `kazan`
--
ALTER TABLE `kazan`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `mtn_invoices`
--
ALTER TABLE `mtn_invoices`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `invoice_number` (`invoice_number`),
ADD KEY `idx_user` (`user_id`,`user_type`),
ADD KEY `idx_status` (`status`);
--
-- Indexes for table `passengers`
--
ALTER TABLE `passengers`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `phone` (`phone`,`email`);
--
-- Indexes for table `passengerWallet`
--
ALTER TABLE `passengerWallet`
ADD PRIMARY KEY (`id`),
ADD KEY `passenger_id` (`passenger_id`);
--
-- Indexes for table `payments`
--
ALTER TABLE `payments`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `rideId` (`rideId`);
--
-- Indexes for table `paymentsDriverPoints`
--
ALTER TABLE `paymentsDriverPoints`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `paymentsLog`
--
ALTER TABLE `paymentsLog`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `payment_id` (`payment_id`);
--
-- Indexes for table `paymentsLogSyria`
--
ALTER TABLE `paymentsLogSyria`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `paymentsLogSyriaDriver`
--
ALTER TABLE `paymentsLogSyriaDriver`
ADD PRIMARY KEY (`id`),
ADD KEY `order_ref_index` (`order_ref`);
--
-- Indexes for table `payment_log_driver`
--
ALTER TABLE `payment_log_driver`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `payment_id` (`payment_id`);
--
-- Indexes for table `payment_tokens`
--
ALTER TABLE `payment_tokens`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `payment_tokens_passenger`
--
ALTER TABLE `payment_tokens_passenger`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `payout_requests`
--
ALTER TABLE `payout_requests`
ADD PRIMARY KEY (`id`),
ADD KEY `driver_id_status` (`driver_id`,`status`);
--
-- Indexes for table `phone_verification`
--
ALTER TABLE `phone_verification`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `phone_verification_passenger`
--
ALTER TABLE `phone_verification_passenger`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `phone_number` (`phone_number`);
--
-- Indexes for table `raw_sms_log`
--
ALTER TABLE `raw_sms_log`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `siroWallet`
--
ALTER TABLE `siroWallet`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `smsSender`
--
ALTER TABLE `smsSender`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `tokens`
--
ALTER TABLE `tokens`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `passengerID` (`passengerID`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `adminUser`
--
ALTER TABLE `adminUser`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `cliq_invoices`
--
ALTER TABLE `cliq_invoices`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `driverToken`
--
ALTER TABLE `driverToken`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `driverWallet`
--
ALTER TABLE `driverWallet`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `driver_withdrawal_requests`
--
ALTER TABLE `driver_withdrawal_requests`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `ecash_transactions`
--
ALTER TABLE `ecash_transactions`
MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `ecash_transactions_driver`
--
ALTER TABLE `ecash_transactions_driver`
MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `invoices_shamcash`
--
ALTER TABLE `invoices_shamcash`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `invoices_shamcash_passenger`
--
ALTER TABLE `invoices_shamcash_passenger`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `invoices_sms`
--
ALTER TABLE `invoices_sms`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `invoices_sms_passenger`
--
ALTER TABLE `invoices_sms_passenger`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `kazan`
--
ALTER TABLE `kazan`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `mtn_invoices`
--
ALTER TABLE `mtn_invoices`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `passengerWallet`
--
ALTER TABLE `passengerWallet`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `paymentsDriverPoints`
--
ALTER TABLE `paymentsDriverPoints`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `paymentsLog`
--
ALTER TABLE `paymentsLog`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `paymentsLogSyria`
--
ALTER TABLE `paymentsLogSyria`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `paymentsLogSyriaDriver`
--
ALTER TABLE `paymentsLogSyriaDriver`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `payment_log_driver`
--
ALTER TABLE `payment_log_driver`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `payment_tokens`
--
ALTER TABLE `payment_tokens`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `payment_tokens_passenger`
--
ALTER TABLE `payment_tokens_passenger`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `payout_requests`
--
ALTER TABLE `payout_requests`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `phone_verification`
--
ALTER TABLE `phone_verification`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `phone_verification_passenger`
--
ALTER TABLE `phone_verification_passenger`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `raw_sms_log`
--
ALTER TABLE `raw_sms_log`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `siroWallet`
--
ALTER TABLE `siroWallet`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `smsSender`
--
ALTER TABLE `smsSender`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `tokens`
--
ALTER TABLE `tokens`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
--
-- Table structure for table `admin_audit_log`
--
CREATE TABLE `admin_audit_log` (
`id` int NOT NULL AUTO_INCREMENT,
`admin_id` varchar(150) NOT NULL,
`action` varchar(255) NOT NULL,
`table_name` varchar(255) DEFAULT NULL,
`record_id` varchar(255) DEFAULT NULL,
`details` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;