Update: 2026-08-07 02:58:47

This commit is contained in:
Hamza-Ayed
2026-08-07 02:58:47 +03:00
parent e070c2d9a8
commit f0ea698ab2
7 changed files with 407 additions and 0 deletions
+5
View File
@@ -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>();