Update: 2026-08-07 05:03:39
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// complaint_context.php — جمع سياق الشكوى الكامل
|
||||
//
|
||||
// استُخرجت من add_solve_all.php ليشاركها مستشار خدمة العملاء.
|
||||
// كانت هذه الدوال محبوسة في نقطة تقديم الشكوى، فبنيتُ نسخة أضعف منها
|
||||
// لمستشار الدعم قبل أن أنتبه — وهذا الاستخراج يمنع تباعد النسختين.
|
||||
//
|
||||
// ما تجمعه: ملف السائق (تقييماته وتعليقات الركّاب عليه)، ملف الراكب
|
||||
// (تقييماته وتعليقات السائقين عليه)، وسلوك القيادة في الرحلة نفسها.
|
||||
// أي أن النموذج يرى "من هؤلاء" لا الشكوى وحدها.
|
||||
// ============================================================
|
||||
|
||||
/**
|
||||
* جلب بيانات ومعلومات تقييم السائق
|
||||
*/
|
||||
function getDriverFullProfile($con, $encryptionHelper, $driverId) {
|
||||
$profile = ['info' => null, 'ratings' => null, 'comments' => []];
|
||||
|
||||
// جلب معلومات السائق الأساسية
|
||||
$stmt = $con->prepare("SELECT id, first_name, last_name, created_at FROM driver WHERE id = ?");
|
||||
$stmt->execute([$driverId]);
|
||||
$driverInfo = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
// فك تشفير البيانات الحساسة
|
||||
if ($driverInfo) {
|
||||
// التحقق من وجود ودوال فك التشفير قبل الاستخدام
|
||||
if (isset($encryptionHelper) && method_exists($encryptionHelper, 'decryptData')) {
|
||||
$decryptedFirstName = $encryptionHelper->decryptData($driverInfo['first_name']);
|
||||
$decryptedLastName = $encryptionHelper->decryptData($driverInfo['last_name']);
|
||||
$driverInfo['full_name'] = trim($decryptedFirstName . ' ' . $decryptedLastName);
|
||||
} else {
|
||||
$driverInfo['full_name'] = 'Decryption Failed';
|
||||
}
|
||||
|
||||
unset($driverInfo['first_name'], $driverInfo['last_name']); // إزالة الحقول المشفرة
|
||||
$profile['info'] = $driverInfo;
|
||||
}
|
||||
|
||||
// جلب ملخص التقييمات والتعليقات
|
||||
$stmt = $con->prepare("SELECT AVG(rating) as avg_rating, COUNT(id) as total_ratings FROM ratingDriver WHERE driver_id = ?");
|
||||
$stmt->execute([$driverId]);
|
||||
$profile['ratings'] = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
$stmt = $con->prepare("SELECT comment FROM ratingDriver WHERE driver_id = ? AND comment IS NOT NULL AND comment != '' ORDER BY created_at DESC LIMIT 5");
|
||||
$stmt->execute([$driverId]);
|
||||
$profile['comments'] = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
return $profile;
|
||||
}
|
||||
|
||||
/**
|
||||
* جلب بيانات ومعلومات تقييم الراكب
|
||||
*/
|
||||
function getPassengerFullProfile($con, $encryptionHelper, $passengerId) {
|
||||
$profile = ['info' => null, 'ratings' => null, 'comments' => []];
|
||||
|
||||
$stmt = $con->prepare("SELECT id, first_name, last_name, created_at FROM passengers WHERE id = ?");
|
||||
$stmt->execute([$passengerId]);
|
||||
$passengerInfo = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
// فك تشفير البيانات الحساسة
|
||||
if ($passengerInfo) {
|
||||
if (isset($encryptionHelper) && method_exists($encryptionHelper, 'decryptData')) {
|
||||
$decryptedFirstName = $encryptionHelper->decryptData($passengerInfo['first_name']);
|
||||
$decryptedLastName = $encryptionHelper->decryptData($passengerInfo['last_name']);
|
||||
$passengerInfo['full_name'] = trim($decryptedFirstName . ' ' . $decryptedLastName);
|
||||
} else {
|
||||
$passengerInfo['full_name'] = 'Decryption Failed';
|
||||
}
|
||||
|
||||
unset($passengerInfo['first_name'], $passengerInfo['last_name']);
|
||||
$profile['info'] = $passengerInfo;
|
||||
}
|
||||
|
||||
$stmt = $con->prepare("SELECT AVG(rating) as avg_rating, COUNT(id) as total_ratings FROM ratingPassenger WHERE passenger_id = ?");
|
||||
$stmt->execute([$passengerId]);
|
||||
$profile['ratings'] = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
$stmt = $con->prepare("SELECT comment FROM ratingPassenger WHERE passenger_id = ? AND comment IS NOT NULL AND comment != '' ORDER BY created_at DESC LIMIT 5");
|
||||
$stmt->execute([$passengerId]);
|
||||
$profile['comments'] = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
return $profile;
|
||||
}
|
||||
|
||||
/**
|
||||
* جلب بيانات سلوك السائق في الرحلة المحددة
|
||||
*/
|
||||
function getDriverBehavior($con, $rideId, $driverId) {
|
||||
$stmt = $con->prepare("SELECT max_speed, avg_speed, hard_brakes, behavior_score FROM driver_behavior WHERE trip_id = ? AND driver_id = ?");
|
||||
$stmt->execute([$rideId, $driverId]);
|
||||
return $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user