Update: 2026-07-09 04:13:14

This commit is contained in:
Hamza-Ayed
2026-07-09 04:13:14 +03:00
parent 70718946f5
commit a526dae042
9 changed files with 198 additions and 42 deletions
@@ -1396,14 +1396,25 @@ class MapDriverController extends GetxController
box.remove(BoxName.passengerID);
box.remove(BoxName.rideId);
// 🔥 [Fix Actual Distance] نُرسل المسافة/المدة الفعليتين المُتراكمتين
// من GPS الحي (currentRideDistanceKm/_rideStartTime) بدل الحقلين
// الثابتين (distance/duration) اللذين يمثلان المسار المخطط أصلاً
// ولا يُحدَّثان أبداً أثناء الرحلة — كانا يُبطلان فعلياً حماية
// "إعادة حساب السعر من المسافة الفعلية" في الباك إند.
final double actualDistanceKm =
currentRideDistanceKm > 0 ? currentRideDistanceKm : safeParseDouble(distance);
final int actualDurationMinutes = _rideStartTime != null
? (DateTime.now().difference(_rideStartTime!).inSeconds / 60).ceil()
: safeParseInt(duration);
// تجهيز البيانات الخام الموحدة للسيرفر ليقوم بمعالجة الدفع والإنهاء معاً بنظام المعاملة الواحدة
final finishPayload = {
'rideId': rideId.toString(),
'driver_id': box.read(BoxName.driverID).toString(),
'passengerId': passengerId.toString(),
'status': 'Finished',
'actualDistance': distance.toString(),
'actualDuration': duration.toString(),
'actualDistance': actualDistanceKm.toString(),
'actualDuration': actualDurationMinutes.toString(),
'walletChecked': walletChecked.toString(),
'passengerWalletBurc': passengerWalletBurc.toString(),
'passengerToken': tokenPassenger.toString(),
@@ -1,5 +1,6 @@
import 'package:siro_driver/controller/firebase/firbase_messge.dart';
import 'package:siro_driver/controller/home/captin/map_driver_controller.dart';
import 'package:siro_driver/print.dart';
import 'package:siro_driver/views/widgets/error_snakbar.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
@@ -112,13 +113,18 @@ class RateController extends GetxController {
middleText: '',
confirm: MyElevatedButton(title: 'Ok', onPressed: () => Get.back()));
} else {
await CRUD().post(link: "${AppLink.server}/ride/rate/add.php", payload: {
final rateResponse =
await CRUD().post(link: "${AppLink.server}/ride/rate/add.php", payload: {
'passenger_id': passengerId,
'driverID': box.read(BoxName.driverID).toString(),
'rideId': rideId.toString(),
'rating': selectedRateItemId.toString(),
'comment': comment.text ?? 'none',
});
// 🔥 لا نمنع إكمال الرحلة إذا فشل التقييم، لكن يجب تسجيله بدل تجاهله بصمت
if (rateResponse is Map && rateResponse['status'] != 'success') {
Log.print('⚠️ Failed to submit passenger rating: $rateResponse');
}
CRUD().sendEmail(AppLink.sendEmailToPassengerForTripDetails, {
'startLocation':