This commit is contained in:
Hamza-Ayed
2024-02-10 00:27:19 +03:00
parent 835be01923
commit 8c99fc94e2
15 changed files with 158 additions and 127 deletions

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 26 minSdkVersion 26
targetSdkVersion flutter.targetSdkVersion targetSdkVersion flutter.targetSdkVersion
versionCode 17 versionCode 18
versionName '1.4.1' versionName '1.4.2'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml'] // manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
} }

View File

@@ -8,7 +8,7 @@ class BoxName {
static const String agreeTerms = "agreeTerms"; static const String agreeTerms = "agreeTerms";
static const String addWork = 'addWork'; static const String addWork = 'addWork';
static const String addHome = 'addHome'; static const String addHome = 'addHome';
static const String tipAmount = 'tipAmount'; static const String tipPercentage = 'tipPercentage';
static const String accountIdStripeConnect = "accountIdStripeConnect"; static const String accountIdStripeConnect = "accountIdStripeConnect";
static const String faceDetectTimes = "faceDetectTimes"; static const String faceDetectTimes = "faceDetectTimes";
static const String sosPhonePassenger = "sosPhonePassenger"; static const String sosPhonePassenger = "sosPhonePassenger";

View File

@@ -28,7 +28,7 @@ class AppLink {
static String getWalletByDriver = "$walletDriver/getWalletByDriver.php"; static String getWalletByDriver = "$walletDriver/getWalletByDriver.php";
static String getDriversWallet = "$walletDriver/get.php"; static String getDriversWallet = "$walletDriver/get.php";
static String addDriversWallet = "$walletDriver/add.php"; static String addDriversWalletPoints = "$walletDriver/add.php";
static String deleteDriversWallet = "$walletDriver/delete.php"; static String deleteDriversWallet = "$walletDriver/delete.php";
static String updateDriversWallet = "$walletDriver/update.php"; static String updateDriversWallet = "$walletDriver/update.php";

View File

@@ -21,6 +21,7 @@ import '../../views/home/profile/promos_passenger_page.dart';
import '../../views/home/Captin/orderCaptin/order_request_page.dart'; import '../../views/home/Captin/orderCaptin/order_request_page.dart';
import '../home/map_passenger_controller.dart'; import '../home/map_passenger_controller.dart';
import '../home/payment/captain_wallet_controller.dart'; import '../home/payment/captain_wallet_controller.dart';
import '../payment/payment_controller.dart';
class FirebaseMessagesController extends GetxController { class FirebaseMessagesController extends GetxController {
final fcmToken = FirebaseMessaging.instance; final fcmToken = FirebaseMessaging.instance;
@@ -204,6 +205,8 @@ class FirebaseMessagesController extends GetxController {
} else if (message.notification!.title!.contains('Driver Finish Trip')) { } else if (message.notification!.title!.contains('Driver Finish Trip')) {
var myListString = message.data['passengerList']; var myListString = message.data['passengerList'];
var driverList = jsonDecode(myListString) as List<dynamic>; var driverList = jsonDecode(myListString) as List<dynamic>;
if (Get.find<PaymentController>().isCashChecked == false &&
Get.find<PaymentController>().isWalletChecked == true) {
Get.defaultDialog( Get.defaultDialog(
title: 'Driver Finish Trip'.tr, title: 'Driver Finish Trip'.tr,
content: DriverTipWidget(), content: DriverTipWidget(),
@@ -211,7 +214,7 @@ class FirebaseMessagesController extends GetxController {
title: 'Yes'.tr, title: 'Yes'.tr,
onPressed: () async { onPressed: () async {
var tip = (Get.find<MapPassengerController>().totalPassenger) * var tip = (Get.find<MapPassengerController>().totalPassenger) *
(double.parse(box.read(BoxName.tipAmount.toString()))); (double.parse(box.read(BoxName.tipPercentage.toString())));
var res = await CRUD().post(link: AppLink.addTips, payload: { var res = await CRUD().post(link: AppLink.addTips, payload: {
'passengerID': box.read(BoxName.passengerID), 'passengerID': box.read(BoxName.passengerID),
'driverID': driverList[0].toString(), 'driverID': driverList[0].toString(),
@@ -223,9 +226,11 @@ class FirebaseMessagesController extends GetxController {
'balance': ((-1) * tip).toString() 'balance': ((-1) * tip).toString()
}); });
await CRUD().post(link: AppLink.addDriversWallet, payload: { await CRUD()
.post(link: AppLink.addDriversWalletPoints, payload: {
'driverID': driverList[0].toString(), 'driverID': driverList[0].toString(),
'paymentID': '${Get.find<MapPassengerController>().rideId}tip', 'paymentID':
'${Get.find<MapPassengerController>().rideId}tip',
'amount': (tip * 100).toString(), 'amount': (tip * 100).toString(),
'paymentMethod': 'visa-tip', 'paymentMethod': 'visa-tip',
}); });
@@ -237,7 +242,7 @@ class FirebaseMessagesController extends GetxController {
driverList[2].toString(), driverList[2].toString(),
); );
} }
Get.to(() => RateCaptainFromPassenger(), arguments: { Get.to(() => RateDriverFromPassenger(), arguments: {
'driverId': driverList[0].toString(), 'driverId': driverList[0].toString(),
'rideId': driverList[1].toString(), 'rideId': driverList[1].toString(),
}); });
@@ -247,13 +252,19 @@ class FirebaseMessagesController extends GetxController {
cancel: MyElevatedButton( cancel: MyElevatedButton(
title: 'No,I want'.tr, title: 'No,I want'.tr,
onPressed: () { onPressed: () {
Get.to(() => RateCaptainFromPassenger(), arguments: { Get.to(() => RateDriverFromPassenger(), arguments: {
'driverId': driverList[0].toString(), 'driverId': driverList[0].toString(),
'rideId': driverList[1].toString(), 'rideId': driverList[1].toString(),
}); });
}, },
kolor: AppColor.redColor, kolor: AppColor.redColor,
)); ));
} else {
Get.to(() => RateDriverFromPassenger(), arguments: {
'driverId': driverList[0].toString(),
'rideId': driverList[1].toString(),
});
}
} }
} }
@@ -457,10 +468,10 @@ class DriverTipWidget extends StatelessWidget {
children: [ children: [
InkWell( InkWell(
onTap: () { onTap: () {
box.write(BoxName.tipAmount, '0.05'); box.write(BoxName.tipPercentage, '0.05');
Toast.show( Toast.show(
context, context,
'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipAmount.toString())))}', 'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}',
AppColor.blueColor); AppColor.blueColor);
}, },
child: Container( child: Container(
@@ -475,10 +486,10 @@ class DriverTipWidget extends StatelessWidget {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
box.write(BoxName.tipAmount, '0.10'); box.write(BoxName.tipPercentage, '0.10');
Toast.show( Toast.show(
context, context,
'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipAmount.toString())))}', 'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}',
AppColor.blueColor); AppColor.blueColor);
}, },
child: Container( child: Container(
@@ -493,10 +504,10 @@ class DriverTipWidget extends StatelessWidget {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
box.write(BoxName.tipAmount, '0.15'); box.write(BoxName.tipPercentage, '0.15');
Toast.show( Toast.show(
context, context,
'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipAmount.toString())))}', 'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}',
AppColor.blueColor); AppColor.blueColor);
}, },
child: Container( child: Container(
@@ -511,10 +522,10 @@ class DriverTipWidget extends StatelessWidget {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
box.write(BoxName.tipAmount, '0.20'); box.write(BoxName.tipPercentage, '0.20');
Toast.show( Toast.show(
context, context,
'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipAmount.toString())))}', 'Tip is ${(Get.find<MapPassengerController>().totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}',
AppColor.blueColor); AppColor.blueColor);
}, },
child: Container( child: Container(

View File

@@ -16,8 +16,10 @@ import '../../constant/style.dart';
class LogOutController extends GetxController { class LogOutController extends GetxController {
TextEditingController checkTxtController = TextEditingController(); TextEditingController checkTxtController = TextEditingController();
final formKey = GlobalKey<FormState>(); final formKey = GlobalKey<FormState>();
final formKey1 = GlobalKey<FormState>();
final emailTextController = TextEditingController(); final emailTextController = TextEditingController();
Future deleteMyAccount(String id) async {
Future deleteMyAccountDriver(String id) async {
await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then( await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then(
(value) => Get.snackbar('Deleted', 'Your Account is Deleted', (value) => Get.snackbar('Deleted', 'Your Account is Deleted',
backgroundColor: AppColor.redColor)); backgroundColor: AppColor.redColor));
@@ -156,4 +158,18 @@ class LogOutController extends GetxController {
], ],
)); ));
} }
deletePassengerAccount() async {
if (formKey1.currentState!.validate()) {
if (box.read(BoxName.email).toString() == emailTextController.text) {
await CRUD().post(link: AppLink.passengerRemovedAccountEmail, payload: {
'email': box.read(BoxName.email),
});
} else {
Get.snackbar('Email Wrong'.tr, 'Email you inserted is Wrong.'.tr,
snackPosition: SnackPosition.BOTTOM,
backgroundColor: AppColor.redColor);
}
}
}
} }

View File

@@ -265,7 +265,7 @@ class MapDriverController extends GetxController {
rideIsBeginPassengerTimer(); rideIsBeginPassengerTimer();
double pointsSubstraction = 0; double pointsSubstraction = 0;
pointsSubstraction = double.parse(paymentAmount) * -100; pointsSubstraction = double.parse(paymentAmount) * -100;
var res = await CRUD().post(link: AppLink.addDriversWallet, payload: { var res = await CRUD().post(link: AppLink.addDriversWalletPoints, payload: {
'paymentID': 'rideId$rideId', 'paymentID': 'rideId$rideId',
'amount': (pointsSubstraction).toString(), 'amount': (pointsSubstraction).toString(),
'paymentMethod': paymentMethod, 'paymentMethod': paymentMethod,
@@ -563,6 +563,9 @@ class MapDriverController extends GetxController {
update(); update();
} }
late Duration durationToAdd;
int hours = 0;
int minutes = 0;
@override @override
void onInit() async { void onInit() async {
mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY);
@@ -621,6 +624,9 @@ class MapDriverController extends GetxController {
addCustomEndIcon(); addCustomEndIcon();
// updateMarker(); // updateMarker();
startTimerToShowPassengerInfoWindowFromDriver(); startTimerToShowPassengerInfoWindowFromDriver();
durationToAdd = Duration(seconds: int.parse(duration));
hours = durationToAdd.inHours;
minutes = (durationToAdd.inMinutes % 60).round();
// cancelCheckRidefromPassenger(); // cancelCheckRidefromPassenger();
// checkIsDriverNearPassenger(); // checkIsDriverNearPassenger();
super.onInit(); super.onInit();

View File

@@ -520,14 +520,13 @@ class MapPassengerController extends GetxController {
update(); update();
//print('rideTimerBegin: $rideTimerBegin'); //print('rideTimerBegin: $rideTimerBegin');
//print('isRideFinished: $isRideFinished'); //print('isRideFinished: $isRideFinished');
if (Get.find<PaymentController>().isWalletChecked == true &&
Get.find<PaymentController>().isCashChecked == false) {
await CRUD().post(link: AppLink.addPassengersWallet, payload: { await CRUD().post(link: AppLink.addPassengersWallet, payload: {
'passenger_id': box.read(BoxName.passengerID).toString(), 'passenger_id': box.read(BoxName.passengerID).toString(),
'balance': ((-1) * totalPassenger).toString() 'balance': ((-1) * totalPassenger).toString()
}); });
// Get.to(() => RateCaptainFromPassenger(), arguments: { }
// 'driverId': driverId.toString(),
// 'rideId': rideId.toString(),
// });
} }
void getBeginRideFromDriver() async { void getBeginRideFromDriver() async {

View File

@@ -93,7 +93,7 @@ class CaptainWalletController extends GetxController {
} }
Future addDriverWallet(String paymentMethod, point) async { Future addDriverWallet(String paymentMethod, point) async {
await CRUD().post(link: AppLink.addDriversWallet, payload: { await CRUD().post(link: AppLink.addDriversWalletPoints, payload: {
'driverID': box.read(BoxName.driverID).toString(), 'driverID': box.read(BoxName.driverID).toString(),
'paymentID': paymentID.toString(), 'paymentID': paymentID.toString(),
'amount': point, 'amount': point,

View File

@@ -8,8 +8,8 @@ import '../../controller/rate/rate_conroller.dart';
import '../widgets/elevated_btn.dart'; import '../widgets/elevated_btn.dart';
import '../widgets/my_scafold.dart'; import '../widgets/my_scafold.dart';
class RateCaptainFromPassenger extends StatelessWidget { class RateDriverFromPassenger extends StatelessWidget {
RateCaptainFromPassenger({super.key}); RateDriverFromPassenger({super.key});
final RateController controller = Get.put(RateController()); final RateController controller = Get.put(RateController());
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@@ -37,7 +37,9 @@ GetBuilder<MapDriverController> driverEndRideBar() {
children: [ children: [
const Icon(Icons.timelapse), const Icon(Icons.timelapse),
Text( Text(
'${mapDriverController.duration} ${'Minute'.tr}', mapDriverController.hours > 1
? '${'Your Ride Duration is '.tr}${mapDriverController.hours} H and ${mapDriverController.minutes} m'
: '${'Your Ride Duration is '.tr} ${mapDriverController.minutes} m',
style: AppStyle.title), style: AppStyle.title),
], ],
), ),

View File

@@ -108,9 +108,7 @@ class PointsPageForRider extends StatelessWidget {
border: Border.all(), border: Border.all(),
color: color:
AppColor.accentColor.withOpacity(.5)), AppColor.accentColor.withOpacity(.5)),
child: GetBuilder<MapPassengerController>( child: Row(
builder: (mapPassengerController) {
return Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: [ children: [
@@ -122,8 +120,7 @@ class PointsPageForRider extends StatelessWidget {
size: 20, size: 20,
), ),
], ],
); ),
}),
), ),
), ),
trailing: index > 0 trailing: index > 0

View File

@@ -143,8 +143,9 @@ class PassengerWalletDialoge extends StatelessWidget {
onPressed: () { onPressed: () {
if (controller.selectedAmount != 0) { if (controller.selectedAmount != 0) {
controller.makePaymentStripe( controller.makePaymentStripe(
controller.selectedAmount as double, 'USD', controller.selectedAmount!
() { .toDouble(), // Convert int to double
'USD', () {
controller.addPassengerWallet(); controller.addPassengerWallet();
controller.changePromoSheetDialogue(); controller.changePromoSheetDialogue();
controller.getPassengerWallet(); controller.getPassengerWallet();

View File

@@ -63,7 +63,7 @@ class WaletCaptain extends StatelessWidget {
const SizedBox( const SizedBox(
height: 10, height: 10,
), ),
CardSeferWalletDriver(), const CardSeferWalletDriver(),
Card( Card(
elevation: 4, elevation: 4,
child: Padding( child: Padding(

View File

@@ -203,35 +203,26 @@ class PassengerProfilePage extends StatelessWidget {
left: 70, left: 70,
bottom: 10, bottom: 10,
right: 70, right: 70,
child: MyElevatedButton( child: GetBuilder<LogOutController>(builder: (logOutController) {
return MyElevatedButton(
title: 'Delete My Account'.tr, title: 'Delete My Account'.tr,
onPressed: () { onPressed: () {
Get.defaultDialog( Get.defaultDialog(
title: 'Are you sure to delete your account?'.tr, title: 'Are you sure to delete your account?'.tr,
content: GetBuilder<LogOutController>( content: Form(
builder: (logOutController) { key: logOutController.formKey1,
return Form(
child: MyTextForm( child: MyTextForm(
controller: logOutController.emailTextController, controller: logOutController.emailTextController,
label: 'Type your Email'.tr, label: 'Type your Email'.tr,
hint: 'Type your Email'.tr, hint: 'Type your Email'.tr,
type: TextInputType.emailAddress, type: TextInputType.emailAddress,
), ),
); ),
}),
confirm: MyElevatedButton( confirm: MyElevatedButton(
title: 'Delete My Account'.tr, title: 'Delete My Account'.tr,
kolor: AppColor.redColor,
onPressed: () async { onPressed: () async {
if (logOutController.formKey.currentState! await logOutController.deletePassengerAccount();
.validate()) {
LogOutController().deleteMyAccount(
box.read(BoxName.passengerID).toString());
await CRUD().post(
link: AppLink.passengerRemovedAccountEmail,
payload: {
'email': box.read(BoxName.email).text,
});
}
}), }),
cancel: MyElevatedButton( cancel: MyElevatedButton(
title: 'No I want'.tr, title: 'No I want'.tr,
@@ -240,6 +231,7 @@ class PassengerProfilePage extends StatelessWidget {
logOutController.update(); logOutController.update();
Get.back(); Get.back();
})); }));
});
}), }),
) )
], ],

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import '../../constant/colors.dart'; import '../../constant/colors.dart';
@@ -44,11 +45,17 @@ class MyTextForm extends StatelessWidget {
if (value!.isEmpty) { if (value!.isEmpty) {
return 'Please enter $label.'.tr; return 'Please enter $label.'.tr;
} }
if (type == TextInputType.emailAddress) { if (type == TextInputType.emailAddress) {
return 'Please enter Valid email.'.tr; if (!value.contains('@')) {
} else if (type == TextInputType.phone) { return 'Please enter a valid email.'.tr;
return 'Please enter Valid Phone.'.tr;
} }
} else if (type == TextInputType.phone) {
if (value.length != 10) {
return 'Please enter a valid phone number.'.tr;
}
}
return null; return null;
}, },
), ),