Update: 2026-07-09 01:55:25
This commit is contained in:
@@ -16,23 +16,23 @@ try {
|
||||
// =================================================================================
|
||||
// 🛠️ دالة مساعدة: إرسال الرحلة لسوق السائقين (Marketplace Broadcast)
|
||||
// =================================================================================
|
||||
function broadcastRideToMarket($rideId, $lat, $lng, $payloadData) {
|
||||
$url = getenv('LOCATION_SOCKET_URL');
|
||||
function broadcastRideToMarket($rideId, $lat, $lng, $payloadData, $extraMarketData = []) {
|
||||
$url = getenv('LOCATION_SOCKET_URL');
|
||||
$INTERNAL_KEY = function_exists('getInternalSocketKey') ? getInternalSocketKey() : '';
|
||||
$marketPayload = [
|
||||
$marketPayload = array_merge([
|
||||
'id' => (string)$rideId,
|
||||
'start_lat' => $lat,
|
||||
'start_lng' => $lng,
|
||||
'end_lat' => $payloadData[3],
|
||||
'end_lng' => $payloadData[4],
|
||||
'price' => $payloadData[2],
|
||||
'carType' => $payloadData[31],
|
||||
'startName' => $payloadData[29],
|
||||
'endName' => $payloadData[30],
|
||||
'distance' => $payloadData[11],
|
||||
'duration' => $payloadData[15],
|
||||
'passengerRate' => $payloadData[33],
|
||||
];
|
||||
'price' => $payloadData[2],
|
||||
'carType' => $payloadData[31],
|
||||
'startName' => $payloadData[29],
|
||||
'endName' => $payloadData[30],
|
||||
'distance' => $payloadData[11],
|
||||
'duration' => $payloadData[15],
|
||||
'passengerRate' => $payloadData[33],
|
||||
], $extraMarketData);
|
||||
|
||||
$postData = [
|
||||
'action' => 'market_new_ride',
|
||||
@@ -254,6 +254,36 @@ try {
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
$kazan = (float) $price - (float) $price_for_driver;
|
||||
$passengerFp = isset($_SERVER['HTTP_X_DEVICE_FP']) ? $_SERVER['HTTP_X_DEVICE_FP'] : '';
|
||||
|
||||
// ── 🆕 "أرباحك أعلى" — مقارنة أجرة السائق عندنا مع أقرب منافس ─────
|
||||
require_once __DIR__ . '/../pricing/pricing_helper.php';
|
||||
$extraDispatchData = [];
|
||||
try {
|
||||
$rideCountryCode = 'JO';
|
||||
$stmtCountry = $con->prepare("
|
||||
SELECT country_code FROM passenger_opening_locations
|
||||
WHERE passenger_id = :pid
|
||||
ORDER BY created_at DESC LIMIT 1
|
||||
");
|
||||
$stmtCountry->execute([':pid' => $passenger_id]);
|
||||
$foundCountry = $stmtCountry->fetchColumn();
|
||||
if ($foundCountry) $rideCountryCode = strtoupper($foundCountry);
|
||||
|
||||
$durationMinForEarnings = is_numeric($duration_text) ? (float)$duration_text : 0.0;
|
||||
$earnings = estimateDriverEarningsAdvantage(
|
||||
$rideCountryCode,
|
||||
(float)$distance,
|
||||
$durationMinForEarnings,
|
||||
(float)$price_for_driver,
|
||||
$redis ?? null
|
||||
);
|
||||
if ($earnings) {
|
||||
$extraDispatchData['driver_earnings_extra'] = (string)$earnings['extra'];
|
||||
$extraDispatchData['driver_earnings_currency'] = $earnings['currency'];
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
error_log("[add_ride] Driver earnings estimate failed: " . $e->getMessage());
|
||||
}
|
||||
$payload = [
|
||||
(string) $startLat,
|
||||
(string) $startLng,
|
||||
@@ -290,6 +320,10 @@ try {
|
||||
number_format($kazan, 2, '.', ''),
|
||||
(string) $passenger_rating,
|
||||
(string) $is_prime, // 👑 Index 34: Prime Status
|
||||
// 🆕 Index 35/36: "أرباحك أعلى" — تُقرأ من نافذة الـ Overlay (order_over_lay.dart)
|
||||
// اللي بتوصلها البيانات كـ List مش كـ Map مسمّى مثل FCM
|
||||
isset($extraDispatchData['driver_earnings_extra']) ? $extraDispatchData['driver_earnings_extra'] : '',
|
||||
isset($extraDispatchData['driver_earnings_currency']) ? $extraDispatchData['driver_earnings_currency'] : '',
|
||||
];
|
||||
|
||||
// Direct dispatch للسائقين القريبين
|
||||
@@ -369,14 +403,14 @@ try {
|
||||
}
|
||||
|
||||
if (!empty($driversData)) {
|
||||
dispatchRideToDrivers($driversData, $insertedId, $payload, $start_name_loc, $encryptionHelper);
|
||||
dispatchRideToDrivers($driversData, $insertedId, $payload, $start_name_loc, $encryptionHelper, $extraDispatchData);
|
||||
error_log("[add_ride] Dispatched RideID=$insertedId to " . count($driversData) . " drivers.");
|
||||
} else {
|
||||
error_log("[add_ride] No direct drivers found for RideID=$insertedId — market only.");
|
||||
}
|
||||
|
||||
// Broadcast للـ marketplace دائماً
|
||||
broadcastRideToMarket($insertedId, $startLat, $startLng, $payload);
|
||||
broadcastRideToMarket($insertedId, $startLat, $startLng, $payload, $extraDispatchData);
|
||||
|
||||
// رد النجاح للتطبيق
|
||||
printSuccess($insertedId);
|
||||
|
||||
Reference in New Issue
Block a user