This commit is contained in:
Hamza-Ayed
2024-08-31 09:04:28 +03:00
parent b93ddc3945
commit 04c47d3431
20 changed files with 427 additions and 262 deletions

7
.env
View File

@@ -14,12 +14,11 @@ chatGPTkeySeferNew=zg-Z4AJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl
secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl
stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl
llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl
serverPHP=https://sefer.click/sefer serverPHP=https://api.sefer.live/sefer
seferAlexandriaServer=https://seferalexandria.site/sefer seferAlexandriaServer=https://seferalexandria.site/sefer
seferPaymentServer=https://seferpayment.shop/sefer/ride seferPaymentServer=https://seferpw.shop/sefer
seferCairoServer=https://sefer.click/sefer seferCairoServer=https://sefer.click/sefer
seferGizaServer=https://sefergiza.site/sefer seferGizaServer=https://sefergiza.site/sefer
# serverPHP=https://api.sefer.live/sefer
cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl
claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl
payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl
@@ -45,7 +44,7 @@ payMobOutClient_id='Z05ut48dVkS2gI2zenFFcKsfDKfHAU0WELqKyJ0LXrXlBl'
payMobOutPassword='D2zJFxkE#LN3vz38z2dYxpNfWXrXlBl' payMobOutPassword='D2zJFxkE#LN3vz38z2dYxpNfWXrXlBl'
payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl' payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl'
keyOfApp=nqryjp@1737wqnmqqsjyzjujljksvceiXrXlBl 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 a=q

View File

@@ -1,11 +1,11 @@
# This file tracks properties of this Flutter project. # This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc. # 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: version:
revision: 796c8ef79279f9c774545b3771238c3098dbefab revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
channel: stable channel: "stable"
project_type: app project_type: app
@@ -13,26 +13,11 @@ project_type: app
migration: migration:
platforms: platforms:
- platform: root - platform: root
create_revision: 796c8ef79279f9c774545b3771238c3098dbefab create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 796c8ef79279f9c774545b3771238c3098dbefab base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: android - platform: android
create_revision: 796c8ef79279f9c774545b3771238c3098dbefab create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 796c8ef79279f9c774545b3771238c3098dbefab base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- 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
# User provided section # User provided section

View File

@@ -55,8 +55,8 @@ android {
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 34 targetSdkVersion 34
versionCode 55 versionCode 61
versionName '1.5.55' versionName '1.5.61'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml'] // manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
} }

View File

@@ -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": { "client_info": {
"mobilesdk_app_id": "1:594687661098:android:46557bd4f534b5bb595f53", "mobilesdk_app_id": "1:594687661098:android:46557bd4f534b5bb595f53",

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -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"}}}}} {"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"}}}}}

View File

@@ -37,11 +37,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>47</string> <string>48</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>4.3.47</string> <string>4.3.48</string>
<key>FirebaseAppDelegateProxyEnabled</key> <key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string> <string>NO</string>
<key>GMSApiKey</key> <key>GMSApiKey</key>

View File

@@ -3,14 +3,15 @@ import 'package:SEFER/env/env.dart';
import 'package:SEFER/main.dart'; import 'package:SEFER/main.dart';
class AppLink { class AppLink {
// static final String seferPaymentServer = Env.seferPaymentServer; static final String seferPaymentServer0 = Env.seferPaymentServer;
static final String seferPaymentServer = '${Env.seferCairoServer}/ride'; static final String seferPaymentServer = '${Env.seferCairoServer}/ride';
static final String seferAlexandriaServer = Env.seferAlexandriaServer; static final String seferAlexandriaServer = Env.seferAlexandriaServer;
static final String seferCairoServer = Env.seferCairoServer; static final String seferCairoServer = Env.seferCairoServer;
static final String seferGizaServer = Env.seferGizaServer; static final String seferGizaServer = Env.seferGizaServer;
static final String endPoint = box.read(BoxName.serverChosen); 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 googleMapsLink = 'https://maps.googleapis.com/maps/api/';
static String llama = 'https://api.llama-api.com/chat/completions'; 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 addDriverpayment = "$ride/payment/add.php";
static String addDriverPaymentPoints = "$ride/driverPayment/add.php"; static String addDriverPaymentPoints = "$ride/driverPayment/add.php";
static String addPaymentTokenPassenger = static String addPaymentTokenPassenger =
"$ride/passengerWallet/addPaymentTokenPassenger.php"; "$seferPaymentServer/passengerWallet/addPaymentTokenPassenger.php";
static String addPaymentTokenDriver = static String addPaymentTokenDriver =
"$ride/driverWallet/addPaymentToken.php"; "$seferPaymentServer/driverWallet/addPaymentToken.php";
static String getDriverPaymentPoints = "$ride/driverWallet/get.php"; static String getDriverPaymentPoints = "$ride/driverWallet/get.php";
static String getDriverpaymentToday = "$ride/payment/get.php"; static String getDriverpaymentToday = "$ride/payment/get.php";
static String getCountRide = "$ride/payment/getCountRide.php"; static String getCountRide = "$ride/payment/getCountRide.php";

View File

@@ -108,6 +108,7 @@ class RegisterController extends GetxController {
var responseCheker = await CRUD() var responseCheker = await CRUD()
.post(link: AppLink.checkPhoneNumberISVerfiedPassenger, payload: { .post(link: AppLink.checkPhoneNumberISVerfiedPassenger, payload: {
'phone_number': '+2${phoneController.text}', 'phone_number': '+2${phoneController.text}',
'email': box.read(BoxName.email),
}); });
if (responseCheker != 'failure') { if (responseCheker != 'failure') {
var d = jsonDecode(responseCheker); var d = jsonDecode(responseCheker);
@@ -194,7 +195,9 @@ class RegisterController extends GetxController {
Get.offAll(const MapPagePassenger()); Get.offAll(const MapPagePassenger());
} }
} else { } else {
Get.snackbar('Error'.tr, '', backgroundColor: Colors.redAccent); Get.snackbar(
'Error'.tr, "The email or phone number is already registered.".tr,
backgroundColor: Colors.redAccent);
} }
} }
} }

View File

@@ -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<String> 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');
}
}
}

View File

