Files
tripz-llc/backend/serviceapp/getComplaintAllDataForDriver.php
Hamza-AyedandClaude Opus 5 4d8414c96b feat: استيراد كود سيرو إلى تريبز (سيرو @ecfe7568) — بلا تعديل
قرار المالك 2026-07-27: باك إند سيرو PHP هو المعتمد، وتطبيقاته المجرّبة
ميدانياً تحل محل إعادة البناء المؤرشفة. سيرو نفسه لم يُمسّ.

الخريطة:
  backend · payment_server · loction_server · ride_server ·
  passenger_server · docker · dashboard · stress_test  → الجذر
  siro_rider  → apps/rider          siro_driver  → apps/driver
  siro_admin  → dashboards/admin    siro_service → dashboards/service
  android_bot → apps/android_bot    socialBot    → apps/socialBot

نُسخ المتعقَّب في git سيرو فقط عبر `git archive` (3,198 ملفاً / ~169 م.ب)
لا `cp -r` — فاستُثنيت مخلفات البناء تلقائياً. بلا أي تعديل محتوى عمداً:
كل ما يلي يصير فرقاً مقروءاً مقابل المصدر.

لم يُستورد وسببه: siromove.com (الموقع التسويقي يبقى marketing/ في تريبز،
سيرو فيه 8 ملفات) · docs و planning (تريبز له docs/ الخاص) · deploy.sh
(ليس نشراً على سيرفر بل `git add . && git push origin --all` — فخّ في
مستودع آخر) · transit_dashboard (بانتظار قرار مصير backend-transit و
dashboards/transit-web).

⚠️ لا يبني بعد — ثلاثة نواقص متوقعة ومقصودة:
1. `.env` و `lib/env/env.g.dart` غير متعقَّبين في سيرو (أسرار لكل مستأجر):
   كل تطبيق فلاتر يحتاج .env خاصاً ثم توليد env.g.dart بـ build_runner.
2. إعدادات Firebase (9 ملفات google-services.json و GoogleService-Info.plist)
   يستبعدها .gitignore تريبز — ولكل مستأجر مشروع Firebase خاص أصلاً.
3. apps/driver في سيرو يشير إلى `../../Intaleq/packages/get` خارج المستودع →
   يجب ضمّ الحزم داخله أسوة بـ apps/rider.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 05:14:13 +03:00

146 lines
3.3 KiB
PHP

<?php
require_once __DIR__ . '/../connect.php';
$driverID = filterRequest("driver_id");
$sql = "SELECT
cm.`id`,
cm.`ride_id`,
cm.`passenger_id`,
cm.`driver_id`,
cm.`complaint_type`,
cm.`description`,
cm.`date_filed`,
cm.`statusComplaint`,
cm.`resolution`,
cm.`date_resolved`,
p.first_name AS passengerName,
d.name_arabic AS driverName,
d.gender,
ride.price AS priceOfRide,
ride.status AS rideStatus,
ride.carType AS carType,
ride.paymentMethod AS ridePaymentMethod,
ride.rideTimeFinish AS rideTimeFinish,
0 AS paymentFromPaymentTable,
NULL AS timeFromPaymentTable,
(
SELECT
AVG(rd.rating)
FROM
ratingDriver rd
WHERE
rd.driver_id = cm.driver_id
) AS avgRatingDriverFromPassengers,
(
SELECT
COUNT(*)
FROM
ratingDriver rd
WHERE
rd.driver_id = cm.driver_id
) AS countratingDriverFromPassengers,
(
SELECT
AVG(rp.rating)
FROM
ratingPassenger rp
WHERE
rp.passenger_id = cm.passenger_id
) AS avgRatingPassengerFromDrivers,
(
SELECT
COUNT(*)
FROM
ratingPassenger rp
WHERE
rp.passenger_id = cm.passenger_id
) AS countRatingPassengerFromDrivers,
(
SELECT
COUNT(*)
FROM
ride
WHERE
ride.driver_id = cm.driver_id
) countDriverRide,
(
SELECT
COUNT(*)
FROM
ride
WHERE
ride.passenger_id = cm.passenger_id
) countPassengerRide,
0 AS driverVisa,
0 AS driverWallet,
0 AS passengerWallet,
(
SELECT
token
FROM
driverToken
WHERE
driverToken.captain_id = cm.driver_id
) AS driverToken,
(
SELECT
token
FROM
tokens
WHERE
tokens.passengerID = cm.passenger_id
) AS passengerToken,
(
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`
LEFT JOIN driver d ON
d.id = cm.driver_id
LEFT JOIN ride ON ride.id = cm.ride_id
WHERE
cm.driver_id = '$driverID'";
$stmt = $con->prepare($sql);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as &$item) {
if (isset($item['passengerName'])) {
$item['passengerName'] = $encryptionHelper->decryptData($item['passengerName']);
}
if (isset($item['driverName'])) {
$item['driverName'] = $encryptionHelper->decryptData($item['driverName']);
}
if (isset($item['gender'])) {
$item['gender'] = $encryptionHelper->decryptData($item['gender']);
}
if (isset($item['driverToken'])) {
$item['driverToken'] = $encryptionHelper->decryptData($item['driverToken']);
}
if (isset($item['passengerToken'])) {
$item['passengerToken'] = $encryptionHelper->decryptData($item['passengerToken']);
}
}
jsonSuccess($row);
} else {
jsonError($message = $sql);
}
?>