<?php
require_once __DIR__ . '/../../connect.php';

// تشفير driver_id قبل استخدامه في SQL
$driver_id = filterRequest("driver_id");

$sql = "SELECT
    `driver`.`id`,
    `driver`.`phone`,
    `driver`.`email`,
    `driver`.`gender`,
    `driver`.`status`,
    `driver`.`birthdate`,
    `driver`.`site`,
    `driver`.`first_name`,
    `driver`.`last_name`,
    `driver`.`education`,
    `driver`.`employmentType`,
    `driver`.`maritalStatus`,
    `driver`.`created_at`,
    `driver`.`updated_at`,
    (
        SELECT COUNT(*) FROM `driver`
    ) AS countPassenger,
    (
        SELECT CAST(AVG(`rating`) AS DECIMAL(10, 2))
        FROM `ratingPassenger`
        WHERE `ratingPassenger`.`driverID` = `driver`.`id`
    ) AS ratingPassenger,
    (
        SELECT COUNT(*) FROM `ratingPassenger`
        WHERE `ratingPassenger`.`driverID` = `driver`.`id`
    ) AS countDriverRate,
    (
        SELECT COUNT(*) FROM `canecl`
        WHERE `canecl`.`driverID` = `driver`.`id`
    ) AS countPassengerCancel,
    (
        SELECT CAST(AVG(`rating`) AS DECIMAL(10, 2))
        FROM `ratingDriver`
        WHERE `ratingDriver`.`driver_id` = `driver`.`id`
    ) AS passengerAverageRating,
    (
        SELECT COUNT(*) FROM `ratingDriver`
        WHERE `ratingDriver`.`driver_id` = `driver`.`id`
    ) AS countPassengerRate,
    (
        SELECT COUNT(*) FROM `ride`
        WHERE `ride`.`driver_id` = `driver`.`id`
    ) AS countPassengerRide,
    (
        SELECT `token`
        FROM `driverToken`
        WHERE `driverToken`.`captain_id` = `driver`.`id`
        LIMIT 1
    ) AS passengerToken
FROM `driver`
WHERE `driver`.`id` = :driver_id
ORDER BY passengerAverageRating DESC
LIMIT 10";

$stmt = $con->prepare($sql);
$stmt->bindParam(':driver_id', $driver_id);
$stmt->execute();

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// فك تشفير الحقول الحساسة بعد الجلب
foreach ($result as &$row) {
    $row['phone'] = $encryptionHelper->decryptData($row['phone']);
    $row['email'] = $encryptionHelper->decryptData($row['email']);
    $row['gender'] = $encryptionHelper->decryptData($row['gender']);
    $row['birthdate'] = $encryptionHelper->decryptData($row['birthdate']);
    $row['site'] = $encryptionHelper->decryptData($row['site']);
    $row['first_name'] = $encryptionHelper->decryptData($row['first_name']);
    $row['last_name'] = $encryptionHelper->decryptData($row['last_name']);
    $row['education'] = $encryptionHelper->decryptData($row['education']);
    $row['employmentType'] = $encryptionHelper->decryptData($row['employmentType']);
    $row['maritalStatus'] = $encryptionHelper->decryptData($row['maritalStatus']);
}

if ($stmt->rowCount() > 0) {
    jsonSuccess($result);
} else {
    jsonError("No records found");
}
?>