@@ -1,9 +1,12 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:SEFER/env/env.dart';
import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:SEFER/views/widgets/my_dialog.dart';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.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:http/http.dart' as http;
import 'package:SEFER/controller/functions/toast.dart'; import 'package:SEFER/controller/functions/toast.dart';
import 'package:SEFER/views/widgets/elevated_btn.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 '../auth/google_sign.dart';
import '../functions/audio_record1.dart'; import '../functions/audio_record1.dart';
import '../home/map_passenger_controller.dart'; import '../home/map_passenger_controller.dart';
import 'access_token.dart';
import 'local_notification.dart'; import 'local_notification.dart';
class FirebaseMessagesController extends GetxController { class FirebaseMessagesController extends GetxController {
@@ -189,7 +193,7 @@ class FirebaseMessagesController extends GetxController {
Get.back(); Get.back();
Get.defaultDialog( Get.defaultDialog(
title: "The driver canceled your ride.".tr, 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( confirm: MyElevatedButton(
title: 'Ok'.tr, title: 'Ok'.tr,
onPressed: () async { onPressed: () async {
@@ -525,84 +529,217 @@ class FirebaseMessagesController extends GetxController {
void sendNotificationToAnyWithoutData( void sendNotificationToAnyWithoutData(
String title, String body, String token, String tone) async { String title, String body, String token, String tone) async {
try { 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( 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: <String, String>{ headers: <String, String>{
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Authorization': 'key=${AK.serverAPI}' 'Authorization': 'Bearer $accessToken',
}, },
body: jsonEncode({ body: jsonEncode({
'notification': <String, dynamic>{ 'message': {
'title': title, 'token': token,
'body': body, 'notification': {
'sound': tone 'title': title,
'body': body,
},
'android': {
'notification': {
'sound': tone,
},
},
'apns': {
'payload': {
'aps': {
'sound': tone,
},
},
},
}, },
'data': <String, dynamic>{
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
'id': '1',
'status': 'done'
},
'priority': 'high',
'to': token,
}), }),
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
// Notification sent successfully print(
'Notification sent successfully. Status code: ${response.statusCode}');
print('Response body: ${response.body}');
} else { } else {
// Handle error response print(
'Failed to send notification. Status code: ${response.statusCode}'; 'Failed to send notification. Status code: ${response.statusCode}');
print('Response body: ${response.body}');
} }
} catch (e) { } catch (e) {
// Handle other exceptions print('Error sending notification: $e');
} }
} }
void sendNotificationToDriverMAP(String title, String body, String token, // void sendNotificationToDriverMAP(String title, String body, String token,
List<String> data, String tone) async { // List<String> 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: <String, String>{
// 'Content-Type': 'application/json',
// // 'Authorization': 'Bearer 104815009508844392546'
// 'Authorization': 'key=${AK.serverAPI}'
// },
// body: jsonEncode({
// 'notification': <String, dynamic>{
// '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<void> sendNotificationToDriverMAP(String title, String body,
String token, List<String> data, String tone) async {
try { 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( 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: <String, String>{ headers: <String, String>{
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Authorization': 'key=${AK.serverAPI}' 'Authorization': 'Bearer $accessToken',
}, },
body: jsonEncode({ body: jsonEncode({
'notification': <String, dynamic>{ 'message': {
'title': title, 'token': token,
'body': body, 'notification': {
'sound': tone '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) { if (response.statusCode == 200) {
Log.print( print(
'Notification sent successfully. Status code: ${response.statusCode}'); 'Notification sent successfully. Status code: ${response.statusCode}');
Log.print('Response body: ${response.body}'); print('Response body: ${response.body}');
} else { } else {
Log.print( print(
'Failed to send notification. Status code: ${response.statusCode}'); 'Failed to send notification. Status code: ${response.statusCode}');
Log.print('Response body: ${response.body}'); print('Response body: ${response.body}');
} }
} catch (e) { } catch (e) {
Log.print('Error sending notification: $e'); print('Error sending notification: $e');
} }
} }
void sendNotificationToDriverMapPolyline(String title, String body, void sendNotificationToDriverMapPolyline(String title, String body,
String token, List<String> data, String polylineJson) async { String token, List<String> data, String polylineJson) async {
try { 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( 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: <String, String>{ headers: <String, String>{
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Authorization': 'key=${AK.serverAPI}' 'Authorization': 'Bearer $accessToken',
}, },
body: jsonEncode({ body: jsonEncode({
'notification': <String, dynamic>{ 'notification': <String, dynamic>{

View File

@@ -234,7 +234,6 @@ class CRUD {
}, },
); );
Log.print('payload: ${payload}'); Log.print('payload: ${payload}');
// print(response.request);
Log.print('response.request: ${response.request}'); Log.print('response.request: ${response.request}');
Log.print('response.body: ${response.body}'); Log.print('response.body: ${response.body}');
var jsonData = jsonDecode(response.body); var jsonData = jsonDecode(response.body);

View File

@@ -1016,11 +1016,11 @@ class MapPassengerController extends GetxController {
late String make = ''; late String make = '';
late String licensePlate = ''; late String licensePlate = '';
confirmRideForFirstDriver() async { confirmRideForFirstDriver() async {
// startCarLocationSearch(box.read(BoxName.carType)); startCarLocationSearch(box.read(BoxName.carType));
await getCarsLocationByPassengerAndReloadMarker( // await getCarsLocationByPassengerAndReloadMarker(
box.read(BoxName.carType), 7000); // box.read(BoxName.carType), 7000);
await getNearestDriverByPassengerLocationAPIGOOGLE(); await getNearestDriverByPassengerLocationAPIGOOGLE();
Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}');
if (dataCarsLocationByPassenger != 'failure' || if (dataCarsLocationByPassenger != 'failure' ||
dataCarsLocationByPassenger != null) { dataCarsLocationByPassenger != null) {
driverToken = driverToken =
@@ -1132,50 +1132,50 @@ class MapPassengerController extends GetxController {
Log.print( Log.print(
'body: ${dataCarsLocationByPassenger['message'][carsOrder]['token']}'); 'body: ${dataCarsLocationByPassenger['message'][carsOrder]['token']}');
}); });
CRUD().post( // CRUD().post(
link: '${AppLink.seferAlexandriaServer}/ride/rides/add.php', // link: '${AppLink.seferAlexandriaServer}/ride/rides/add.php',
payload: { // payload: {
"start_location": //'${data[0]['start_address']}', // "start_location": //'${data[0]['start_address']}',
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
"end_location": //'${data[0]['end_address']}', // "end_location": //'${data[0]['end_address']}',
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
"date": DateTime.now().toString(), // "date": DateTime.now().toString(),
"time": DateTime.now().toString(), // "time": DateTime.now().toString(),
"endtime": durationToAdd.toString(), // "endtime": durationToAdd.toString(),
"price": totalPassenger.toStringAsFixed(2), // "price": totalPassenger.toStringAsFixed(2),
"passenger_id": box.read(BoxName.passengerID).toString(), // "passenger_id": box.read(BoxName.passengerID).toString(),
"driver_id": dataCarsLocationByPassenger['message'][carsOrder] // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]
['driver_id'] // ['driver_id']
.toString(), // .toString(),
"status": "waiting", // "status": "waiting",
'carType': box.read(BoxName.carType), // 'carType': box.read(BoxName.carType),
"price_for_driver": totalPassenger.toString(), // "price_for_driver": totalPassenger.toString(),
"price_for_passenger": totalME.toString(), // "price_for_passenger": totalME.toString(),
"distance": distance.toString(), // "distance": distance.toString(),
"paymentMethod": paymentController.isWalletChecked.toString(), // "paymentMethod": paymentController.isWalletChecked.toString(),
}); // });
CRUD().post( // CRUD().post(
link: '${AppLink.seferGizaServer}/ride/rides/add.php', // link: '${AppLink.seferGizaServer}/ride/rides/add.php',
payload: { // payload: {
"start_location": //'${data[0]['start_address']}', // "start_location": //'${data[0]['start_address']}',
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
"end_location": //'${data[0]['end_address']}', // "end_location": //'${data[0]['end_address']}',
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
"date": DateTime.now().toString(), // "date": DateTime.now().toString(),
"time": DateTime.now().toString(), // "time": DateTime.now().toString(),
"endtime": durationToAdd.toString(), // "endtime": durationToAdd.toString(),
"price": totalPassenger.toStringAsFixed(2), // "price": totalPassenger.toStringAsFixed(2),
"passenger_id": box.read(BoxName.passengerID).toString(), // "passenger_id": box.read(BoxName.passengerID).toString(),
"driver_id": dataCarsLocationByPassenger['message'][carsOrder] // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]
['driver_id'] // ['driver_id']
.toString(), // .toString(),
"status": "waiting", // "status": "waiting",
'carType': box.read(BoxName.carType), // 'carType': box.read(BoxName.carType),
"price_for_driver": totalPassenger.toString(), // "price_for_driver": totalPassenger.toString(),
"price_for_passenger": totalME.toString(), // "price_for_passenger": totalME.toString(),
"distance": distance.toString(), // "distance": distance.toString(),
"paymentMethod": paymentController.isWalletChecked.toString(), // "paymentMethod": paymentController.isWalletChecked.toString(),
}); // });
delayAndFetchRideStatus(rideId); delayAndFetchRideStatus(rideId);
if (shouldFetch == false) { if (shouldFetch == false) {
@@ -1202,67 +1202,79 @@ class MapPassengerController extends GetxController {
bool isDriversTokensSend = false; bool isDriversTokensSend = false;
confirmRideForAllDriverAvailable() async { confirmRideForAllDriverAvailable() async {
driversToken.remove(driverToken); await getCarsLocationByPassengerAndReloadMarker(
PaymentController paymentController = Get.find<PaymentController>(); box.read(BoxName.carType), 7000);
rideConfirm = true; if (dataCarsLocationByPassenger != 'failure') {
shouldFetch = true; driversToken.remove(driverToken);
isBottomSheetShown = false; PaymentController paymentController = Get.find<PaymentController>();
timeToPassengerFromDriverAfterApplied = 60; rideConfirm = true;
shouldFetch = true;
isBottomSheetShown = false;
timeToPassengerFromDriverAfterApplied = 60;
List<String> body = [ List<String> body = [
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
totalPassenger.toStringAsFixed(2), totalPassenger.toStringAsFixed(2),
totalDriver.toStringAsFixed(2), totalDriver.toStringAsFixed(2),
durationToRide.toString(), durationToRide.toString(),
distance.toStringAsFixed(2), distance.toStringAsFixed(2),
dataCarsLocationByPassenger['message'][carsOrder]['driver_id'].toString(), dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
box.read(BoxName.passengerID).toString(), .toString(),
box.read(BoxName.name).toString(), box.read(BoxName.passengerID).toString(),
box.read(BoxName.tokenFCM).toString(), box.read(BoxName.name).toString(),
box.read(BoxName.phone).toString(), box.read(BoxName.tokenFCM).toString(),
durationByPassenger.toString(), box.read(BoxName.phone).toString(),
distanceByPassenger.toString(), durationByPassenger.toString(),
paymentController.isWalletChecked.toString(), distanceByPassenger.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(), paymentController.isWalletChecked.toString(),
durationToPassenger.toString(), dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
rideId, durationToPassenger.toString(),
rideTimerBegin.toString(), rideId,
dataCarsLocationByPassenger['message'][carsOrder]['driver_id'].toString(), rideTimerBegin.toString(),
durationToRide.toString(), dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
Get.find<WayPointController>().wayPoints.length > 1 .toString(),
? 'haveSteps' durationToRide.toString(),
: 'startEnd', Get.find<WayPointController>().wayPoints.length > 1
placesCoordinate[0], ? 'haveSteps'
placesCoordinate[1], : 'startEnd',
placesCoordinate[2], placesCoordinate[0],
placesCoordinate[3], placesCoordinate[1],
placesCoordinate[4], placesCoordinate[2],
costForDriver.toStringAsFixed(2), placesCoordinate[3],
double.parse(box.read(BoxName.passengerWalletTotal)) < 0 placesCoordinate[4],
? double.parse(box.read(BoxName.passengerWalletTotal)) costForDriver.toStringAsFixed(2),
.toStringAsFixed(2) double.parse(box.read(BoxName.passengerWalletTotal)) < 0
: '0', ? double.parse(box.read(BoxName.passengerWalletTotal))
box.read(BoxName.email).toString(), .toStringAsFixed(2)
startNameAddress, : '0',
endNameAddress, box.read(BoxName.email).toString(),
box.read(BoxName.carType), startNameAddress,
kazan.toStringAsFixed(0), endNameAddress,
passengerRate.toStringAsFixed(2), box.read(BoxName.carType),
]; kazan.toStringAsFixed(0),
Log.print('body: ${body}'); passengerRate.toStringAsFixed(2),
for (var i = 1; i < driversToken.length; i++) { ];
FirebaseMessagesController().sendNotificationToDriverMapPolyline( Log.print('body: ${body}');
'OrderSpeed', for (var i = 1; i < driversToken.length; i++) {
rideId.toString(), FirebaseMessagesController().sendNotificationToDriverMapPolyline(
driversToken[i], 'OrderSpeed',
body, rideId.toString(),
polylineCoordinates.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 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) { String getLocationArea(double latitude, double longitude) {
// Giza Boundary Check if (latitude >= 29.918901 &&
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 &&
latitude <= 30.198857 && latitude <= 30.198857 &&
longitude >= 31.215009 && longitude >= 31.215009 &&
longitude <= 31.532186) { longitude <= 31.532186) {
box.write(BoxName.serverChosen, AppLink.seferCairoServer); box.write(BoxName.serverChosen, AppLink.seferCairoServer);
return 'Cairo'; return 'Cairo';
} } else if (latitude >= 29.904975 &&
// Alexandria Boundary Check latitude <= 30.143372 &&
else if (latitude >= 30.396286 && longitude >= 30.787030 &&
longitude <= 31.238843) {
box.write(BoxName.serverChosen, AppLink.seferGizaServer);
return 'Giza';
} else if (latitude >= 30.396286 &&
latitude <= 31.654458 && latitude <= 31.654458 &&
longitude >= 29.041139 && longitude >= 29.041139 &&
longitude <= 32.626259) { longitude <= 32.626259) {
box.write(BoxName.serverChosen, AppLink.seferAlexandriaServer); box.write(BoxName.serverChosen, AppLink.seferAlexandriaServer);
return 'Alexandria'; return 'Alexandria';
} else {
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
return 'Outside';
} }
// Return 'Unknown' if outside defined areas
return 'Unknown';
} }
Future<bool> getCarsLocationByPassengerAndReloadMarker( Future<bool> getCarsLocationByPassengerAndReloadMarker(

View File

@@ -1,7 +1,10 @@
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/main.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../constant/colors.dart'; import '../../../constant/colors.dart';
import '../../../controller/firebase/firbase_messge.dart';
import '../../../controller/functions/tts.dart'; import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/home/map_passenger_controller.dart';
@@ -89,8 +92,17 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
// borderRadius: BorderRadius.circular(15)), // borderRadius: BorderRadius.circular(15)),
// child: IconButton( // child: IconButton(
// onPressed: () async { // onPressed: () async {
// box.remove(BoxName.isVerified); // FirebaseMessagesController().sendNotificationToAnyWithoutData(
// Get.to(() => SmsSignupEgypt()); // '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( // icon: const Icon(
// Icons.voice_chat, // Icons.voice_chat,
@@ -98,32 +110,31 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
// ), // ),
// ), // ),
// ), // ),
// AnimatedContainer( AnimatedContainer(
// duration: const Duration(microseconds: 200), duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic, width: controller.widthMapTypeAndTraffic,
// decoration: BoxDecoration( decoration: BoxDecoration(
// color: AppColor.secondaryColor, color: AppColor.secondaryColor,
// border: Border.all(), border: Border.all(),
// borderRadius: BorderRadius.circular(15)), borderRadius: BorderRadius.circular(15)),
// child: IconButton( child: IconButton(
// onPressed: () async { onPressed: () async {
// FirebaseMessagesController().sendNotificationToDriverMAP( FirebaseMessagesController().sendNotificationToDriverMAP(
// '', 'message From passenger'.tr,
// 'from: ', 'My location is correct. You can search for me using the navigation app'
// // jsonDecode(value)['message'].toString(), .tr,
// 'cXavJMQgRACEfYdOnSLDU4:-KwZqsbJvYyIqgkI9oxZCiqyVv9ZnVG7rN0LBf7Nxe9AEcatgHNo0fEomaMWB3ff_SagtNkUuYeHc-GaPETq6Oa', 'db9hQ9BfT_2U-ocVHbEAej:APA91bG2YiVN8Dw3bNitehENk0sUPKt7A3zoT6GY_NdbxsMVKX8ouZRI6Ix9ScLSGYz31gugsb2Ag087FXmbPbQkD9E7nwOR7USPrai5euFjZXVHNrz2Byacn8gBTGr8HPV-CGHG81lk',
// [], [],
// 'order.wav' 'ding.wav',
);
// // polylineCoordinates.toString() // print(box.read(BoxName.tokenFCM));
// ); },
// }, icon: const Icon(
// icon: const Icon( Icons.chat,
// Icons.chat, size: 29,
// size: 29, ),
// ), ),
// ), ),
// ),
// AnimatedContainer( // AnimatedContainer(
// duration: const Duration(microseconds: 200), // duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic, // width: controller.widthMapTypeAndTraffic,

View File

@@ -912,6 +912,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.12.4+1" 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: graphs:
dependency: transitive dependency: transitive
description: description:

View File

@@ -60,6 +60,7 @@ dependencies:
firebase_auth: ^5.1.2 firebase_auth: ^5.1.2
package_info_plus: ^8.0.0 package_info_plus: ^8.0.0
uni_links: ^0.5.1 uni_links: ^0.5.1
googleapis_auth: ^1.6.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: