add new features like realtime 2026-05-11-19

This commit is contained in:
Hamza-Ayed
2026-05-11 19:00:23 +03:00
parent f22d9f6c74
commit 5a4c21cbde
2 changed files with 145 additions and 167 deletions

17
git_push.sh Normal file
View File

@@ -0,0 +1,17 @@
#!/bin/zsh
# الحصول على التاريخ الحالي
CURRENT_DATE=$(date +"%Y-%m-%d-%H")
echo "--- 🚀 Starting Deployment ($CURRENT_DATE) ---"
# إضافة جميع الملفات
git add .
# تنفيذ الكوميت مع التاريخ
git commit -m "add new features like realtime $CURRENT_DATE"
# الرفع إلى السيرفر
git push myserver main
echo "--- ✅ Done ---"

View File

@@ -1,180 +1,142 @@
<?php <?php
require_once __DIR__ . '/../connect.php'; require_once __DIR__ . '/../connect.php';
$sql = "SELECT $sql = "
cm.`id`, SELECT
cm.`ride_id`, cm.id, cm.ride_id, cm.passenger_id, cm.driver_id,
cm.`passenger_id`, cm.complaint_type, cm.description, cm.date_filed,
cm.`driver_id`, cm.statusComplaint, cm.resolution, cm.date_resolved,
cm.`complaint_type`, p.first_name AS passengerName,
cm.`description`, d.name_arabic AS driverName,
cm.`date_filed`,
cm.`statusComplaint`,
cm.`resolution`,
cm.`date_resolved`,
p.first_name AS passengerName,
d.name_arabic AS driverName,
d.gender, d.gender,
ride.price AS priceOfRide, ride.price AS priceOfRide,
ride.status AS rideStatus, ride.status AS rideStatus,
ride.carType AS carType, ride.carType,
ride.paymentMethod AS ridePaymentMethod, ride.paymentMethod AS ridePaymentMethod,
ride.rideTimeFinish AS rideTimeFinish, ride.rideTimeFinish,
payments.amount as paymentFromPaymentTable, payments.amount AS paymentFromPaymentTable,
payments.created_at as timeFromPaymentTable, payments.created_at AS timeFromPaymentTable,
(
SELECT COALESCE(dr_rating.avgRating, 0) AS avgRatingDriverFromPassengers,
AVG(rd.rating) COALESCE(dr_rating.cntRating, 0) AS countratingDriverFromPassengers,
FROM COALESCE(ps_rating.avgRating, 0) AS avgRatingPassengerFromDrivers,
ratingDriver rd COALESCE(ps_rating.cntRating, 0) AS countRatingPassengerFromDrivers,
WHERE COALESCE(dr_rides.cnt, 0) AS countDriverRide,
rd.driver_id = cm.driver_id COLLATE utf8mb4_general_ci COALESCE(ps_rides.cnt, 0) AS countPassengerRide,
) AS avgRatingDriverFromPassengers, COALESCE(dr_visa.total, 0) AS driverVisa,
( COALESCE(dr_wallet.total, 0) AS driverWallet,
SELECT COALESCE(ps_wallet.total, 0) AS passengerWallet,
COUNT(*)
FROM dt.token AS driverToken,
ratingDriver rd tk.token AS passengerToken,
WHERE
rd.driver_id = cm.driver_id COLLATE utf8mb4_general_ci COALESCE(ps_complaints.cnt, 0) AS countOfComplaintFromPassenger,
) AS countratingDriverFromPassengers, COALESCE(dr_complaints.cnt, 0) AS countOfComplaintFromDriver
(
SELECT FROM complaint cm
AVG(rp.rating)
FROM LEFT JOIN passengers p
ratingPassenger rp ON p.id = cm.passenger_id COLLATE utf8mb4_general_ci
WHERE
rp.passenger_id = cm.passenger_id COLLATE utf8mb4_general_ci LEFT JOIN driver d
) AS avgRatingPassengerFromDrivers, ON d.id = cm.driver_id COLLATE utf8mb4_general_ci
(
SELECT LEFT JOIN ride
COUNT(*) ON ride.id = cm.ride_id COLLATE utf8mb4_general_ci
FROM
ratingPassenger rp LEFT JOIN payments
WHERE ON payments.rideId = cm.ride_id COLLATE utf8mb4_general_ci
rp.passenger_id = cm.passenger_id COLLATE utf8mb4_general_ci
) AS countRatingPassengerFromDrivers, -- تقييمات السائق (مرة واحدة لكل سائق)
( LEFT JOIN (
SELECT SELECT driver_id, AVG(rating) AS avgRating, COUNT(*) AS cntRating
COUNT(*) FROM ratingDriver
FROM GROUP BY driver_id
ride ) dr_rating ON dr_rating.driver_id = cm.driver_id COLLATE utf8mb4_general_ci
WHERE
ride.driver_id = cm.driver_id COLLATE utf8mb4_general_ci -- تقييمات الراكب (مرة واحدة لكل راكب)
) countDriverRide, LEFT JOIN (
( SELECT passenger_id, AVG(rating) AS avgRating, COUNT(*) AS cntRating
SELECT FROM ratingPassenger
COUNT(*) GROUP BY passenger_id
FROM ) ps_rating ON ps_rating.passenger_id = cm.passenger_id COLLATE utf8mb4_general_ci
ride
WHERE -- عدد رحلات السائق
ride.passenger_id = cm.passenger_id COLLATE utf8mb4_general_ci LEFT JOIN (
) countPassengerRide, SELECT driver_id, COUNT(*) AS cnt
( FROM ride
SELECT GROUP BY driver_id
COALESCE(SUM(amount), ) dr_rides ON dr_rides.driver_id = cm.driver_id COLLATE utf8mb4_general_ci
0) AS visaDriver
FROM -- عدد رحلات الراكب
payments LEFT JOIN (
WHERE SELECT passenger_id, COUNT(*) AS cnt
isGiven = 'waiting' AND `payment_method` IN( FROM ride
'visa-in', GROUP BY passenger_id
'visa', ) ps_rides ON ps_rides.passenger_id = cm.passenger_id COLLATE utf8mb4_general_ci
'visaRide',
'TransferFrom', -- رصيد Visa السائق
'payout', LEFT JOIN (
'TransferTo' SELECT driverID, SUM(amount) AS total
) AND payments.`driverID` = cm.driver_id COLLATE utf8mb4_general_ci FROM payments
) AS driverVisa, WHERE isGiven = 'waiting'
( AND payment_method IN ('visa-in','visa','visaRide','TransferFrom','payout','TransferTo')
SELECT GROUP BY driverID
COALESCE(SUM(amount), ) dr_visa ON dr_visa.driverID = cm.driver_id COLLATE utf8mb4_general_ci
0) AS pointDriver
FROM -- محفظة السائق
driverWallet dw LEFT JOIN (
WHERE SELECT driverID, SUM(amount) AS total
dw.paymentMethod IN( FROM driverWallet
'visa-in', WHERE paymentMethod IN ('visa-in','visa','visaRide','TransferFrom','payout','TransferTo')
'visa', GROUP BY driverID
'visaRide', ) dr_wallet ON dr_wallet.driverID = cm.driver_id COLLATE utf8mb4_general_ci
'TransferFrom',
'payout', -- محفظة الراكب
'TransferTo' LEFT JOIN (
) AND dw.`driverID` = cm.driver_id COLLATE utf8mb4_general_ci SELECT passenger_id, SUM(balance) AS total
) AS driverWallet, FROM passengerWallet
( GROUP BY passenger_id
SELECT ) ps_wallet ON ps_wallet.passenger_id = cm.passenger_id COLLATE utf8mb4_general_ci
COALESCE(SUM(pw.balance),
0) -- توكن السائق
FROM LEFT JOIN driverToken dt
passengerWallet pw ON dt.captain_id = cm.driver_id COLLATE utf8mb4_general_ci
WHERE
pw.passenger_id = cm.passenger_id COLLATE utf8mb4_general_ci -- توكن الراكب
) AS passengerWallet, LEFT JOIN tokens tk
( ON tk.passengerID = cm.passenger_id COLLATE utf8mb4_general_ci
SELECT
token -- عدد شكاوى الراكب
FROM LEFT JOIN (
driverToken SELECT passenger_id, COUNT(*) AS cnt
WHERE FROM complaint
driverToken.captain_id = cm.driver_id COLLATE utf8mb4_general_ci WHERE complaint_type = 'Passenger'
) AS driverToken, GROUP BY passenger_id
( ) ps_complaints ON ps_complaints.passenger_id = cm.passenger_id
SELECT
token -- عدد شكاوى السائق
FROM LEFT JOIN (
tokens SELECT driver_id, COUNT(*) AS cnt
WHERE FROM complaint
tokens.passengerID = cm.passenger_id COLLATE utf8mb4_general_ci WHERE complaint_type = 'Driver'
) AS passengerToken, GROUP BY driver_id
( ) dr_complaints ON dr_complaints.driver_id = cm.driver_id
SELECT ";
COUNT(*)
FROM
complaint
WHERE
complaint.passenger_id = cm.passenger_id AND cm.complaint_type = 'Passenger'
) AS countOfComplaintFromPassenger,
(
SELECT
COUNT(*)
FROM
complaint
WHERE
complaint.driver_id = cm.driver_id AND cm.complaint_type = 'Driver'
) AS countOfComplaintFromDriver
FROM
`complaint` cm
LEFT JOIN passengers p ON
p.id = cm.`passenger_id` COLLATE utf8mb4_general_ci
LEFT JOIN driver d ON
d.id = cm.driver_id COLLATE utf8mb4_general_ci
LEFT JOIN ride ON ride.id = cm.ride_id COLLATE utf8mb4_general_ci
left join payments on payments.rideId = cm.ride_id COLLATE utf8mb4_general_ci";
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->execute(); $stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC); $row = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($row) { if ($row) {
foreach ($row as &$item) { foreach ($row as &$item) {
if (!empty($item['passengerName'])) { foreach (['passengerName', 'driverName', 'driverToken', 'passengerToken'] as $field) {
$dec = $encryptionHelper->decryptData($item['passengerName']); if (!empty($item[$field])) {
if ($dec) $item['passengerName'] = $dec; $dec = $encryptionHelper->decryptData($item[$field]);
} if ($dec)
if (!empty($item['driverName'])) { $item[$field] = $dec;
$dec = $encryptionHelper->decryptData($item['driverName']); }
if ($dec) $item['driverName'] = $dec;
}
if (!empty($item['driverToken'])) {
$dec = $encryptionHelper->decryptData($item['driverToken']);
if ($dec) $item['driverToken'] = $dec;
}
if (!empty($item['passengerToken'])) {
$dec = $encryptionHelper->decryptData($item['passengerToken']);
if ($dec) $item['passengerToken'] = $dec;
} }
} }
jsonSuccess($row); jsonSuccess($row);
@@ -183,5 +145,4 @@ try {
} }
} catch (Exception $e) { } catch (Exception $e) {
jsonError("Database error: " . $e->getMessage()); jsonError("Database error: " . $e->getMessage());
} }
?>