11/17/1
This commit is contained in:
@@ -14,6 +14,7 @@ import 'package:share/share.dart';
|
||||
|
||||
import '../../../main.dart';
|
||||
import '../../../print.dart';
|
||||
import '../../../views/widgets/error_snakbar.dart';
|
||||
import '../../functions/launch.dart';
|
||||
import '../../notification/notification_captain_controller.dart';
|
||||
|
||||
@@ -103,10 +104,11 @@ Download the SEFER app now and enjoy your ride!
|
||||
// TODO: Implement the actual server upload logic here
|
||||
// Simulating a server request
|
||||
await Future.delayed(Duration(seconds: 2));
|
||||
Get.snackbar('Success'.tr,
|
||||
|
||||
mySnackbarSuccess(
|
||||
'${selectedContacts.length} contacts saved to server'.tr);
|
||||
} catch (e) {
|
||||
Get.snackbar('Error'.tr,
|
||||
mySnackeBarError(
|
||||
'An error occurred while saving contacts to server: $e'.tr);
|
||||
}
|
||||
}
|
||||
@@ -134,16 +136,13 @@ Download the SEFER app now and enjoy your ride!
|
||||
update();
|
||||
|
||||
if (contacts.isEmpty) {
|
||||
Get.snackbar('No contacts available'.tr,
|
||||
'Please add contacts to your phone.'.tr);
|
||||
mySnackeBarError('Please add contacts to your phone.'.tr);
|
||||
}
|
||||
} else {
|
||||
Get.snackbar('Permission denied'.tr,
|
||||
'Contact permission is required to pick contacts'.tr);
|
||||
mySnackeBarError('Contact permission is required to pick contacts'.tr);
|
||||
}
|
||||
} catch (e) {
|
||||
Get.snackbar(
|
||||
'Error'.tr, 'An error occurred while picking contacts: $e'.tr);
|
||||
mySnackeBarError('An error occurred while picking contacts: $e'.tr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,7 +266,7 @@ Download the SEFER app now and enjoy your ride!
|
||||
|
||||
void sendInvite() async {
|
||||
if (invitePhoneController.text.isEmpty) {
|
||||
Get.snackbar('Error', 'Please enter an phone address'.tr);
|
||||
mySnackeBarError('Please enter an phone address'.tr);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -281,8 +280,7 @@ Download the SEFER app now and enjoy your ride!
|
||||
|
||||
if (response != 'failure') {
|
||||
var d = jsonDecode(response);
|
||||
Get.snackbar('Success', 'Invite sent successfully'.tr);
|
||||
|
||||
mySnackbarSuccess('Invite sent successfully'.tr);
|
||||
String message = '${'*SEFER DRIVER CODE*'.tr}\n\n'
|
||||
'${"Use this code in registration".tr}\n'
|
||||
'${"To get a gift for both".tr}\n\n'
|
||||
@@ -297,18 +295,14 @@ Download the SEFER app now and enjoy your ride!
|
||||
|
||||
invitePhoneController.clear();
|
||||
} else {
|
||||
Get.snackbar('Error'.tr, "Invite code already used".tr,
|
||||
backgroundColor: AppColor.redColor,
|
||||
duration: const Duration(seconds: 4));
|
||||
mySnackeBarError("Invite code already used".tr);
|
||||
}
|
||||
// } catch (e) {
|
||||
// Get.snackbar('Error', 'An error occurred'.tr);
|
||||
// }
|
||||
}
|
||||
|
||||
void sendInviteToPassenger() async {
|
||||
if (invitePhoneController.text.isEmpty) {
|
||||
Get.snackbar('Error', 'Please enter an phone address'.tr);
|
||||
mySnackeBarError('Please enter an phone address'.tr);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -323,7 +317,8 @@ Download the SEFER app now and enjoy your ride!
|
||||
|
||||
if (response != 'failure') {
|
||||
var d = jsonDecode(response);
|
||||
Get.snackbar('Success', 'Invite sent successfully'.tr);
|
||||
|
||||
mySnackbarSuccess('Invite sent successfully'.tr);
|
||||
|
||||
String message = '${'*SEFER APP CODE*'.tr}\n\n'
|
||||
'${"Use this code in registration".tr}\n'
|
||||
@@ -339,13 +334,10 @@ Download the SEFER app now and enjoy your ride!
|
||||
|
||||
invitePhoneController.clear();
|
||||
} else {
|
||||
Get.snackbar('Error'.tr, "Invite code already used".tr,
|
||||
backgroundColor: AppColor.redColor,
|
||||
duration: const Duration(seconds: 4));
|
||||
mySnackeBarError(
|
||||
"Invite code already used".tr,
|
||||
);
|
||||
}
|
||||
// } catch (e) {
|
||||
// Get.snackbar('Error', 'An error occurred'.tr);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:SEFER/constant/colors.dart';
|
||||
import 'package:SEFER/controller/functions/location_background_controller.dart';
|
||||
import 'package:SEFER/print.dart';
|
||||
import 'package:SEFER/views/auth/captin/cards/sms_signup.dart';
|
||||
import 'package:SEFER/views/auth/captin/login_captin.dart';
|
||||
import 'package:SEFER/views/widgets/elevated_btn.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -164,7 +162,7 @@ class LoginDriverController extends GetxController {
|
||||
box.write(BoxName.carTypeOfDriver, 'Pink Bike');
|
||||
}
|
||||
} else if (int.parse(jsonDecoeded['data'][0]['year'].toString()) >
|
||||
2017) {
|
||||
2016) {
|
||||
if (jsonDecoeded['data'][0]['gender'].toString() != 'Male') {
|
||||
box.write(BoxName.carTypeOfDriver, 'Lady');
|
||||
} else {
|
||||
@@ -172,7 +170,7 @@ class LoginDriverController extends GetxController {
|
||||
}
|
||||
} else if (int.parse(jsonDecoeded['data'][0]['year'].toString()) >
|
||||
2002 &&
|
||||
int.parse(jsonDecoeded['data'][0]['year'].toString()) < 2017) {
|
||||
int.parse(jsonDecoeded['data'][0]['year'].toString()) < 2016) {
|
||||
box.write(BoxName.carTypeOfDriver, 'Speed');
|
||||
} else if (int.parse(jsonDecoeded['data'][0]['year'].toString()) <
|
||||
2002) {
|
||||
@@ -204,7 +202,7 @@ class LoginDriverController extends GetxController {
|
||||
'token': box.read(BoxName.tokenDriver),
|
||||
'captain_id': box.read(BoxName.driverID).toString()
|
||||
});
|
||||
CRUD().post(
|
||||
await CRUD().post(
|
||||
link:
|
||||
"${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php",
|
||||
payload: {
|
||||
@@ -212,30 +210,29 @@ class LoginDriverController extends GetxController {
|
||||
'captain_id':
|
||||
box.read(BoxName.driverID).toString()
|
||||
});
|
||||
CRUD().post(
|
||||
link:
|
||||
"${AppLink.seferGizaServer}/ride/firebase/addDriver.php",
|
||||
payload: {
|
||||
'token': box.read(BoxName.tokenDriver),
|
||||
'captain_id':
|
||||
box.read(BoxName.driverID).toString()
|
||||
});
|
||||
// await CRUD().post(
|
||||
// link:
|
||||
// "${AppLink.seferGizaServer}/ride/firebase/addDriver.php",
|
||||
// payload: {
|
||||
// 'token': box.read(BoxName.tokenDriver),
|
||||
// 'captain_id':
|
||||
// box.read(BoxName.driverID).toString()
|
||||
// });
|
||||
Get.back();
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
Get.off(() => HomeCaptain());
|
||||
// Get.off(() => LoginCaptin());
|
||||
} else {
|
||||
Get.offAll(() => SmsSignupEgypt());
|
||||
// Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'],
|
||||
// backgroundColor: Colors.redAccent);
|
||||
|
||||
isloading = false;
|
||||
update();
|
||||
}
|
||||
} else {
|
||||
Get.snackbar('failure'.tr, '', backgroundColor: AppColor.redColor);
|
||||
mySnackbarSuccess('');
|
||||
|
||||
isloading = false;
|
||||
update();
|
||||
}
|
||||
@@ -263,7 +260,6 @@ class LoginDriverController extends GetxController {
|
||||
|
||||
isloading = false;
|
||||
update();
|
||||
// Get.snackbar('Failure', '', backgroundColor: Colors.red);
|
||||
} else {
|
||||
var jsonDecoeded = jsonDecode(res);
|
||||
if (jsonDecoeded.isNotEmpty) {
|
||||
@@ -321,7 +317,7 @@ class LoginDriverController extends GetxController {
|
||||
'change device'.tr,
|
||||
jsonDecode(token)['data'][0]['token'].toString(),
|
||||
[],
|
||||
'promo.wav');
|
||||
'ding.wav');
|
||||
Get.defaultDialog(
|
||||
title: 'you will use this device?'.tr,
|
||||
middleText: '',
|
||||
@@ -333,7 +329,7 @@ class LoginDriverController extends GetxController {
|
||||
'token': box.read(BoxName.tokenDriver),
|
||||
'captain_id': box.read(BoxName.driverID).toString()
|
||||
});
|
||||
CRUD().post(
|
||||
await CRUD().post(
|
||||
link:
|
||||
"${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php",
|
||||
payload: {
|
||||
@@ -341,7 +337,7 @@ class LoginDriverController extends GetxController {
|
||||
'captain_id':
|
||||
box.read(BoxName.driverID).toString()
|
||||
});
|
||||
CRUD().post(
|
||||
await CRUD().post(
|
||||
link:
|
||||
"${AppLink.seferGizaServer}/ride/firebase/addDriver.php",
|
||||
payload: {
|
||||
@@ -358,13 +354,13 @@ class LoginDriverController extends GetxController {
|
||||
// Get.off(() => LoginCaptin());
|
||||
} else {
|
||||
Get.offAll(() => SmsSignupEgypt());
|
||||
// Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'],
|
||||
// backgroundColor: Colors.redAccent);
|
||||
|
||||
isloading = false;
|
||||
update();
|
||||
}
|
||||
} else {
|
||||
Get.snackbar('failure'.tr, '', backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('');
|
||||
|
||||
isloading = false;
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:math';
|
||||
import 'package:SEFER/controller/auth/captin/login_captin_controller.dart';
|
||||
import 'package:SEFER/views/auth/captin/cards/egypt_card_a_i.dart';
|
||||
import 'package:SEFER/views/auth/captin/register_captin.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:SEFER/constant/box_name.dart';
|
||||
@@ -152,8 +153,9 @@ class RegisterCaptainController extends GetxController {
|
||||
update();
|
||||
}
|
||||
} else {
|
||||
Get.snackbar('Phone Number wrong'.tr, '',
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError(
|
||||
'Phone Number wrong'.tr,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -235,11 +237,7 @@ class RegisterCaptainController extends GetxController {
|
||||
|
||||
// Handle case where phone number is already verified
|
||||
_handleAlreadyVerified() {
|
||||
Get.snackbar(
|
||||
'Phone number is already verified'.tr,
|
||||
'',
|
||||
backgroundColor: AppColor.greenColor,
|
||||
);
|
||||
mySnackbarSuccess('Phone number is already verified'.tr);
|
||||
box.write(BoxName.phoneVerified, '1');
|
||||
box.write(BoxName.phone, '+2${phoneController.text}');
|
||||
Get.put(LoginDriverController()).loginUsingCredentials(
|
||||
@@ -263,7 +261,6 @@ class RegisterCaptainController extends GetxController {
|
||||
},
|
||||
);
|
||||
|
||||
// Get.snackbar('', '');
|
||||
await smsEgyptController.sendSmsEgypt(phoneNumber, randomNumber.toString());
|
||||
|
||||
lastOtpSentTime = DateTime.now(); // Update the last OTP sent time
|
||||
@@ -274,11 +271,7 @@ class RegisterCaptainController extends GetxController {
|
||||
|
||||
// Show error message in case of invalid phone number
|
||||
void _showErrorMessage(String message) {
|
||||
Get.snackbar(
|
||||
message.tr,
|
||||
'',
|
||||
backgroundColor: AppColor.redColor,
|
||||
);
|
||||
mySnackeBarError(message);
|
||||
}
|
||||
|
||||
verifySMSCode() async {
|
||||
@@ -315,8 +308,7 @@ class RegisterCaptainController extends GetxController {
|
||||
// }
|
||||
}
|
||||
} else {
|
||||
Get.snackbar('Error'.tr, 'you must insert token code '.tr,
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('you must insert token code '.tr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:SEFER/controller/functions/crud.dart';
|
||||
import 'package:SEFER/main.dart';
|
||||
import 'package:SEFER/views/auth/captin/cards/sms_signup.dart';
|
||||
import 'package:SEFER/views/home/on_boarding_page.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:google_sign_in/google_sign_in.dart';
|
||||
|
||||
@@ -116,8 +117,7 @@ class GoogleSignInHelper {
|
||||
|
||||
return googleUser;
|
||||
} catch (error) {
|
||||
Get.snackbar('Google Sign-In error', '$error',
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('$error');
|
||||
addError(error.toString(), 'GoogleSignInAccount?> signInFromLogin()');
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -50,7 +51,7 @@ class LoginController extends GetxController {
|
||||
update();
|
||||
if (res == 'failure') {
|
||||
//Failure
|
||||
Get.snackbar('Failure', '', backgroundColor: Colors.red);
|
||||
mySnackeBarError('');
|
||||
} else {
|
||||
var jsonDecoeded = jsonDecode(res);
|
||||
if (jsonDecoeded.isNotEmpty) {
|
||||
@@ -90,8 +91,7 @@ class LoginController extends GetxController {
|
||||
);
|
||||
}
|
||||
} else if (jsonDecoeded['status'] == 'Failure') {
|
||||
Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'],
|
||||
backgroundColor: Colors.redAccent);
|
||||
mySnackeBarError(jsonDecoeded['data']);
|
||||
isloading = false;
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
@@ -31,7 +32,7 @@ class TokenController extends GetxController {
|
||||
update();
|
||||
var jsonToken = jsonDecode(res.body);
|
||||
if (jsonToken['status'] == 'The token has been updated successfully.') {
|
||||
Get.snackbar('token updated'.tr, '');
|
||||
mySnackbarSuccess('token updated'.tr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:SEFER/controller/home/captin/home_captain_controller.dart';
|
||||
import 'package:SEFER/env/env.dart';
|
||||
import 'package:SEFER/print.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:SEFER/views/widgets/mydialoug.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -10,7 +9,6 @@ import 'package:get/get.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:SEFER/views/widgets/elevated_btn.dart';
|
||||
|
||||
import '../../constant/api_key.dart';
|
||||
import '../../constant/box_name.dart';
|
||||
import '../../constant/colors.dart';
|
||||
import '../../constant/style.dart';
|
||||
@@ -208,8 +206,6 @@ class FirebaseMessagesController extends GetxController {
|
||||
|
||||
update();
|
||||
} else if (message.notification!.title! == 'Hi ,I will go now') {
|
||||
// Get.snackbar('Hi ,I will go now', '',
|
||||
// backgroundColor: AppColor.greenColor);
|
||||
if (Platform.isAndroid) {
|
||||
notificationController.showNotification(
|
||||
'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'tone2', '');
|
||||
@@ -274,14 +270,7 @@ class FirebaseMessagesController extends GetxController {
|
||||
// Get.off(const CallPage());
|
||||
} catch (e) {}
|
||||
} else if (message.notification!.title! == 'Order Applied'.tr) {
|
||||
Get.snackbar(
|
||||
"The order has been accepted by another driver."
|
||||
.tr, // Corrected grammar
|
||||
"Be more mindful next time to avoid dropping orders."
|
||||
.tr, // Improved sentence structure
|
||||
backgroundColor: AppColor.yellowColor,
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
mySnackbarSuccess("The order has been accepted by another driver.".tr);
|
||||
} else if (message.notification!.title! == 'Order') {
|
||||
if (Platform.isAndroid) {
|
||||
notificationController.showNotification(
|
||||
|
||||
@@ -230,7 +230,7 @@ class NotificationController extends GetxController {
|
||||
});
|
||||
}
|
||||
|
||||
void scheduleDailyNotifications(
|
||||
void scheduleNotificationsForSevenDays(
|
||||
String title, String message, String tone) async {
|
||||
final AndroidNotificationDetails android = AndroidNotificationDetails(
|
||||
'high_importance_channel',
|
||||
@@ -262,47 +262,72 @@ class NotificationController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
// Schedule notifications for 10:00 AM and 3:00 PM daily
|
||||
await _scheduleNotificationForTime(7, 0, title, message, details);
|
||||
await _scheduleNotificationForTime(13, 0, title, message, details);
|
||||
await _scheduleNotificationForTime(18, 0, title, message, details);
|
||||
// await _scheduleNotificationForTime(0, 22, title, message, details);
|
||||
// Schedule notifications for the next 7 days
|
||||
for (int day = 0; day < 7; day++) {
|
||||
// Schedule for 8:00 AM
|
||||
await _scheduleNotificationForTime(
|
||||
day, 7, 0, title, message, details, day * 1000 + 1); // Unique ID
|
||||
|
||||
print('Daily notifications scheduled successfully');
|
||||
await _scheduleNotificationForTime(
|
||||
day, 10, 14, title, message, details, day * 1000 + 2); // Unique ID
|
||||
|
||||
// Schedule for 3:00 PM
|
||||
await _scheduleNotificationForTime(
|
||||
day, 13, 0, title, message, details, day * 1000 + 3); // Unique ID
|
||||
|
||||
// Schedule for 8:00 PM
|
||||
await _scheduleNotificationForTime(
|
||||
day, 20, 0, title, message, details, day * 1000 + 4); // Unique ID
|
||||
}
|
||||
|
||||
print('Notifications scheduled successfully for the next 7 days');
|
||||
}
|
||||
|
||||
// Helper function to get the next instance of a specific hour and minute
|
||||
Future<void> _scheduleNotificationForTime(int hour, int minute, String title,
|
||||
String message, NotificationDetails details) async {
|
||||
Future<void> _scheduleNotificationForTime(
|
||||
int dayOffset,
|
||||
int hour,
|
||||
int minute,
|
||||
String title,
|
||||
String message,
|
||||
NotificationDetails details,
|
||||
int notificationId,
|
||||
) async {
|
||||
// Initialize and set Cairo timezone
|
||||
tz.initializeTimeZones();
|
||||
final cairoLocation = tz.getLocation('Africa/Cairo'); // Set Cairo timezone
|
||||
var cairoLocation = tz.getLocation('Africa/Cairo');
|
||||
|
||||
final now = tz.TZDateTime.now(
|
||||
cairoLocation); // Use Cairo timezone for the current time
|
||||
final now = tz.TZDateTime.now(cairoLocation);
|
||||
tz.TZDateTime scheduledDate = tz.TZDateTime(
|
||||
cairoLocation, now.year, now.month, now.day, hour, minute);
|
||||
cairoLocation,
|
||||
now.year,
|
||||
now.month,
|
||||
now.day + dayOffset, // Add offset to schedule for the next days
|
||||
hour,
|
||||
minute,
|
||||
);
|
||||
|
||||
// If scheduled time is already past today, schedule it for the next day
|
||||
// If the scheduled time is in the past, move it to the next day
|
||||
if (scheduledDate.isBefore(now)) {
|
||||
scheduledDate = scheduledDate.add(const Duration(days: 1));
|
||||
scheduledDate = scheduledDate.add(Duration(days: 1));
|
||||
}
|
||||
|
||||
print('Current time (Cairo): $now');
|
||||
print('Scheduling notification for: $scheduledDate');
|
||||
|
||||
await _flutterLocalNotificationsPlugin.zonedSchedule(
|
||||
0, // Use unique IDs if you want to manage each notification separately
|
||||
notificationId, // Unique ID for each notification
|
||||
title,
|
||||
message,
|
||||
scheduledDate,
|
||||
details,
|
||||
androidAllowWhileIdle: true,
|
||||
androidScheduleMode: AndroidScheduleMode.exact,
|
||||
uiLocalNotificationDateInterpretation:
|
||||
UILocalNotificationDateInterpretation.absoluteTime,
|
||||
matchDateTimeComponents: DateTimeComponents.time,
|
||||
matchDateTimeComponents:
|
||||
null, // Don't repeat automatically; we handle 7 days manually
|
||||
);
|
||||
print('Notification scheduled successfully for Cairo timezone');
|
||||
|
||||
print('Notification scheduled successfully for: $scheduledDate');
|
||||
}
|
||||
|
||||
void scheduleNotificationEvery10Hours(
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import 'package:SEFER/constant/links.dart';
|
||||
import 'package:SEFER/controller/functions/crud.dart';
|
||||
import 'package:SEFER/views/home/Captin/home_captain/home_captin.dart';
|
||||
import 'package:SEFER/views/home/Captin/orderCaptin/order_request_page.dart';
|
||||
import 'package:SEFER/views/widgets/elevated_btn.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class OverlayContent1 extends StatelessWidget {
|
||||
@override
|
||||
|
||||
@@ -231,9 +231,9 @@ class CRUD {
|
||||
);
|
||||
Log.print('response: ${response.request}');
|
||||
Log.print('response: ${response.body}');
|
||||
Log.print('response: ${response.statusCode}');
|
||||
Log.print('response: ${response.reasonPhrase}');
|
||||
Log.print('response: ${payload}');
|
||||
// Log.print('response: ${response.statusCode}');
|
||||
// Log.print('response: ${response.reasonPhrase}');
|
||||
// Log.print('response: ${payload}');
|
||||
var jsonData = jsonDecode(response.body);
|
||||
if (response.statusCode == 200) {
|
||||
if (jsonData['status'] == 'success') {
|
||||
|
||||
@@ -10,6 +10,7 @@ import 'package:SEFER/controller/functions/crud.dart';
|
||||
import 'package:SEFER/controller/functions/device_info.dart';
|
||||
import 'package:SEFER/main.dart';
|
||||
import 'package:SEFER/views/home/Captin/home_captain/home_captin.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:SEFER/views/widgets/mydialoug.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -63,11 +64,9 @@ class AI extends GetxController {
|
||||
if (res != 'failure') {
|
||||
isInviteDriverFound = true;
|
||||
update();
|
||||
Get.snackbar("Code approved".tr, '',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
mySnackbarSuccess("Code approved".tr);
|
||||
} else {
|
||||
Get.snackbar("Code not approved".tr, '',
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError("Code not approved".tr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -80,11 +79,9 @@ class AI extends GetxController {
|
||||
if (res != 'failure') {
|
||||
isInviteDriverFound = true;
|
||||
update();
|
||||
Get.snackbar("Code approved".tr, '',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
mySnackbarSuccess("Code approved".tr);
|
||||
} else {
|
||||
Get.snackbar("Code not approved".tr, '',
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError("Code not approved".tr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -386,18 +383,17 @@ class AI extends GetxController {
|
||||
CRUD().post(
|
||||
link: '${AppLink.seferAlexandriaServer}/auth/captin/register.php',
|
||||
payload: payload);
|
||||
Get.snackbar('Success', 'Driver data saved successfully',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
mySnackbarSuccess('Driver data saved successfully');
|
||||
} else {
|
||||
Get.snackbar('Error'.tr,
|
||||
'${'Failed to save driver data'.tr}: ${status1['message']}',
|
||||
backgroundColor: Colors.red);
|
||||
mySnackeBarError(
|
||||
'${'Failed to save driver data'.tr}: ${status1['message']}');
|
||||
}
|
||||
} catch (e) {
|
||||
isLoading = false;
|
||||
update();
|
||||
Get.snackbar('Error'.tr, 'An error occurred while saving driver data'.tr,
|
||||
backgroundColor: Colors.red);
|
||||
mySnackeBarError(
|
||||
'An error occurred while saving driver data'.tr,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,7 +404,7 @@ class AI extends GetxController {
|
||||
"InspectionResult": responseCriminalRecordEgypt['InspectionResult'],
|
||||
});
|
||||
if (res != 'failure') {
|
||||
Get.snackbar('uploaded sucssefuly'.tr, '');
|
||||
mySnackbarSuccess('uploaded sucssefuly'.tr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -439,8 +435,7 @@ class AI extends GetxController {
|
||||
var status = jsonDecode(res);
|
||||
if (status['status'] == 'success') {
|
||||
isCarSaved = true;
|
||||
Get.snackbar('Success', 'message',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
mySnackbarSuccess('');
|
||||
CRUD().post(
|
||||
link:
|
||||
'${AppLink.seferAlexandriaServer}/ride/RegisrationCar/add.php',
|
||||
@@ -979,8 +974,7 @@ class AI extends GetxController {
|
||||
|
||||
update();
|
||||
} else {
|
||||
Get.snackbar('Error', "JSON string not found",
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError("JSON string not found");
|
||||
}
|
||||
|
||||
// Rest of your code...
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:SEFER/views/home/on_boarding_page.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:SEFER/constant/box_name.dart';
|
||||
@@ -174,9 +175,9 @@ class LogOutController extends GetxController {
|
||||
'email': box.read(BoxName.email),
|
||||
});
|
||||
} else {
|
||||
Get.snackbar('Email Wrong'.tr, 'Email you inserted is Wrong.'.tr,
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError(
|
||||
'Email you inserted is Wrong.'.tr,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:SEFER/constant/box_name.dart';
|
||||
import 'package:SEFER/main.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_tts/flutter_tts.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -45,8 +46,7 @@ class TextToSpeechController extends GetxController {
|
||||
update();
|
||||
}
|
||||
} catch (error) {
|
||||
// Handle error gracefully, e.g., show a message
|
||||
Get.snackbar('Error', 'Failed to speak text: $error');
|
||||
mySnackeBarError('Failed to speak text: $error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:SEFER/constant/api_key.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:image_cropper/image_cropper.dart';
|
||||
@@ -152,8 +153,9 @@ class ImageController extends GetxController {
|
||||
);
|
||||
} catch (e) {
|
||||
print('Error in choosImage: $e');
|
||||
Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
backgroundColor: AppColor.primaryColor);
|
||||
mySnackeBarError('Image Upload Failed'.tr);
|
||||
// Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
// backgroundColor: AppColor.primaryColor);
|
||||
} finally {
|
||||
isloading = false;
|
||||
update();
|
||||
@@ -211,8 +213,9 @@ class ImageController extends GetxController {
|
||||
);
|
||||
} catch (e) {
|
||||
print('Error in choosImage: $e');
|
||||
Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
backgroundColor: AppColor.primaryColor);
|
||||
// Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
// backgroundColor: AppColor.primaryColor);
|
||||
mySnackeBarError('Image Upload Failed'.tr);
|
||||
} finally {
|
||||
isloading = false;
|
||||
update();
|
||||
@@ -287,8 +290,9 @@ class ImageController extends GetxController {
|
||||
link,
|
||||
);
|
||||
} catch (e) {
|
||||
Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('Image Upload Failed'.tr);
|
||||
// Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
// backgroundColor: AppColor.redColor);
|
||||
} finally {
|
||||
isloading = false;
|
||||
update();
|
||||
@@ -420,8 +424,9 @@ class ImageController extends GetxController {
|
||||
link,
|
||||
);
|
||||
} catch (e) {
|
||||
Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('Image Upload Failed'.tr);
|
||||
// Get.snackbar('Image Upload Failed'.tr, e.toString(),
|
||||
// backgroundColor: AppColor.redColor);
|
||||
} finally {
|
||||
isloading = false;
|
||||
update();
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:SEFER/constant/box_name.dart';
|
||||
import 'package:SEFER/constant/links.dart';
|
||||
import 'package:SEFER/controller/functions/crud.dart';
|
||||
import 'package:SEFER/main.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../../../../constant/colors.dart';
|
||||
@@ -43,20 +44,13 @@ class AssuranceHealthController extends GetxController {
|
||||
|
||||
if (response != 'failure') {
|
||||
// Handle success (e.g., show a success message)
|
||||
print("Health assurance data saved successfully");
|
||||
Get.snackbar(
|
||||
"Success".tr,
|
||||
"You have successfully opted for health insurance.".tr,
|
||||
backgroundColor: AppColor.greenColor,
|
||||
);
|
||||
|
||||
mySnackbarSuccess(
|
||||
"You have successfully opted for health insurance.".tr);
|
||||
} else {
|
||||
// Handle failure (e.g., show an error message)
|
||||
print("Failed to save health assurance data");
|
||||
Get.snackbar(
|
||||
"Error".tr,
|
||||
"Please enter a health insurance status.".tr,
|
||||
backgroundColor: AppColor.redColor,
|
||||
);
|
||||
mySnackeBarError("Please enter a health insurance status.".tr);
|
||||
}
|
||||
} catch (e) {
|
||||
// Handle any errors
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:convert';
|
||||
import 'package:SEFER/constant/links.dart';
|
||||
import 'package:SEFER/controller/functions/crud.dart';
|
||||
import 'package:SEFER/print.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
|
||||
@@ -57,10 +58,10 @@ class VideoController extends GetxController {
|
||||
// Log.print('videos: ${videos}');
|
||||
update();
|
||||
} else {
|
||||
Get.snackbar('Error'.tr, '');
|
||||
mySnackeBarError('');
|
||||
}
|
||||
} catch (e) {
|
||||
Get.snackbar("Error", e.toString());
|
||||
mySnackeBarError(e.toString());
|
||||
} finally {
|
||||
isLoading(false);
|
||||
}
|
||||
|
||||
@@ -302,13 +302,13 @@ class HomeCaptainController extends GetxController {
|
||||
'token': box.read(BoxName.tokenDriver),
|
||||
'captain_id': box.read(BoxName.driverID).toString()
|
||||
});
|
||||
CRUD().post(
|
||||
await CRUD().post(
|
||||
link: "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php",
|
||||
payload: {
|
||||
'token': box.read(BoxName.tokenDriver),
|
||||
'captain_id': box.read(BoxName.driverID).toString()
|
||||
});
|
||||
CRUD().post(
|
||||
await CRUD().post(
|
||||
link: "${AppLink.seferGizaServer}/ride/firebase/addDriver.php",
|
||||
payload: {
|
||||
'token': box.read(BoxName.tokenDriver),
|
||||
|
||||
@@ -551,7 +551,8 @@ class MapDriverController extends GetxController {
|
||||
);
|
||||
MyDialog().getDialog('Are you sure to exit ride ?'.tr, '', () {
|
||||
if (distanceToDestination > 900 ||
|
||||
(double.parse(distance) < 1000 && distanceToDestination > 150)) {
|
||||
(double.parse(distance.toString()) < 1000 &&
|
||||
distanceToDestination > 150)) {
|
||||
Get.back();
|
||||
finishRideFromDriver1();
|
||||
} else {
|
||||
@@ -611,16 +612,17 @@ class MapDriverController extends GetxController {
|
||||
paymentAmount = totalCost;
|
||||
box.write(BoxName.statusDriverLocation, 'off');
|
||||
// changeRideToBeginToPassenger();
|
||||
await CRUD()
|
||||
.post(link: "${AppLink.seferCairoServer}/rides/update.php", payload: {
|
||||
'id': rideId,
|
||||
'rideTimeFinish': DateTime.now().toString(),
|
||||
'status': 'Finished',
|
||||
'price': totalCost,
|
||||
});
|
||||
await CRUD().post(
|
||||
link: "${AppLink.seferCairoServer}/ride/rides/update.php",
|
||||
payload: {
|
||||
'id': rideId,
|
||||
'rideTimeFinish': DateTime.now().toString(),
|
||||
'status': 'Finished',
|
||||
'price': totalCost,
|
||||
});
|
||||
if (AppLink.endPoint != AppLink.seferCairoServer) {
|
||||
CRUD().post(
|
||||
link: "${AppLink.endPoint}/rides/update.php",
|
||||
link: "${AppLink.endPoint}/ride/rides/update.php",
|
||||
payload: {
|
||||
'id': rideId,
|
||||
'rideTimeFinish': DateTime.now().toString(),
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:SEFER/constant/colors.dart';
|
||||
import 'package:SEFER/constant/style.dart';
|
||||
import 'package:SEFER/controller/firebase/firbase_messge.dart';
|
||||
import 'package:SEFER/views/widgets/elevated_btn.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:SEFER/constant/box_name.dart';
|
||||
@@ -81,22 +82,10 @@ class CaptainWalletController extends GetxController {
|
||||
amountToNewDriverMap = d['data'];
|
||||
// update();
|
||||
} else {
|
||||
Get.snackbar(
|
||||
"This driver is not registered".tr,
|
||||
'',
|
||||
duration: const Duration(seconds: 3),
|
||||
backgroundColor: AppColor.redColor,
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
mySnackeBarError("This driver is not registered".tr);
|
||||
}
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Your Budget less than needed'.tr,
|
||||
'',
|
||||
duration: const Duration(seconds: 3),
|
||||
backgroundColor: AppColor.redColor,
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
mySnackeBarError('Your Budget less than needed'.tr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:SEFER/constant/box_name.dart';
|
||||
import 'package:SEFER/constant/colors.dart';
|
||||
import 'package:SEFER/main.dart';
|
||||
import 'package:SEFER/print.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:secure_string_operations/secure_string_operations.dart';
|
||||
@@ -91,14 +92,11 @@ class PaymobPayout extends GetxController {
|
||||
'Wallet',
|
||||
box.read(BoxName.emailDriver).toString());
|
||||
|
||||
Get.snackbar('Transaction successful'.tr,
|
||||
'${'Transaction successful'.tr} ${dec['amount']}',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
mySnackbarSuccess('${'Transaction successful'.tr} ${dec['amount']}');
|
||||
|
||||
Get.find<CaptainWalletController>().refreshCaptainWallet();
|
||||
} else if (dec['disbursement_status'] == 'failed') {
|
||||
Get.snackbar('Transaction failed'.tr, 'Transaction failed'.tr,
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('Transaction failed'.tr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,14 +173,10 @@ class PaymobPayout extends GetxController {
|
||||
'Wallet',
|
||||
box.read(BoxName.emailDriver).toString());
|
||||
|
||||
Get.snackbar('Transaction successful'.tr,
|
||||
'${'Transaction successful'.tr} ${dec['amount']}',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
|
||||
mySnackbarSuccess('${'Transaction successful'.tr} ${dec['amount']}');
|
||||
Get.find<CaptainWalletController>().refreshCaptainWallet();
|
||||
} else if (dec['disbursement_status'] == 'failed') {
|
||||
Get.snackbar('Transaction failed'.tr, 'Transaction failed'.tr,
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('Transaction failed'.tr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -197,7 +197,13 @@ class MyTranslation extends Translations {
|
||||
"Choose from contact": "اختر من جهات الاتصال",
|
||||
"Cancel": "إلغاء",
|
||||
"Open App": "افتح التطبيق",
|
||||
"Add new car": "أضف سيارة جديدة",
|
||||
"Ok I will go now.": "حسنًا، سأذهب الآن.",
|
||||
"Hi, I will go now": "مرحبًا، سأذهب الآن.",
|
||||
"Add new car": "أضف سيارة جديدة", "Rate Our App": "قيّم تطبيقنا",
|
||||
"How would you rate our app?": "كيف تقيم تطبيقنا؟",
|
||||
"write comment here": "اكتب تعليقك هنا",
|
||||
"Submit Rating": "إرسال التقييم",
|
||||
"Rating submitted successfully": "تم إرسال التقييم بنجاح",
|
||||
"Open the app to stay updated and ready for upcoming tasks.":
|
||||
"افتح التطبيق لتبقى على اطلاع واستعداد للمهام القادمة.",
|
||||
"No invitation found": "لم يتم العثور على دعوة",
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:SEFER/constant/style.dart';
|
||||
import 'package:SEFER/controller/functions/tts.dart';
|
||||
import 'package:SEFER/controller/payment/paymob/paymob_response.dart';
|
||||
import 'package:SEFER/views/widgets/elevated_btn.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_paypal/flutter_paypal.dart';
|
||||
@@ -396,7 +397,8 @@ class PaymentController extends GetxController {
|
||||
'accountBank': box.read(BoxName.accountIdStripeConnect),
|
||||
});
|
||||
if (jsonDecode(res)['status'] == 'success') {
|
||||
Get.snackbar('Account Updated', '');
|
||||
mySnackbarSuccess('Account Updated'.tr);
|
||||
// Get.snackbar('Account Updated', '');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -589,11 +591,12 @@ class PaymentController extends GetxController {
|
||||
billingData: PaymobBillingDataWallet(),
|
||||
onPayment: (PaymobResponseWallet response) {},
|
||||
);
|
||||
// Log.print('message: ${response!.message}');
|
||||
// Log.print('responseCode: ${response.responseCode}');
|
||||
// Log.print('success: ${response.success}');
|
||||
// Log.print('transactionID: ${response.transactionID}');
|
||||
if (response!.responseCode == '200' && response.success == true) {
|
||||
Log.print('message: ${response!.message}');
|
||||
Log.print('responseCode: ${response.responseCode}');
|
||||
Log.print('success: ${response.success}');
|
||||
Log.print('transactionID: ${response.transactionID}');
|
||||
if (response.responseCode.toString() == '200' &&
|
||||
response.success == true) {
|
||||
// Log.print('transactionID wewer: ${response.transactionID}');
|
||||
Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor);
|
||||
method();
|
||||
|
||||
97
lib/controller/rate/rate_app_controller.dart
Normal file
97
lib/controller/rate/rate_app_controller.dart
Normal file
@@ -0,0 +1,97 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:SEFER/constant/box_name.dart';
|
||||
import 'package:SEFER/constant/colors.dart';
|
||||
import 'package:SEFER/constant/links.dart';
|
||||
import 'package:SEFER/controller/functions/crud.dart';
|
||||
import 'package:SEFER/main.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:SEFER/views/widgets/mydialoug.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
// Import url_launcher to open the app store
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class RatingController extends GetxController {
|
||||
var userRating = 0.obs;
|
||||
final comment = TextEditingController();
|
||||
void submitRating(int rating) {
|
||||
userRating.value = rating;
|
||||
|
||||
_saveRating(rating);
|
||||
}
|
||||
|
||||
void _redirectToAppStore() async {
|
||||
// URLs for App Store and Google Play Store
|
||||
const appStoreUrl = 'https://apps.apple.com/app/6502189302';
|
||||
const playStoreUrl =
|
||||
'https://play.google.com/store/apps/details?id=com.sefer_driver';
|
||||
final url = GetPlatform.isIOS ? appStoreUrl : playStoreUrl;
|
||||
|
||||
if (await launchUrl(Uri.parse(url))) {
|
||||
await launchUrl(Uri.parse(url));
|
||||
} else {
|
||||
mySnackeBarError("Could not open the app store.");
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _saveRating(int rating) async {
|
||||
// Build the payload with user data
|
||||
final payload = {
|
||||
"name": box.read(BoxName.driverID) != null
|
||||
? box.read(BoxName.nameDriver)
|
||||
: box.read(BoxName.name),
|
||||
"email": box.read(BoxName.driverID) == null
|
||||
? box.read(BoxName.email).toString()
|
||||
: box.read(BoxName.emailDriver).toString(),
|
||||
"phone": box.read(BoxName.driverID) == null
|
||||
? box.read(BoxName.phone)
|
||||
: box.read(BoxName.phoneDriver),
|
||||
"userId": box.read(BoxName.driverID) ?? box.read(BoxName.passengerID),
|
||||
"userType": box.read(BoxName.driverID) != null ? "driver" : "passenger",
|
||||
"rating": rating.toString(),
|
||||
"comment": comment.text.isEmpty
|
||||
? 'nothing'
|
||||
: comment.text, // Get actual text from comment controller
|
||||
};
|
||||
|
||||
// Send the rating data to the backend
|
||||
var res = await CRUD().post(link: AppLink.addRateApp, payload: payload);
|
||||
|
||||
// Handle the response and check if it's JSON-formatted
|
||||
if (res != 'failure') {
|
||||
try {
|
||||
// Attempt to parse the response as JSON
|
||||
final parsedResponse = jsonDecode(res);
|
||||
|
||||
if (parsedResponse['status'] == 'success') {
|
||||
// Display a success message
|
||||
await CRUD().post(link: AppLink.sendEmailRateingApp, payload: {
|
||||
"name": payload["name"],
|
||||
"email": payload["email"],
|
||||
"rating": rating.toString(),
|
||||
"comment": payload["comment"],
|
||||
});
|
||||
MyDialog().getDialog('Rating submitted successfully'.tr, '', () {
|
||||
if (rating == 5) {
|
||||
Get.back();
|
||||
_redirectToAppStore();
|
||||
} else {
|
||||
Get.back();
|
||||
}
|
||||
});
|
||||
|
||||
// Send confirmation email if the rating was successfully submitted
|
||||
} else {
|
||||
mySnackeBarError('Failed to submit rating');
|
||||
}
|
||||
} catch (e) {
|
||||
// If JSON decoding fails, log the response directly
|
||||
// Get.snackbar('Success', 'Rating submitted successfully',
|
||||
// backgroundColor: AppColor.greenColor);
|
||||
}
|
||||
} else {
|
||||
mySnackeBarError('Failed to connect to the server');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ import 'package:SEFER/constant/colors.dart';
|
||||
import 'package:SEFER/controller/firebase/firbase_messge.dart';
|
||||
import 'package:SEFER/controller/home/captin/map_driver_controller.dart';
|
||||
import 'package:SEFER/controller/payment/payment_controller.dart';
|
||||
import 'package:SEFER/views/widgets/error_snakbar.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:SEFER/constant/box_name.dart';
|
||||
@@ -54,8 +55,7 @@ class RateController extends GetxController {
|
||||
'token': paymentToken2,
|
||||
}).then((value) async {
|
||||
if (value != 'failure') {
|
||||
Get.snackbar('Wallet Added'.tr, '',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
mySnackbarSuccess('Wallet Added'.tr);
|
||||
// if (double.parse(
|
||||
// Get.find<CaptainWalletController>().totalAmountVisa) >
|
||||
// remainingFee) {
|
||||
|
||||
Reference in New Issue
Block a user