Update: 2026-07-09 04:13:14
This commit is contained in:
@@ -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':
|
||||
|
||||
Reference in New Issue
Block a user