diff --git a/.env b/.env
index 79fab3d..db7c03a 100644
--- a/.env
+++ b/.env
@@ -14,12 +14,11 @@ chatGPTkeySeferNew=zg-Z4AJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl
secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl
stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl
llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl
-serverPHP=https://sefer.click/sefer
+serverPHP=https://api.sefer.live/sefer
seferAlexandriaServer=https://seferalexandria.site/sefer
-seferPaymentServer=https://seferpayment.shop/sefer/ride
+seferPaymentServer=https://seferpw.shop/sefer
seferCairoServer=https://sefer.click/sefer
seferGizaServer=https://sefergiza.site/sefer
-# serverPHP=https://api.sefer.live/sefer
cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl
claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl
payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl
@@ -45,7 +44,7 @@ payMobOutClient_id='Z05ut48dVkS2gI2zenFFcKsfDKfHAU0WELqKyJ0LXrXlBl'
payMobOutPassword='D2zJFxkE#LN3vz38z2dYxpNfWXrXlBl'
payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl'
keyOfApp=nqryjp@1737wqnmqqsjyzjujljksvceiXrXlBl
-
+privateKeyFCM="-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n"
a=q
diff --git a/.metadata b/.metadata
index 30d90a7..8973d6c 100644
--- a/.metadata
+++ b/.metadata
@@ -1,11 +1,11 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
-# This file should be version controlled.
+# This file should be version controlled and should not be manually edited.
version:
- revision: 796c8ef79279f9c774545b3771238c3098dbefab
- channel: stable
+ revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
+ channel: "stable"
project_type: app
@@ -13,26 +13,11 @@ project_type: app
migration:
platforms:
- platform: root
- create_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- base_revision: 796c8ef79279f9c774545b3771238c3098dbefab
+ create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
+ base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: android
- create_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- base_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- - platform: ios
- create_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- base_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- - platform: linux
- create_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- base_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- - platform: macos
- create_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- base_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- - platform: web
- create_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- base_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- - platform: windows
- create_revision: 796c8ef79279f9c774545b3771238c3098dbefab
- base_revision: 796c8ef79279f9c774545b3771238c3098dbefab
+ create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
+ base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
# User provided section
diff --git a/android/app/build.gradle b/android/app/build.gradle
index b24bdc6..318b5f3 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -55,8 +55,8 @@ android {
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 23
targetSdkVersion 34
- versionCode 55
- versionName '1.5.55'
+ versionCode 61
+ versionName '1.5.61'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
}
diff --git a/android/app/google-services.json b/android/app/google-services.json
index 55da396..011558e 100644
--- a/android/app/google-services.json
+++ b/android/app/google-services.json
@@ -121,42 +121,6 @@
}
}
},
- {
- "client_info": {
- "mobilesdk_app_id": "1:594687661098:android:b7ce96c17eb928ca595f53",
- "android_client_info": {
- "package_name": "com.sefer.driver"
- }
- },
- "oauth_client": [
- {
- "client_id": "594687661098-2u640akrb3k7sak5t0nqki6f4v6hq1bq.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
- "api_key": [
- {
- "current_key": "AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": [
- {
- "client_id": "594687661098-2hfb9gumub3j60vb7mqtq794k8spihuh.apps.googleusercontent.com",
- "client_type": 3
- },
- {
- "client_id": "594687661098-8e26699cris2k3nj5msj1osi59it9kpf.apps.googleusercontent.com",
- "client_type": 2,
- "ios_info": {
- "bundle_id": "com.mobileapp.store.ride"
- }
- }
- ]
- }
- }
- },
{
"client_info": {
"mobilesdk_app_id": "1:594687661098:android:46557bd4f534b5bb595f53",
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..db77bb4
Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..17987b7
Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..09d4391
Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d5f1c8d
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4d6372e
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/firebase.json b/firebase.json
index 7ca734b..bc568d2 100644
--- a/firebase.json
+++ b/firebase.json
@@ -1 +1 @@
-{"functions":[{"source":"functions","codebase":"default","ignore":["node_modules",".git","firebase-debug.log","firebase-debug.*.log"],"predeploy":["npm --prefix \"$RESOURCE_DIR\" run lint"]}],"flutter":{"platforms":{"android":{"default":{"projectId":"ride-b1bd8","appId":"1:594687661098:android:683982cbf71fa423595f53","fileOutput":"android/app/google-services.json"}},"dart":{"lib/firebase_options.dart":{"projectId":"ride-b1bd8","configurations":{"android":"1:594687661098:android:683982cbf71fa423595f53","ios":"1:594687661098:ios:6f69eee1449be943595f53","macos":"1:594687661098:ios:6f69eee1449be943595f53","web":"1:594687661098:web:62d8388476ec91ec595f53","windows":"1:594687661098:web:d9f43a2091395d87595f53"}}},"ios":{"default":{"projectId":"ride-b1bd8","appId":"1:594687661098:ios:6f69eee1449be943595f53","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"macos":{"default":{"projectId":"ride-b1bd8","appId":"1:594687661098:ios:6f69eee1449be943595f53","uploadDebugSymbols":false,"fileOutput":"macos/Runner/GoogleService-Info.plist"}}}}}
\ No newline at end of file
+{"functions":[{"source":"functions","codebase":"default","ignore":["node_modules",".git","firebase-debug.log","firebase-debug.*.log"],"predeploy":["npm --prefix \"$RESOURCE_DIR\" run lint"]}],"flutter":{"platforms":{"android":{"default":{"projectId":"ride-b1bd8","appId":"1:594687661098:android:683982cbf71fa423595f53","fileOutput":"android/app/google-services.json"}},"dart":{"lib/firebase_options.dart":{"projectId":"ride-b1bd8","configurations":{"android":"1:594687661098:android:683982cbf71fa423595f53","ios":"1:594687661098:ios:6f69eee1449be943595f53"}}},"ios":{"default":{"projectId":"ride-b1bd8","appId":"1:594687661098:ios:6f69eee1449be943595f53","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"macos":{"default":{"projectId":"ride-b1bd8","appId":"1:594687661098:ios:6f69eee1449be943595f53","uploadDebugSymbols":false,"fileOutput":"macos/Runner/GoogleService-Info.plist"}}}}}
\ No newline at end of file
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index ade4b34..bab8690 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -37,11 +37,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 47
+ 48
CFBundleSignature
????
CFBundleVersion
- 4.3.47
+ 4.3.48
FirebaseAppDelegateProxyEnabled
NO
GMSApiKey
diff --git a/lib/constant/links.dart b/lib/constant/links.dart
index c144f13..76b6a4b 100644
--- a/lib/constant/links.dart
+++ b/lib/constant/links.dart
@@ -3,14 +3,15 @@ import 'package:SEFER/env/env.dart';
import 'package:SEFER/main.dart';
class AppLink {
- // static final String seferPaymentServer = Env.seferPaymentServer;
+ static final String seferPaymentServer0 = Env.seferPaymentServer;
static final String seferPaymentServer = '${Env.seferCairoServer}/ride';
static final String seferAlexandriaServer = Env.seferAlexandriaServer;
static final String seferCairoServer = Env.seferCairoServer;
static final String seferGizaServer = Env.seferGizaServer;
static final String endPoint = box.read(BoxName.serverChosen);
- static final String server = endPoint;
+ static final String server = Env.seferCairoServer;
+ // static final String server = Env.serverPHP;
static String googleMapsLink = 'https://maps.googleapis.com/maps/api/';
static String llama = 'https://api.llama-api.com/chat/completions';
@@ -86,9 +87,9 @@ class AppLink {
static String addDriverpayment = "$ride/payment/add.php";
static String addDriverPaymentPoints = "$ride/driverPayment/add.php";
static String addPaymentTokenPassenger =
- "$ride/passengerWallet/addPaymentTokenPassenger.php";
+ "$seferPaymentServer/passengerWallet/addPaymentTokenPassenger.php";
static String addPaymentTokenDriver =
- "$ride/driverWallet/addPaymentToken.php";
+ "$seferPaymentServer/driverWallet/addPaymentToken.php";
static String getDriverPaymentPoints = "$ride/driverWallet/get.php";
static String getDriverpaymentToday = "$ride/payment/get.php";
static String getCountRide = "$ride/payment/getCountRide.php";
diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart
index b9626bc..a66d68a 100644
--- a/lib/controller/auth/register_controller.dart
+++ b/lib/controller/auth/register_controller.dart
@@ -108,6 +108,7 @@ class RegisterController extends GetxController {
var responseCheker = await CRUD()
.post(link: AppLink.checkPhoneNumberISVerfiedPassenger, payload: {
'phone_number': '+2${phoneController.text}',
+ 'email': box.read(BoxName.email),
});
if (responseCheker != 'failure') {
var d = jsonDecode(responseCheker);
@@ -194,7 +195,9 @@ class RegisterController extends GetxController {
Get.offAll(const MapPagePassenger());
}
} else {
- Get.snackbar('Error'.tr, '', backgroundColor: Colors.redAccent);
+ Get.snackbar(
+ 'Error'.tr, "The email or phone number is already registered.".tr,
+ backgroundColor: Colors.redAccent);
}
}
}
diff --git a/lib/controller/firebase/access_token.dart b/lib/controller/firebase/access_token.dart
new file mode 100644
index 0000000..93c6898
--- /dev/null
+++ b/lib/controller/firebase/access_token.dart
@@ -0,0 +1,50 @@
+import 'dart:convert';
+import 'package:googleapis_auth/auth_io.dart';
+
+class AccessTokenManager {
+ static final AccessTokenManager _instance = AccessTokenManager._internal();
+ late final String serviceAccountJsonKey;
+ AccessToken? _accessToken;
+ DateTime? _expiryDate;
+
+ AccessTokenManager._internal();
+
+ factory AccessTokenManager(String jsonKey) {
+ if (_instance._isServiceAccountKeyInitialized()) {
+ // Prevent re-initialization
+ return _instance;
+ }
+ _instance.serviceAccountJsonKey = jsonKey;
+ return _instance;
+ }
+
+ bool _isServiceAccountKeyInitialized() {
+ try {
+ serviceAccountJsonKey; // Access to check if initialized
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+
+ Future getAccessToken() async {
+ if (_accessToken != null && DateTime.now().isBefore(_expiryDate!)) {
+ return _accessToken!.data;
+ }
+ try {
+ final serviceAccountCredentials = ServiceAccountCredentials.fromJson(
+ json.decode(serviceAccountJsonKey));
+ final client = await clientViaServiceAccount(
+ serviceAccountCredentials,
+ ['https://www.googleapis.com/auth/firebase.messaging'],
+ );
+
+ _accessToken = client.credentials.accessToken;
+ _expiryDate = client.credentials.accessToken.expiry;
+ client.close();
+ return _accessToken!.data;
+ } catch (e) {
+ throw Exception('Failed to obtain access token');
+ }
+ }
+}
diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart
index 5e78c51..cc46326 100644
--- a/lib/controller/firebase/firbase_messge.dart
+++ b/lib/controller/firebase/firbase_messge.dart
@@ -1,9 +1,12 @@
import 'dart:convert';
import 'dart:io';
+import 'package:SEFER/env/env.dart';
import 'package:SEFER/views/widgets/my_dialog.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
+import 'package:googleapis_auth/auth_io.dart';
+import 'package:googleapis_auth/googleapis_auth.dart';
import 'package:http/http.dart' as http;
import 'package:SEFER/controller/functions/toast.dart';
import 'package:SEFER/views/widgets/elevated_btn.dart';
@@ -21,6 +24,7 @@ import '../../views/home/profile/promos_passenger_page.dart';
import '../auth/google_sign.dart';
import '../functions/audio_record1.dart';
import '../home/map_passenger_controller.dart';
+import 'access_token.dart';
import 'local_notification.dart';
class FirebaseMessagesController extends GetxController {
@@ -189,7 +193,7 @@ class FirebaseMessagesController extends GetxController {
Get.back();
Get.defaultDialog(
title: "The driver canceled your ride.".tr,
- middleText: "We will look for a new driver.\nPlease wait.".tr,
+ middleText: "We will look for a new driver.\\nPlease wait.".tr,
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () async {
@@ -525,84 +529,217 @@ class FirebaseMessagesController extends GetxController {
void sendNotificationToAnyWithoutData(
String title, String body, String token, String tone) async {
try {
+ String serviceAccountKeyJson = '''{
+ "type": "service_account",
+ "project_id": "ride-b1bd8",
+ "private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
+ "private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
+ "client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
+ "client_id": "111210077025005706623",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
+ "universe_domain": "googleapis.com"
+}
+'''; // As defined above
+
+ // Initialize AccessTokenManager
+ final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
+
+ // Obtain an OAuth 2.0 access token
+ final accessToken = await accessTokenManager.getAccessToken();
+ // Log.print('accessToken: ${accessToken}');
+
+ // Send the notification
final response = await http.post(
- Uri.parse('https://fcm.googleapis.com/fcm/send'),
+ Uri.parse(
+ 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
headers: {
'Content-Type': 'application/json',
- 'Authorization': 'key=${AK.serverAPI}'
+ 'Authorization': 'Bearer $accessToken',
},
body: jsonEncode({
- 'notification': {
- 'title': title,
- 'body': body,
- 'sound': tone
+ 'message': {
+ 'token': token,
+ 'notification': {
+ 'title': title,
+ 'body': body,
+ },
+ 'android': {
+ 'notification': {
+ 'sound': tone,
+ },
+ },
+ 'apns': {
+ 'payload': {
+ 'aps': {
+ 'sound': tone,
+ },
+ },
+ },
},
- 'data': {
- 'click_action': 'FLUTTER_NOTIFICATION_CLICK',
- 'id': '1',
- 'status': 'done'
- },
- 'priority': 'high',
- 'to': token,
}),
);
if (response.statusCode == 200) {
- // Notification sent successfully
+ print(
+ 'Notification sent successfully. Status code: ${response.statusCode}');
+ print('Response body: ${response.body}');
} else {
- // Handle error response
- 'Failed to send notification. Status code: ${response.statusCode}';
+ print(
+ 'Failed to send notification. Status code: ${response.statusCode}');
+ print('Response body: ${response.body}');
}
} catch (e) {
- // Handle other exceptions
+ print('Error sending notification: $e');
}
}
- void sendNotificationToDriverMAP(String title, String body, String token,
- List data, String tone) async {
+ // void sendNotificationToDriverMAP(String title, String body, String token,
+ // List data, String tone) async {
+ // try {
+ // final response = await http.post(
+ // // Uri.parse(
+ // // 'https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send'),
+ // Uri.parse('https://fcm.googleapis.com/fcm/send'),
+ // headers: {
+ // 'Content-Type': 'application/json',
+ // // 'Authorization': 'Bearer 104815009508844392546'
+ // 'Authorization': 'key=${AK.serverAPI}'
+ // },
+ // body: jsonEncode({
+ // 'notification': {
+ // 'title': title,
+ // 'body': body,
+ // 'sound': tone
+ // },
+ // 'data': {
+ // 'DriverList': data,
+ // },
+ // 'priority': 'high',
+ // 'to': token,
+ // }),
+ // );
+
+ // if (response.statusCode == 200) {
+ // Log.print(
+ // 'Notification sent successfully. Status code: ${response.statusCode}');
+ // Log.print('Response body: ${response.body}');
+ // } else {
+ // Log.print(
+ // 'Failed to send notification. Status code: ${response.statusCode}');
+ // Log.print('Response body: ${response.body}');
+ // }
+ // } catch (e) {
+ // Log.print('Error sending notification: $e');
+ // }
+ // }
+
+ Future sendNotificationToDriverMAP(String title, String body,
+ String token, List data, String tone) async {
try {
+ String serviceAccountKeyJson = '''{
+ "type": "service_account",
+ "project_id": "ride-b1bd8",
+ "private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
+ "private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
+ "client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
+ "client_id": "111210077025005706623",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
+ "universe_domain": "googleapis.com"
+}
+'''; // As defined above
+
+ // Initialize AccessTokenManager
+ final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
+
+ // Obtain an OAuth 2.0 access token
+ final accessToken = await accessTokenManager.getAccessToken();
+ Log.print('accessToken: ${accessToken}');
+
+ // Send the notification
final response = await http.post(
- Uri.parse('https://fcm.googleapis.com/fcm/send'),
+ Uri.parse(
+ 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
headers: {
'Content-Type': 'application/json',
- 'Authorization': 'key=${AK.serverAPI}'
+ 'Authorization': 'Bearer $accessToken',
},
body: jsonEncode({
- 'notification': {
- 'title': title,
- 'body': body,
- 'sound': tone
+ 'message': {
+ 'token': token,
+ 'notification': {
+ 'title': title,
+ 'body': body,
+ },
+ 'data': {
+ 'DriverList': jsonEncode(data),
+ },
+ 'android': {
+ 'notification': {
+ 'sound': tone,
+ },
+ },
+ 'apns': {
+ 'payload': {
+ 'aps': {
+ 'sound': tone,
+ },
+ },
+ },
},
- 'data': {
- 'DriverList': data,
- },
- 'priority': 'high',
- 'to': token,
}),
);
if (response.statusCode == 200) {
- Log.print(
+ print(
'Notification sent successfully. Status code: ${response.statusCode}');
- Log.print('Response body: ${response.body}');
+ print('Response body: ${response.body}');
} else {
- Log.print(
+ print(
'Failed to send notification. Status code: ${response.statusCode}');
- Log.print('Response body: ${response.body}');
+ print('Response body: ${response.body}');
}
} catch (e) {
- Log.print('Error sending notification: $e');
+ print('Error sending notification: $e');
}
}
void sendNotificationToDriverMapPolyline(String title, String body,
String token, List data, String polylineJson) async {
try {
+ String serviceAccountKeyJson = '''{
+ "type": "service_account",
+ "project_id": "ride-b1bd8",
+ "private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
+ "private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
+ "client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
+ "client_id": "111210077025005706623",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
+ "universe_domain": "googleapis.com"
+}
+'''; // As defined above
+
+ // Initialize AccessTokenManager
+ final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
+
+ // Obtain an OAuth 2.0 access token
+ final accessToken = await accessTokenManager.getAccessToken();
+
+ // Send the notification
final response = await http.post(
- Uri.parse('https://fcm.googleapis.com/fcm/send'),
+ Uri.parse(
+ 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
headers: {
'Content-Type': 'application/json',
- 'Authorization': 'key=${AK.serverAPI}'
+ 'Authorization': 'Bearer $accessToken',
},
body: jsonEncode({
'notification': {
diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart
index 8242270..8efc675 100644
--- a/lib/controller/functions/crud.dart
+++ b/lib/controller/functions/crud.dart
@@ -234,7 +234,6 @@ class CRUD {
},
);
Log.print('payload: ${payload}');
- // print(response.request);
Log.print('response.request: ${response.request}');
Log.print('response.body: ${response.body}');
var jsonData = jsonDecode(response.body);
diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart
index 19f3106..2d33697 100644
--- a/lib/controller/home/map_passenger_controller.dart
+++ b/lib/controller/home/map_passenger_controller.dart
@@ -1016,11 +1016,11 @@ class MapPassengerController extends GetxController {
late String make = '';
late String licensePlate = '';
confirmRideForFirstDriver() async {
- // startCarLocationSearch(box.read(BoxName.carType));
- await getCarsLocationByPassengerAndReloadMarker(
- box.read(BoxName.carType), 7000);
+ startCarLocationSearch(box.read(BoxName.carType));
+ // await getCarsLocationByPassengerAndReloadMarker(
+ // box.read(BoxName.carType), 7000);
await getNearestDriverByPassengerLocationAPIGOOGLE();
-
+ Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}');
if (dataCarsLocationByPassenger != 'failure' ||
dataCarsLocationByPassenger != null) {
driverToken =
@@ -1132,50 +1132,50 @@ class MapPassengerController extends GetxController {
Log.print(
'body: ${dataCarsLocationByPassenger['message'][carsOrder]['token']}');
});
- CRUD().post(
- link: '${AppLink.seferAlexandriaServer}/ride/rides/add.php',
- payload: {
- "start_location": //'${data[0]['start_address']}',
- '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
- "end_location": //'${data[0]['end_address']}',
- '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
- "date": DateTime.now().toString(),
- "time": DateTime.now().toString(),
- "endtime": durationToAdd.toString(),
- "price": totalPassenger.toStringAsFixed(2),
- "passenger_id": box.read(BoxName.passengerID).toString(),
- "driver_id": dataCarsLocationByPassenger['message'][carsOrder]
- ['driver_id']
- .toString(),
- "status": "waiting",
- 'carType': box.read(BoxName.carType),
- "price_for_driver": totalPassenger.toString(),
- "price_for_passenger": totalME.toString(),
- "distance": distance.toString(),
- "paymentMethod": paymentController.isWalletChecked.toString(),
- });
- CRUD().post(
- link: '${AppLink.seferGizaServer}/ride/rides/add.php',
- payload: {
- "start_location": //'${data[0]['start_address']}',
- '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
- "end_location": //'${data[0]['end_address']}',
- '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
- "date": DateTime.now().toString(),
- "time": DateTime.now().toString(),
- "endtime": durationToAdd.toString(),
- "price": totalPassenger.toStringAsFixed(2),
- "passenger_id": box.read(BoxName.passengerID).toString(),
- "driver_id": dataCarsLocationByPassenger['message'][carsOrder]
- ['driver_id']
- .toString(),
- "status": "waiting",
- 'carType': box.read(BoxName.carType),
- "price_for_driver": totalPassenger.toString(),
- "price_for_passenger": totalME.toString(),
- "distance": distance.toString(),
- "paymentMethod": paymentController.isWalletChecked.toString(),
- });
+ // CRUD().post(
+ // link: '${AppLink.seferAlexandriaServer}/ride/rides/add.php',
+ // payload: {
+ // "start_location": //'${data[0]['start_address']}',
+ // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
+ // "end_location": //'${data[0]['end_address']}',
+ // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
+ // "date": DateTime.now().toString(),
+ // "time": DateTime.now().toString(),
+ // "endtime": durationToAdd.toString(),
+ // "price": totalPassenger.toStringAsFixed(2),
+ // "passenger_id": box.read(BoxName.passengerID).toString(),
+ // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]
+ // ['driver_id']
+ // .toString(),
+ // "status": "waiting",
+ // 'carType': box.read(BoxName.carType),
+ // "price_for_driver": totalPassenger.toString(),
+ // "price_for_passenger": totalME.toString(),
+ // "distance": distance.toString(),
+ // "paymentMethod": paymentController.isWalletChecked.toString(),
+ // });
+ // CRUD().post(
+ // link: '${AppLink.seferGizaServer}/ride/rides/add.php',
+ // payload: {
+ // "start_location": //'${data[0]['start_address']}',
+ // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
+ // "end_location": //'${data[0]['end_address']}',
+ // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
+ // "date": DateTime.now().toString(),
+ // "time": DateTime.now().toString(),
+ // "endtime": durationToAdd.toString(),
+ // "price": totalPassenger.toStringAsFixed(2),
+ // "passenger_id": box.read(BoxName.passengerID).toString(),
+ // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]
+ // ['driver_id']
+ // .toString(),
+ // "status": "waiting",
+ // 'carType': box.read(BoxName.carType),
+ // "price_for_driver": totalPassenger.toString(),
+ // "price_for_passenger": totalME.toString(),
+ // "distance": distance.toString(),
+ // "paymentMethod": paymentController.isWalletChecked.toString(),
+ // });
delayAndFetchRideStatus(rideId);
if (shouldFetch == false) {
@@ -1202,67 +1202,79 @@ class MapPassengerController extends GetxController {
bool isDriversTokensSend = false;
confirmRideForAllDriverAvailable() async {
- driversToken.remove(driverToken);
- PaymentController paymentController = Get.find();
- rideConfirm = true;
- shouldFetch = true;
- isBottomSheetShown = false;
- timeToPassengerFromDriverAfterApplied = 60;
+ await getCarsLocationByPassengerAndReloadMarker(
+ box.read(BoxName.carType), 7000);
+ if (dataCarsLocationByPassenger != 'failure') {
+ driversToken.remove(driverToken);
+ PaymentController paymentController = Get.find();
+ rideConfirm = true;
+ shouldFetch = true;
+ isBottomSheetShown = false;
+ timeToPassengerFromDriverAfterApplied = 60;
- List body = [
- '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
- '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
- totalPassenger.toStringAsFixed(2),
- totalDriver.toStringAsFixed(2),
- durationToRide.toString(),
- distance.toStringAsFixed(2),
- dataCarsLocationByPassenger['message'][carsOrder]['driver_id'].toString(),
- box.read(BoxName.passengerID).toString(),
- box.read(BoxName.name).toString(),
- box.read(BoxName.tokenFCM).toString(),
- box.read(BoxName.phone).toString(),
- durationByPassenger.toString(),
- distanceByPassenger.toString(),
- paymentController.isWalletChecked.toString(),
- dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
- durationToPassenger.toString(),
- rideId,
- rideTimerBegin.toString(),
- dataCarsLocationByPassenger['message'][carsOrder]['driver_id'].toString(),
- durationToRide.toString(),
- Get.find().wayPoints.length > 1
- ? 'haveSteps'
- : 'startEnd',
- placesCoordinate[0],
- placesCoordinate[1],
- placesCoordinate[2],
- placesCoordinate[3],
- placesCoordinate[4],
- costForDriver.toStringAsFixed(2),
- double.parse(box.read(BoxName.passengerWalletTotal)) < 0
- ? double.parse(box.read(BoxName.passengerWalletTotal))
- .toStringAsFixed(2)
- : '0',
- box.read(BoxName.email).toString(),
- startNameAddress,
- endNameAddress,
- box.read(BoxName.carType),
- kazan.toStringAsFixed(0),
- passengerRate.toStringAsFixed(2),
- ];
- Log.print('body: ${body}');
- for (var i = 1; i < driversToken.length; i++) {
- FirebaseMessagesController().sendNotificationToDriverMapPolyline(
- 'OrderSpeed',
- rideId.toString(),
- driversToken[i],
- body,
- polylineCoordinates.toString());
+ List body = [
+ '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
+ '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
+ totalPassenger.toStringAsFixed(2),
+ totalDriver.toStringAsFixed(2),
+ durationToRide.toString(),
+ distance.toStringAsFixed(2),
+ dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
+ .toString(),
+ box.read(BoxName.passengerID).toString(),
+ box.read(BoxName.name).toString(),
+ box.read(BoxName.tokenFCM).toString(),
+ box.read(BoxName.phone).toString(),
+ durationByPassenger.toString(),
+ distanceByPassenger.toString(),
+ paymentController.isWalletChecked.toString(),
+ dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
+ durationToPassenger.toString(),
+ rideId,
+ rideTimerBegin.toString(),
+ dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
+ .toString(),
+ durationToRide.toString(),
+ Get.find().wayPoints.length > 1
+ ? 'haveSteps'
+ : 'startEnd',
+ placesCoordinate[0],
+ placesCoordinate[1],
+ placesCoordinate[2],
+ placesCoordinate[3],
+ placesCoordinate[4],
+ costForDriver.toStringAsFixed(2),
+ double.parse(box.read(BoxName.passengerWalletTotal)) < 0
+ ? double.parse(box.read(BoxName.passengerWalletTotal))
+ .toStringAsFixed(2)
+ : '0',
+ box.read(BoxName.email).toString(),
+ startNameAddress,
+ endNameAddress,
+ box.read(BoxName.carType),
+ kazan.toStringAsFixed(0),
+ passengerRate.toStringAsFixed(2),
+ ];
+ Log.print('body: ${body}');
+ for (var i = 1; i < driversToken.length; i++) {
+ FirebaseMessagesController().sendNotificationToDriverMapPolyline(
+ 'OrderSpeed',
+ rideId.toString(),
+ driversToken[i],
+ body,
+ polylineCoordinates.toString());
+ }
+
+ (rideId);
+
+ update();
+ } else {
+ MyDialog().getDialog("No Car or Driver Found in your area.".tr,
+ "No Car or Driver Found in your area.".tr, () {
+ Get.back();
+ Get.offAll(const MapPagePassenger());
+ });
}
-
- (rideId);
-
- update();
}
int tick = 0; // Move tick outside the function to maintain its state
@@ -1679,33 +1691,28 @@ class MapPassengerController extends GetxController {
}
String getLocationArea(double latitude, double longitude) {
- // Giza Boundary Check
- if (latitude >= 29.904975 &&
- latitude <= 30.143372 &&
- longitude >= 30.787030 &&
- longitude <= 31.238843) {
- box.write(BoxName.serverChosen, AppLink.seferGizaServer);
- return 'Giza';
- }
- // Cairo Boundary Check
- else if (latitude >= 29.918901 &&
+ if (latitude >= 29.918901 &&
latitude <= 30.198857 &&
longitude >= 31.215009 &&
longitude <= 31.532186) {
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
return 'Cairo';
- }
- // Alexandria Boundary Check
- else if (latitude >= 30.396286 &&
+ } else if (latitude >= 29.904975 &&
+ latitude <= 30.143372 &&
+ longitude >= 30.787030 &&
+ longitude <= 31.238843) {
+ box.write(BoxName.serverChosen, AppLink.seferGizaServer);
+ return 'Giza';
+ } else if (latitude >= 30.396286 &&
latitude <= 31.654458 &&
longitude >= 29.041139 &&
longitude <= 32.626259) {
box.write(BoxName.serverChosen, AppLink.seferAlexandriaServer);
return 'Alexandria';
+ } else {
+ box.write(BoxName.serverChosen, AppLink.seferCairoServer);
+ return 'Outside';
}
-
- // Return 'Unknown' if outside defined areas
- return 'Unknown';
}
Future getCarsLocationByPassengerAndReloadMarker(
diff --git a/lib/views/home/map_widget.dart/left_main_menu_icons.dart b/lib/views/home/map_widget.dart/left_main_menu_icons.dart
index 55e85ca..811ca09 100644
--- a/lib/views/home/map_widget.dart/left_main_menu_icons.dart
+++ b/lib/views/home/map_widget.dart/left_main_menu_icons.dart
@@ -1,7 +1,10 @@
+import 'package:SEFER/constant/box_name.dart';
+import 'package:SEFER/main.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../constant/colors.dart';
+import '../../../controller/firebase/firbase_messge.dart';
import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart';
@@ -89,8 +92,17 @@ GetBuilder leftMainMenuIcons() {
// borderRadius: BorderRadius.circular(15)),
// child: IconButton(
// onPressed: () async {
- // box.remove(BoxName.isVerified);
- // Get.to(() => SmsSignupEgypt());
+ // FirebaseMessagesController().sendNotificationToAnyWithoutData(
+ // 'Order'.tr,
+ // 'from: ',
+ // // jsonDecode(value)['message'].toString(),
+ // 'dEugS-JOT4Ka5riF4s5TEN:APA91bEDL_W7BuEQGbyL-RMaKiMWDlURXhFuaybe5WurTUV8K5eIooSGe22yY22_U2hEZcfPr46ig1v--l00dbOGiivazxvmTyhUyQQW6lJsuIN-wordGtBxtREyeYtEKvxIa1J4ApEu',
+ // 'order.wav'
+
+ // // polylineCoordinates.toString()
+ // );
+ // // print(box.read(BoxName.tokenFCM));
+ // //
// },
// icon: const Icon(
// Icons.voice_chat,
@@ -98,32 +110,31 @@ GetBuilder leftMainMenuIcons() {
// ),
// ),
// ),
- // AnimatedContainer(
- // duration: const Duration(microseconds: 200),
- // width: controller.widthMapTypeAndTraffic,
- // decoration: BoxDecoration(
- // color: AppColor.secondaryColor,
- // border: Border.all(),
- // borderRadius: BorderRadius.circular(15)),
- // child: IconButton(
- // onPressed: () async {
- // FirebaseMessagesController().sendNotificationToDriverMAP(
- // '',
- // 'from: ',
- // // jsonDecode(value)['message'].toString(),
- // 'cXavJMQgRACEfYdOnSLDU4:-KwZqsbJvYyIqgkI9oxZCiqyVv9ZnVG7rN0LBf7Nxe9AEcatgHNo0fEomaMWB3ff_SagtNkUuYeHc-GaPETq6Oa',
- // [],
- // 'order.wav'
-
- // // polylineCoordinates.toString()
- // );
- // },
- // icon: const Icon(
- // Icons.chat,
- // size: 29,
- // ),
- // ),
- // ),
+ AnimatedContainer(
+ duration: const Duration(microseconds: 200),
+ width: controller.widthMapTypeAndTraffic,
+ decoration: BoxDecoration(
+ color: AppColor.secondaryColor,
+ border: Border.all(),
+ borderRadius: BorderRadius.circular(15)),
+ child: IconButton(
+ onPressed: () async {
+ FirebaseMessagesController().sendNotificationToDriverMAP(
+ 'message From passenger'.tr,
+ 'My location is correct. You can search for me using the navigation app'
+ .tr,
+ 'db9hQ9BfT_2U-ocVHbEAej:APA91bG2YiVN8Dw3bNitehENk0sUPKt7A3zoT6GY_NdbxsMVKX8ouZRI6Ix9ScLSGYz31gugsb2Ag087FXmbPbQkD9E7nwOR7USPrai5euFjZXVHNrz2Byacn8gBTGr8HPV-CGHG81lk',
+ [],
+ 'ding.wav',
+ );
+ // print(box.read(BoxName.tokenFCM));
+ },
+ icon: const Icon(
+ Icons.chat,
+ size: 29,
+ ),
+ ),
+ ),
// AnimatedContainer(
// duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic,
diff --git a/pubspec.lock b/pubspec.lock
index f445950..ef5874b 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -912,6 +912,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.12.4+1"
+ googleapis_auth:
+ dependency: "direct main"
+ description:
+ name: googleapis_auth
+ sha256: befd71383a955535060acde8792e7efc11d2fccd03dd1d3ec434e85b68775938
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.6.0"
graphs:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 3ccfc8c..c393816 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -60,6 +60,7 @@ dependencies:
firebase_auth: ^5.1.2
package_info_plus: ^8.0.0
uni_links: ^0.5.1
+ googleapis_auth: ^1.6.0
dev_dependencies:
flutter_test: