Files
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

122 lines
5.5 KiB
PHP

<?php
require_once __DIR__ . '/../../connect.php';
// --- دالة تسجيل الأخطاء (تبقى كما هي) ---
function log_message($message) {
$log_file = __DIR__ . '/_log.txt';
$formatted_message = "[" . date("Y-m-d H:i:s") . "] " . $message . "\n";
file_put_contents($log_file, $formatted_message, FILE_APPEND);
}
log_message("--- New Request Received ---");
log_message("Incoming POST data: " . json_encode($_POST));
// --- قائمة المتغيرات (تبقى كما هي) ---
define('TABLE_NAME', 'write_argument_after_applied_from_background');
$params = [
'rideId', 'driver_id', 'passengerId', 'passengerLocation', 'passengerDestination',
'Duration', 'DurationToPassenger', 'durationOfRideValue', 'Distance', 'totalCost',
'paymentAmount', 'paymentMethod', 'WalletChecked', 'isHaveSteps', 'step0', 'step1',
'step2', 'step3', 'step4', 'passengerWalletBurc', 'tokenPassenger', 'name',
'phone', 'email', 'startNameLocation', 'endNameLocation', 'carType', 'kazan',
'direction', 'timeOfOrder', 'totalPassenger',
];
$data = [];
foreach ($params as $key) {
$data[$key] = isset($_POST[$key]) ? filterRequest($key) : null;
}
// التحقق من البيانات (يبقى كما هو)
if (empty($data['rideId']) || empty($data['driver_id']) || empty($data['passengerLocation']) || empty($data['passengerDestination'])) {
$error_msg = "Critical error: Missing required fields (rideId, driver_id, or locations). Check incoming keys.";
log_message($error_msg);
jsonError($error_msg);
exit();
}
// --- تم حذف تقسيم الإحداثيات ---
// لم نعد بحاجة لـ list($plat, $plng) = explode(...)
// --- التعديل الرئيسي هنا في جملة SQL ---
$sql = "
INSERT INTO " . TABLE_NAME . " (
ride_id, driver_id, passenger_id,
passenger_location, passenger_destination, -- These are now simple string fields
duration, duration_to_passenger, duration_of_ride,
distance, total_cost, payment_amount, payment_method,
wallet_checked, has_steps, step0, step1, step2, step3, step4,
passenger_wallet_burc, token_passenger,
name, phone, email,
start_name_location, end_name_location,
car_type, kazan, direction_url, time_of_order, total_passenger
) VALUES (
:rideId, :driver_id, :passengerId,
:passengerLocation, :passengerDestination, -- We removed the POINT() function
:Duration, :DurationToPassenger, :durationOfRideValue,
:Distance, :totalCost, :paymentAmount, :paymentMethod,
:WalletChecked, :isHaveSteps, :step0, :step1, :step2, :step3, :step4,
:passengerWalletBurc, :tokenPassenger,
:name, :phone, :email,
:startNameLocation, :endNameLocation,
:carType, :kazan, :direction, :timeOfOrder, :totalPassenger
)";
try {
$stmt = $con->prepare($sql);
// --- التعديل الرئيسي هنا في bindValue ---
$stmt->bindValue(':rideId', $data['rideId']);
$stmt->bindValue(':driver_id', $data['driver_id']);
$stmt->bindValue(':passengerId', $data['passengerId']);
// Bind the locations as simple strings
$stmt->bindValue(':passengerLocation', $data['passengerLocation']);
$stmt->bindValue(':passengerDestination', $data['passengerDestination']);
// باقي الـ bindValue تبقى كما هي
$stmt->bindValue(':Duration', intval($data['Duration']), PDO::PARAM_INT);
$stmt->bindValue(':DurationToPassenger', intval($data['DurationToPassenger']), PDO::PARAM_INT);
$stmt->bindValue(':durationOfRideValue', intval($data['durationOfRideValue']), PDO::PARAM_INT);
$stmt->bindValue(':Distance', (float)$data['Distance']);
$stmt->bindValue(':totalCost', (float)$data['totalCost']);
$stmt->bindValue(':paymentAmount', (float)$data['paymentAmount']);
$stmt->bindValue(':paymentMethod', $data['paymentMethod']);
$stmt->bindValue(':WalletChecked', $data['WalletChecked'] === 'true' ? 1 : 0, PDO::PARAM_INT);
$stmt->bindValue(':isHaveSteps', !empty($data['isHaveSteps']) ? 1 : 0, PDO::PARAM_INT);
$stmt->bindValue(':step0', $data['step0']);
$stmt->bindValue(':step1', $data['step1']);
$stmt->bindValue(':step2', $data['step2']);
$stmt->bindValue(':step3', $data['step3']);
$stmt->bindValue(':step4', $data['step4']);
$stmt->bindValue(':passengerWalletBurc', (float)$data['passengerWalletBurc']);
$stmt->bindValue(':tokenPassenger', $data['tokenPassenger']);
$stmt->bindValue(':name', $data['name']);
$stmt->bindValue(':phone', $data['phone']);
$stmt->bindValue(':email', $data['email']);
$stmt->bindValue(':startNameLocation', $data['startNameLocation']);
$stmt->bindValue(':endNameLocation', $data['endNameLocation']);
$stmt->bindValue(':carType', $data['carType']);
$stmt->bindValue(':kazan', (float)$data['kazan']);
$stmt->bindValue(':direction', $data['direction']);
$stmt->bindValue(':timeOfOrder', $data['timeOfOrder']);
$stmt->bindValue(':totalPassenger', intval($data['totalPassenger']), PDO::PARAM_INT);
log_message("SQL statement prepared successfully. Attempting to execute...");
if ($stmt->execute()) {
log_message("SUCCESS: Database insert was successful for rideId: " . $data['rideId']);
jsonSuccess(null, "نجحت الإضافة");
} else {
$errorInfo = $stmt->errorInfo();
$error_msg = "FAILURE: Database insert failed. PDO Error: " . implode(" | ", $errorInfo);
log_message($error_msg);
jsonError("failure");
}
} catch (Exception $e) {
$error_msg = "EXCEPTION: An unexpected error occurred: " . $e->getMessage();
log_message($error_msg);
jsonError("failure");
}
?>