Update: 2026-08-07 02:58:47
This commit is contained in:
@@ -233,6 +233,11 @@ class AppLink {
|
||||
/// تستخدم نفس دالة الحساب التي يستخدمها الإلغاء الفعلي، فما يُعرض
|
||||
/// للراكب هو ما سيُخصم منه بالضبط.
|
||||
static String get previewCancelFee => "$server/ride/rides/preview_cancel_fee.php";
|
||||
|
||||
/// تسجيل بلاغ سلامة لدى الشركة. يُستدعى **بالتوازي** مع رسالة الواتساب
|
||||
/// لجهة الاتصال الشخصية، لا بدلاً منها: الواتساب أسرع وصولاً لمن يهمّه
|
||||
/// الأمر، وهذه النقطة هي الأثر الذي تملكه الشركة وتستطيع التدخل به.
|
||||
static String get safetyIncident => "$server/safety/incident.php";
|
||||
//-----------------ridessss------------------
|
||||
static String get addRides => "$rideServerSide/ride/rides/add.php";
|
||||
static String get getRides => "$rideServerSide/ride/rides/get.php";
|
||||
|
||||
@@ -128,6 +128,10 @@ class UiInteractionsController extends GetxController {
|
||||
kolor: AppColor.redColor,
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
// الشركة أولاً ثم الواتساب: تسجيل البلاغ لا ينتظر شيئاً ولا
|
||||
// يؤخّر الرسالة (بلا await)، لكنه يُطلق قبلها حتى لا يضيع
|
||||
// إن أغلق المستخدم التطبيق بعد فتح واتساب.
|
||||
_reportSafetyIncident();
|
||||
_shareTripDetailsSOS();
|
||||
},
|
||||
),
|
||||
@@ -142,6 +146,32 @@ class UiInteractionsController extends GetxController {
|
||||
});
|
||||
}
|
||||
|
||||
/// يسجّل البلاغ لدى الشركة: يُنشئ سجل حادثة، يُجمّد إسناد الرحلات
|
||||
/// للسائق حتى المراجعة، ويُنبّه غرفة العمليات.
|
||||
///
|
||||
/// لا ينتظر ولا يرمي: زر الطوارئ يجب ألا يتعطّل أبداً بسبب الشبكة.
|
||||
/// أي فشل هنا لا يمنع رسالة الواتساب التي تليه.
|
||||
void _reportSafetyIncident({String trigger = 'sos_button'}) {
|
||||
try {
|
||||
final rideLifecycle = Get.find<RideLifecycleController>();
|
||||
final locSearch = Get.find<LocationSearchController>();
|
||||
|
||||
CRUD().post(
|
||||
link: AppLink.safetyIncident,
|
||||
payload: {
|
||||
'reporter_type': 'passenger',
|
||||
'reporter_id': box.read(BoxName.passengerID).toString(),
|
||||
'ride_id': rideLifecycle.rideId?.toString() ?? '',
|
||||
'trigger_type': trigger,
|
||||
'lat': locSearch.passengerLocation.latitude.toString(),
|
||||
'lng': locSearch.passengerLocation.longitude.toString(),
|
||||
},
|
||||
);
|
||||
} catch (e) {
|
||||
Log.print("⚠️ تعذّر تسجيل بلاغ السلامة: $e");
|
||||
}
|
||||
}
|
||||
|
||||
void _shareTripDetailsSOS() {
|
||||
final rideLifecycle = Get.find<RideLifecycleController>();
|
||||
final locSearch = Get.find<LocationSearchController>();
|
||||
|
||||
Reference in New Issue
Block a user