Update: 2026-06-11 18:22:57

This commit is contained in:
Hamza-Ayed
2026-06-11 18:22:59 +03:00
parent c5170a88d2
commit 727068b668
629 changed files with 46050 additions and 46109 deletions

Binary file not shown.

View File

@@ -0,0 +1,103 @@
<?php
include "../../connect.php";
$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(`driver`.`id`)
FROM
`driver`
) AS countPassenger,
(
SELECT
CAST(AVG(`rating`) AS DECIMAL(10, 2))
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`driverID` = `driver`.`id`
) AS ratingPassenger,
(
SELECT
COUNT(`ratingPassenger`.`driverID`)
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`driverID` = `driver`.`id`
) AS countDriverRate,
(
SELECT
COUNT(`canecl`.`driverID`)
FROM
`canecl`
WHERE
`canecl`.`driverID` = `driver`.`id`
) AS countPassengerCancel,
(
SELECT
CAST(
AVG(`ratingDriver`.`rating`) AS DECIMAL(10, 2)
)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`driver_id` = `driver`.`id`
) AS passengerAverageRating,
(
SELECT
COUNT(`ratingDriver`.`driver_id`)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`driver_id` = `driver`.`id`
) AS countPassengerRate,
(
SELECT
COUNT(`ride`.`driver_id`)
FROM
`ride`
WHERE
`ride`.`driver_id` = `driver`.`id`
) AS countPassengerRide,
(
SELECT
`token`
FROM
`driverToken`
WHERE
`driverToken`.`captain_id` = `driver`.`id`
) AS passengerToken
FROM
`driver`
ORDER BY
passengerAverageRating
DESC
LIMIT 10";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,109 @@
<?php
include "../../connect.php";
$driver_id = filterRequest("driver_id");
$driverEmail = filterRequest("driverEmail");
$driverPhone = filterRequest("driverPhone");
$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(`driver`.`id`)
FROM
`driver`
) AS countPassenger,
(
SELECT
CAST(AVG(`rating`) AS DECIMAL(10, 2))
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`driverID` = `driver`.`id`
) AS ratingPassenger,
(
SELECT
COUNT(`ratingPassenger`.`driverID`)
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`driverID` = `driver`.`id`
) AS countDriverRate,
(
SELECT
COUNT(`canecl`.`driverID`)
FROM
`canecl`
WHERE
`canecl`.`driverID` = `driver`.`id`
) AS countPassengerCancel,
(
SELECT
CAST(
AVG(`ratingDriver`.`rating`) AS DECIMAL(10, 2)
)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`driver_id` = `driver`.`id`
) AS passengerAverageRating,
(
SELECT
COUNT(`ratingDriver`.`driver_id`)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`driver_id` = `driver`.`id`
) AS countPassengerRate,
(
SELECT
COUNT(`ride`.`driver_id`)
FROM
`ride`
WHERE
`ride`.`driver_id` = `driver`.`id`
) AS countPassengerRide,
(
SELECT
`token`
FROM
`driverToken`
WHERE
`driverToken`.`captain_id` = `driver`.`id`
) AS passengerToken
FROM
`driver`
WHERE driver.email = '$driverEmail' OR driver.phone = '$driverPhone' OR driver.id = '$driver_id'
ORDER BY
passengerAverageRating
DESC
LIMIT 10
";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,107 @@
<?php
include "../../connect.php";
$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(`driver`.`id`)
FROM
`driver`
) AS countPassenger,
(
SELECT
CAST(AVG(`rating`) AS DECIMAL(10, 2))
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`driverID` = `driver`.`id`
) AS ratingPassenger,
(
SELECT
COUNT(`ratingPassenger`.`driverID`)
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`driverID` = `driver`.`id`
) AS countDriverRate,
(
SELECT
COUNT(`canecl`.`driverID`)
FROM
`canecl`
WHERE
`canecl`.`driverID` = `driver`.`id`
) AS countPassengerCancel,
(
SELECT
CAST(
AVG(`ratingDriver`.`rating`) AS DECIMAL(10, 2)
)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`driver_id` = `driver`.`id`
) AS passengerAverageRating,
(
SELECT
COUNT(`ratingDriver`.`driver_id`)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`driver_id` = `driver`.`id`
) AS countPassengerRate,
(
SELECT
COUNT(`ride`.`driver_id`)
FROM
`ride`
WHERE
`ride`.`driver_id` = `driver`.`id`
) AS countPassengerRide,
(
SELECT
`token`
FROM
`driverToken`
WHERE
`driverToken`.`captain_id` = `driver`.`id`
) AS passengerToken
FROM
`driver`
WHERE
driver.id = '$driver_id'
ORDER BY
passengerAverageRating
DESC
LIMIT 10
";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,145 @@
<?php
include "../../connect.php";
$sql = "SELECT
(
SELECT
TIME_FORMAT(
AVG(
TIMESTAMPDIFF(
SECOND,
rideTimeStart,
rideTimeFinish
)
),
'%Hh %im'
) AS avg_duration
FROM
ride
) AS driver_avg_duration,(
SELECT
COUNT(*) AS total_rows
FROM
(
SELECT
COUNT(driver_id)
FROM
ride
GROUP BY
driver_id
) sub
) AS num_Driver,
(
SELECT
COUNT(*)
FROM
ride
) AS total_rides,
(
SELECT
COUNT(*)
FROM
ride
WHERE
STATUS
= 'waiting'
) AS ongoing_rides,
(
SELECT
COUNT(*)
FROM
ride
WHERE
STATUS
= 'Finished'
) AS completed_rides,
(
SELECT
COUNT(*)
FROM
ride
WHERE
STATUS
= 'cancelled'
) AS cancelled_rides,
(
SELECT
MAX(
TIME_FORMAT(
TIMESTAMPDIFF(
SECOND,
rideTimeStart,
rideTimeFinish
),
'%Hh %im'
)
) AS duration
FROM
ride
) AS longest_duration,
(
SELECT
ROUND(SUM(DISTANCE),
2)
FROM
ride
) AS total_distance,
(
SELECT
ROUND(AVG(DISTANCE),
2)
FROM
ride
) AS average_distance,
(
SELECT
ROUND(MAX(DISTANCE),
2)
FROM
ride
) AS longest_distance,
(
SELECT
SUM(price_for_driver)
FROM
ride
) AS total_driver_earnings,
(
SELECT
SUM(`price_for_passenger`)
FROM
ride
) AS total_company_earnings,
(
ROUND(
(
SELECT
SUM(`price_for_passenger`)
FROM
ride
) /(
SELECT
SUM(price_for_driver)
FROM
ride
),
2
)
) AS companyPercent
FROM
ride
LIMIT 1";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,35 @@
<?php
include "../../connect.php";
$currentYear = date('Y');
$sql = "SELECT
YEAR(date) AS year,
MONTH(date) AS month,
DAY(date) AS day,
COUNT(*) AS rides_count,
(SELECT COUNT(*) FROM ride WHERE MONTH(date) = MONTH(CURRENT_DATE) AND YEAR(date) = YEAR(CURRENT_DATE)) AS current_month_rides_count
FROM
ride
GROUP BY
YEAR(date),
MONTH(date),
DAY(date)
ORDER BY
YEAR(date),
MONTH(date),
DAY(date)";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,25 @@
<?php
include "../../connect.php";
$deviceNumber = filterRequest("deviceNumber"); // Assuming you'll get deviceNumber as input
$name = filterRequest("name");
$sql = "INSERT INTO `adminUser`(`id`, `device_number`, `name`) VALUES (
UUID(),
:deviceNumber,
:name
)";
$stmt = $con->prepare($sql);
$stmt->bindParam(':deviceNumber', $deviceNumber);
$stmt->bindParam(':name', $name);
$stmt->execute();
if ($stmt->rowCount() > 0) {
// Print a success message
printSuccess($message = "Admin user data saved successfully");
} else {
// Print a failure message
printFailure($message = "Failed to save admin user data");
}
?>

View File

@@ -0,0 +1,24 @@
<?php
include "../../connect.php";
$device_number = filterRequest("device_number");
$sql = "SELECT
*
FROM
`adminUser`
WHERE
`device_number` = '$device_number'";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (count($result) === 1) {
// Print the first record as a success message
printSuccess( $result[0]);
} else {
// Print a failure message
printFailure($message = "Failed to retrieve Password or user name incorrect");
}
?>

View File

@@ -0,0 +1,404 @@
<?php
//dashbord.php
include "../connect.php";
// $passengerID = filterRequest("passengerID");
$sql = "SELECT
COALESCE(
(
SELECT
COUNT(`email`)
FROM
`passengers`
),
0
) AS countPassengers,
COALESCE(
(
SELECT
COUNT(`email`)
FROM
`driver`
),
0
) AS countDriver,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`ride`
),
0
) AS countRide,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`passengers`
WHERE
`passengers`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE)
),
0
) AS countPassengersThisMonth,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`ride`
WHERE
`ride`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE)
),
0
) AS countRideThisMonth,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`driver`
WHERE
`driver`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE)
),
0
) AS countDriverThisMonth,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`CarRegistration`
WHERE
`CarRegistration`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE)
),
0
) AS countCarRegistrationThisMonth,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`complaint`
WHERE
`complaint`.`date_filed` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE)
),
0
) AS countComplaintThisMonth,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`complaint`
WHERE
`complaint`.`date_filed` BETWEEN DATE_FORMAT(
DATE_SUB(
CURRENT_DATE,
INTERVAL WEEKDAY(CURRENT_DATE) DAY
),
'%Y-%m-%d'
) AND DATE_FORMAT(
DATE_ADD(
DATE_SUB(
CURRENT_DATE,
INTERVAL WEEKDAY(CURRENT_DATE) DAY
),
INTERVAL 6 DAY
),
'%Y-%m-%d'
)
),
0
) AS countComplaintThisWeek,
COALESCE(
(
SELECT
COUNT(`id`)
FROM
`complaint`
WHERE
`complaint`.`date_filed` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-%d') AND DATE_FORMAT(CURRENT_DATE, '%Y-%m-%d')
),
0
) AS countComplaintToday,
COALESCE(
(
SELECT
SUM(`payments`.`amount`)
FROM
`payments`
WHERE
`payments`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) AND `payments`.`payment_method` IN(
'visa-in',
'visa',
'visaRide',
'TransferFrom',
'payout',
'TransferTo'
)
),
0
) AS payments,
COALESCE(
(
SELECT
SUM(`driverWallet`.`amount`)
FROM
`driverWallet`
WHERE
`driverWallet`.`dateCreated` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) AND `driverWallet`.`paymentMethod` IN('visa', '')
),
0
) AS driverWallet,
COALESCE(
(
SELECT
SUM(`passengerWallet`.`balance`)
FROM
`passengerWallet`
WHERE
`passengerWallet`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE)
),
0
) AS passengerWallet,
COALESCE(
(
SELECT
SUM(`seferWallet`.`amount`)
FROM
`seferWallet`
WHERE
`seferWallet`.`createdAt` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE)
),
0
) AS seferWallet,
COALESCE(
(
SELECT
TIME_FORMAT(
AVG(
TIMESTAMPDIFF(
SECOND,
rideTimeStart,
rideTimeFinish
)
),
'%Hh %im'
) AS avg_duration
FROM
ride
),
'0:00'
) AS driver_avg_duration,
COALESCE(
(
SELECT
COUNT(*) AS total_rows
FROM
(
SELECT
COUNT(driver_id)
FROM
ride
GROUP BY
driver_id
) sub
),
0
) AS num_Driver,
COALESCE(
(
SELECT
COUNT(*)
FROM
ride
),
0
) AS total_rides,
COALESCE(
(
SELECT
COUNT(*)
FROM
ride
WHERE
STATUS
= 'waiting'
),
0
) AS ongoing_rides,
COALESCE(
(
SELECT
COUNT(*)
FROM
ride
WHERE
STATUS
= 'Finished'
),
0
) AS completed_rides,
COALESCE(
(
SELECT
COUNT(*)
FROM
ride
WHERE
STATUS
= 'cancelled'
),
0
) AS cancelled_rides,
COALESCE(
(
SELECT
MAX(
TIME_FORMAT(
TIMESTAMPDIFF(
SECOND,
rideTimeStart,
rideTimeFinish
),
'%Hh %im'
)
) AS duration
FROM
ride
),
'0:00'
) AS longest_duration,
COALESCE(
(
SELECT
ROUND(SUM(DISTANCE),
2)
FROM
ride
),
0
) AS total_distance,
COALESCE(
(
SELECT
ROUND(AVG(DISTANCE),
2)
FROM
ride
),
0
) AS average_distance,
COALESCE(
(
SELECT
ROUND(MAX(DISTANCE),
2)
FROM
ride
),
0
) AS longest_distance,
COALESCE(
(
SELECT
SUM(price_for_driver)
FROM
ride
WHERE
STATUS
= 'Finished'
),
0
) AS total_driver_earnings,
COALESCE(
ROUND(
(
SELECT
AVG(`ride`.`price_for_passenger`)
FROM
`ride`
)
),
0
) AS avg_passenger_price,
COUNT(
CASE WHEN HOUR(created_at) BETWEEN 6 AND 11 THEN id
END
) AS morning_ride_count,
COUNT(
CASE WHEN HOUR(created_at) BETWEEN 12 AND 17 THEN id
END
) AS evening_ride_count,
COUNT(
CASE WHEN(
HOUR(created_at) BETWEEN 18 AND 23 OR HOUR(created_at) BETWEEN 0 AND 5
) THEN id
END
) AS night_ride_count,
(
SELECT
COUNT(*) AS ride_count
FROM
ride
WHERE
`ride`.`carType` = 'Comfort'
) AS comfort,
(
SELECT
COUNT(*) AS ride_count
FROM
ride
WHERE
`ride`.`carType` = 'Speed'
) AS speed,
(
SELECT
COUNT(*) AS ride_count
FROM
ride
WHERE
`ride`.`carType` = 'Lady'
) AS lady,
COUNT(
CASE WHEN HOUR(created_at) BETWEEN 6 AND 11 THEN id
END
) AS morning_ride_count,
COUNT(
CASE WHEN HOUR(created_at) BETWEEN 12 AND 17 THEN id
END
) AS evening_ride_count,
COUNT(
CASE WHEN(
HOUR(created_at) BETWEEN 18 AND 23 OR HOUR(created_at) BETWEEN 0 AND 5
) THEN id
END
) AS night_ride_count
,
(SELECT
COUNT(*)
FROM
payments
WHERE
payment_method = 'TransferFrom'
)AS transfer_from_count
FROM
`passengers`
LIMIT 1;";
$stmt = $con->prepare($sql);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,110 @@
<?php
include "../connect.php";
$sql = "SELECT
`passengers`.`id`,
`passengers`.`phone`,
`passengers`.`email`,
`passengers`.`gender`,
`passengers`.`status`,
`passengers`.`birthdate`,
`passengers`.`site`,
`passengers`.`first_name`,
`passengers`.`last_name`,
`passengers`.`sosPhone`,
`passengers`.`education`,
`passengers`.`employmentType`,
`passengers`.`maritalStatus`,
`passengers`.`created_at`,
`passengers`.`updated_at`,
(
SELECT
COUNT(`passengers`.`id`)
FROM
`passengers`
) AS countPassenger,
(
SELECT
COUNT(`feedBack`.id)
FROM
`feedBack`
) AS countFeedback,
(
SELECT
CAST(AVG(`rating`) as DECIMAL(10,2))
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`passenger_id` = `passengers`.`id`
) AS ratingPassenger,
(
SELECT
COUNT(`ratingPassenger`.`driverID`)
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`passenger_id` = `passengers`.`id`
) AS countDriverRate,
(
SELECT
COUNT(`canecl`.`passengerID`)
FROM
`canecl`
WHERE
`canecl`.`passengerID` = `passengers`.`id`
) AS countPassengerCancel,
(
SELECT
CAST(AVG(`ratingDriver`.`rating`) as DECIMAL(10,2))
FROM
`ratingDriver`
WHERE
`ratingDriver`.`passenger_iD` = `passengers`.`id`
) AS passengerAverageRating,
(
SELECT
COUNT(`ratingDriver`.`driver_id`)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`passenger_id` = `passengers`.`id`
) AS countPassengerRate,
(
SELECT
COUNT(`ride`.`passenger_id`)
FROM
`ride`
WHERE
`ride`.`passenger_id` = `passengers`.`id`
) AS countPassengerRide
,
(
SELECT
`tokens`.`token`
FROM
`tokens`
WHERE
`tokens`.`passengerID` = `passengers`.`id`
) AS passengerToken
FROM
`passengers`
GROUP BY
`passengers`.`id`
ORDER BY
countPassengerRide
DESC
LIMIT 10";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,111 @@
<?php
include "../connect.php";
$passengerID = filterRequest("passengerID");
$sql = "SELECT
`passengers`.`id`,
`passengers`.`phone`,
`passengers`.`email`,
`passengers`.`gender`,
`passengers`.`status`,
`passengers`.`birthdate`,
`passengers`.`site`,
`passengers`.`first_name`,
`passengers`.`last_name`,
`passengers`.`sosPhone`,
`passengers`.`education`,
`passengers`.`employmentType`,
`passengers`.`maritalStatus`,
`passengers`.`created_at`,
`passengers`.`updated_at`,
(
SELECT
COUNT(`passengers`.`id`)
FROM
`passengers`
) AS countPassenger,
(
SELECT
COUNT(`feedBack`.id)
FROM
`feedBack`
) AS countFeedback,
(
SELECT
CAST(AVG(`rating`) as DECIMAL(10,2))
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`passenger_id` = `passengers`.`id`
) AS ratingPassenger,
(
SELECT
COUNT(`ratingPassenger`.`driverID`)
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`passenger_id` = `passengers`.`id`
) AS countDriverRate,
(
SELECT
COUNT(`canecl`.`passengerID`)
FROM
`canecl`
WHERE
`canecl`.`passengerID` = `passengers`.`id`
) AS countPassengerCancel,
(
SELECT
CAST(AVG(`ratingDriver`.`rating`) as DECIMAL(10,2))
FROM
`ratingDriver`
WHERE
`ratingDriver`.`passenger_iD` = `passengers`.`id`
) AS passengerAverageRating,
(
SELECT
COUNT(`ratingDriver`.`driver_id`)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`passenger_id` = `passengers`.`id`
) AS countPassengerRate,
(
SELECT
COUNT(`ride`.`passenger_id`)
FROM
`ride`
WHERE
`ride`.`passenger_id` = `passengers`.`id`
) AS countPassengerRide,
(
SELECT
`tokens`.`token`
FROM
`tokens`
WHERE
`tokens`.`passengerID` = `passengers`.`id`
) AS passengerToken
FROM
`passengers` WHERE passengers.id='$passengerID'
GROUP BY
`passengers`.`id`
ORDER BY
countPassengerRide
DESC
";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,112 @@
<?php
include "../connect.php";
$passengerEmail = filterRequest("passengerEmail");
$passengerId = filterRequest("passengerId");
$passengerphone = filterRequest("passengerphone");
$sql = "SELECT
`passengers`.`id`,
`passengers`.`phone`,
`passengers`.`email`,
`passengers`.`gender`,
`passengers`.`status`,
`passengers`.`birthdate`,
`passengers`.`site`,
`passengers`.`first_name`,
`passengers`.`last_name`,
`passengers`.`sosPhone`,
`passengers`.`education`,
`passengers`.`employmentType`,
`passengers`.`maritalStatus`,
`passengers`.`created_at`,
`passengers`.`updated_at`,
(
SELECT
COUNT(`passengers`.`id`)
FROM
`passengers`
) AS countPassenger,
(
SELECT
COUNT(`feedBack`.id)
FROM
`feedBack`
) AS countFeedback,
(
SELECT
CAST(AVG(`rating`) AS DECIMAL(10, 2))
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`passenger_id` = `passengers`.`id`
) AS ratingPassenger,
(
SELECT
COUNT(`ratingPassenger`.`driverID`)
FROM
`ratingPassenger`
WHERE
`ratingPassenger`.`passenger_id` = `passengers`.`id`
) AS countDriverRate,
(
SELECT
COUNT(`canecl`.`passengerID`)
FROM
`canecl`
WHERE
`canecl`.`passengerID` = `passengers`.`id`
) AS countPassengerCancel,
(
SELECT
CAST(
AVG(`ratingDriver`.`rating`) AS DECIMAL(10, 2)
)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`passenger_iD` = `passengers`.`id`
) AS passengerAverageRating,
(
SELECT
COUNT(`ratingDriver`.`driver_id`)
FROM
`ratingDriver`
WHERE
`ratingDriver`.`passenger_id` = `passengers`.`id`
) AS countPassengerRate,
(
SELECT
COUNT(`ride`.`passenger_id`)
FROM
`ride`
WHERE
`ride`.`passenger_id` = `passengers`.`id`
) AS countPassengerRide,
(
SELECT
`tokens`.`token`
FROM
`tokens`
WHERE
`tokens`.`passengerID` = `passengers`.`id`
) AS passengerToken
FROM
`passengers`
WHERE
passengers.email = '$passengerEmail' OR passengers.phone = '$passengerphone' OR passengers.id = '$passengerId'
";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// Print all the records
// printData($result);
printSuccess($data = $result);
} else {
// Print a failure message
printFailure($message = "No records found");
}
?>

View File

@@ -0,0 +1,47 @@
<?php
include "../connect.php";
$sql = "
SELECT
COALESCE(
(SELECT SUM(amount) FROM payments
WHERE created_at BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())
AND payment_method IN ('visa', 'visa-in', 'visaRide', 'TransferFrom', 'payout', 'TransferTo')),
0
) AS payments,
COALESCE(
(SELECT SUM(amount) FROM driverWallet
WHERE dateCreated BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())
AND paymentMethod IN ('visa', '')),
0
) AS driverWallet,
COALESCE(
(SELECT SUM(balance) FROM passengerWallet
WHERE created_at BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())),
0
) AS passengerWallet,
COALESCE(
(SELECT SUM(amount) FROM seferWallet
WHERE createdAt BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())),
0
) AS seferWallet;
";
$stmt = $con->prepare($sql);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// ✅ Always log what were sending back
error_log('📊 Dashboard Result: ' . json_encode($result, JSON_PRETTY_PRINT));
printSuccess($result);
} else {
error_log('⚠️ Dashboard: No records found');
printFailure("No records found");
}
?>

View File

@@ -0,0 +1,51 @@
<?php
include "../connect.php";
// $driverID = filterRequest("driverID");
$sql = "SELECT
COUNT(DISTINCT driverID) AS driver_count,
`payments`.driverID,
COALESCE(SUM(amount),
0) AS total_amount,
`driver`.`phone`,
`driver`.`name_arabic`,
`driver`.`accountBank`,
`driver`.`bankCode`,
`driver`.`email`
FROM
payments
LEFT JOIN `driver` ON `driver`.`id` = payments.driverID
WHERE
isGiven = 'waiting' AND payment_method IN(
'visa-in',
'visa',
'visaRide',
'TransferFrom',
'payout',
'TransferTo',
'payFromSeferToDriver'
) AND WEEK(`payments`.created_at) = WEEK(CURRENT_DATE)
GROUP BY
driverID
HAVING
COALESCE(SUM(amount),
0) > 0
AND total_amount > 100
LIMIT 0, 25;
";
$stmt = $con->prepare($sql);
$stmt->execute();
if ($stmt->rowCount() > 0) {
// Fetch the record
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
printSuccess( $row);
}
else{
// Print a failure message
printFailure($message = "No wallet record found");
}
?>

View File

@@ -0,0 +1,79 @@
<?php
// File: send_payment_received_email.php
// Connect to the database
include '../connect.php';
// Get trip details from the database or API
$driverID = filterRequest('driverID');
$totalAmount = filterRequest('total_amount');
$driverPhone = filterRequest('phone');
$driverArabicName = filterRequest('name_arabic');
$accountBank = filterRequest('accountBank');
$driverEmail = filterRequest('email');
// Determine the language preference
$language = 'en'; // Default to English
// Email content
$bodyEmail = "<html>
<head>
<style>
/* Email styling here */
</style>
</head>
<body>
<div class='container'>
<img src='https://lh3.googleusercontent.com/a/ACg8ocLe5TgvmTjoFx7KjIoWGxX0G2ryKBTzUZi2-mBYb9DI1dsKQ0WEYh5ZPdnA3WeFbp9VnaTNzJuA0w8S4RiQ7042AKrOwXo3=s576-c-no' style='width: 150px; margin: 20px auto; display: block;'>
<h1>Payment Sent - SEFER</h1>
<p>Thank you for being a valued driver on the SEFER platform.</p>
<p>SEFER has sent a payment of $totalAmount to your account. Please note that it may take a few days for the bank to process this transaction.</p>
<p>We appreciate your service and hope to continue our partnership.</p>
<p>Regards,<br> SEFER Team</p>
</div>
</body>
</html>";
// Arabic email content
$bodyEmailAr = "<html>
<head>
<style>
/* Arabic email styling here */
</style>
</head>
<body dir='rtl'>
<div class='container'>
<img src='YOUR_SEFER_LOGO_URL_HERE' alt='SEFER' style='width: 150px; margin: 20px auto; display: block;'>
<h1>تم إرسال الدفع - سفر</h1>
<p>شكراً لك على كونك سائقًا متميزًا على منصة سفر.</p>
<p>لقد أرسلت سفر دفعة قدرها $totalAmount إلى حسابك. يرجى ملاحظة أنه قد يستغرق البنك عدة أيام لمعالجة هذه المعاملة.</p>
<p>نحن نقدر خدمتك ونأمل أن نستمر في شراكتنا.</p>
<p>مع خالص التحية،<br> فريق سفر</p>
</div>
</body>
</html>";
// Set the email headers
$supportEmail = 'seferteam@sefer.live';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$headers .= "From: $supportEmail\r\n";
// Send email to the driver
if (!empty($driverEmail)) {
if (mail($driverEmail, "Payment Sent - SEFER", $bodyEmail, $headers)) {
// echo "Email sent successfully to $driverEmail";
printSuccess($message = "'Email sent successfully to ' . $driverEmail");
} else {
printFailure($message = "Failed to send email to ' . $driverEmail");
}
} else {
printFailure($message = "Invalid email address: ' . $driverEmail");
}
?>

View File

@@ -0,0 +1,28 @@
<?php
// Admin/v2/financial/dashboard_wallet.php
// هذا الملف يجب أن يرفع على سيرفر المحفظة فقط!
require_once __DIR__ . '/../../../connect.php'; // مسار الاتصال الخاص بسيرفر المحفظة
if ($role !== 'admin' && $role !== 'super_admin') {
jsonError("Unauthorized", 403);
}
try {
$stmt = $con->prepare("
SELECT
(SELECT IFNULL(SUM(amount), 0) FROM payments WHERE status = 'completed') as payments,
(SELECT IFNULL(SUM(balance), 0) FROM driverWallet) as driverWallet,
(SELECT IFNULL(SUM(balance), 0) FROM passengerWallet) as passengerWallet,
(SELECT IFNULL(SUM(balance), 0) FROM seferWallet) as seferWallet
");
$stmt->execute();
$stats = $stmt->fetch(PDO::FETCH_ASSOC);
// نعيد البيانات داخل رسالة (Array) لتطابق توقعات الفلاتر
jsonSuccess([$stats]);
} catch (Exception $e) {
jsonError('Wallet Query failed: ' . $e->getMessage(), 500);
}
?>

View File

@@ -0,0 +1,40 @@
<?php
// Admin/v2/financial/settlements.php
require_once __DIR__ . '/../../../connect.php';
try {
// جلب السائقين الذين لديهم مستحقات أو مديونية
// الحسبة: إجمالي (price_for_driver) من الرحلات المكتملة
$stmt = $con->prepare("
SELECT
d.id, d.first_name, d.last_name, d.phone,
SUM(r.price_for_driver) as total_earned,
COUNT(r.id) as total_rides
FROM driver d
LEFT JOIN ride r ON d.id = r.driver_id AND r.status = 'Finished'
GROUP BY d.id
HAVING total_earned > 0
ORDER BY total_earned DESC
LIMIT 50
");
$stmt->execute();
$drivers = $stmt->fetchAll(PDO::FETCH_ASSOC);
// فك تشفير البيانات
foreach ($drivers as &$driver) {
$driver['first_name'] = $encryptionHelper->decryptData($driver['first_name']);
$driver['last_name'] = $encryptionHelper->decryptData($driver['last_name']);
$driver['phone'] = $encryptionHelper->decryptData($driver['phone']);
}
echo json_encode([
'status' => 'success',
'data' => $drivers
]);
} catch (Exception $e) {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
?>

View File

@@ -0,0 +1,30 @@
<?php
// Admin/v2/financial/stats.php
require_once __DIR__ . '/../../../connect.php';
try {
// إحصائيات مالية عامة
$stmt = $con->prepare("
SELECT
SUM(price_for_passenger) as total_revenue,
SUM(price_for_driver) as total_driver_pay,
SUM(price_for_passenger - price_for_driver) as total_platform_commission,
(SELECT SUM(amount) FROM payments WHERE payment_method = 'Cash') as cash_payments,
(SELECT SUM(amount) FROM payments WHERE payment_method != 'Cash') as digital_payments
FROM ride
WHERE status = 'Finished'
");
$stmt->execute();
$stats = $stmt->fetch(PDO::FETCH_ASSOC);
echo json_encode([
'status' => 'success',
'data' => $stats
]);
} catch (Exception $e) {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
?>