This commit is contained in:
Hamza-Ayed
2023-11-13 23:55:51 +03:00
parent 8aab58d4aa
commit b384a491cd
5 changed files with 202 additions and 153 deletions

View File

@@ -53,6 +53,8 @@ class AppLink {
static const String addDriverOrder = "$ride/driver_order/add.php";
static const String getDriverOrder = "$ride/driver_order/get.php";
static const String getOrderCancelStatus =
"$ride/driver_order/getOrderCancelStatus.php";
static const String updateDriverOrder = "$ride/driver_order/update.php";
static const String deleteDriverOrder = "$ride/driver_order/delete.php";

View File

@@ -47,8 +47,8 @@ class MapDriverController extends GetxController {
double progress = 0;
double progressToPassenger = 0;
bool isRideBegin = false;
int progressTimerToShowPassengerInfoWindowFromDriver = 25;
int remainingTimeToShowPassengerInfoWindowFromDriver = 25;
int progressTimerToShowPassengerInfoWindowFromDriver = 15;
int remainingTimeToShowPassengerInfoWindowFromDriver = 15;
int remainingTimeToPassenger = 60;
bool isDriverNearPassengerStart = false;
GoogleMapController? mapController;
@@ -218,6 +218,31 @@ class MapDriverController extends GetxController {
// 'isRideFinished', box.read(BoxName.name).toString(), tokenPassenger);
}
void cancelCheckRidefromPassenger() async {
for (int i = 0;
i <= remainingTimeToShowPassengerInfoWindowFromDriver;
i++) {
await Future.delayed(const Duration(milliseconds: 500));
await CRUD().post(link: AppLink.getOrderCancelStatus, payload: {
'order_id': rideId,
}).then((value) {
if (value['status'] == 'Cancel') {
Get.snackbar('Order Cancelled'.tr, 'Order Cancelled by Passenger'.tr,
backgroundColor: AppColor.redColor);
remainingTimeTimerRideBegin = 0;
remainingTimeToShowPassengerInfoWindowFromDriver = 0;
remainingTimeToPassenger = 0;
isRideStarted = false;
isRideFinished = false;
isPassengerInfoWindow = false;
clearPolyline();
update();
}
});
update();
}
}
void rideIsBeginPassengerTimer() async {
// print('mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm');
// print(durationOfRideValue);
@@ -353,6 +378,7 @@ class MapDriverController extends GetxController {
addCustomCarIcon();
// updateMarker();
startTimerToShowPassengerInfoWindowFromDriver();
cancelCheckRidefromPassenger();
// checkIsDriverNearPassenger();
super.onInit();
}

View File

@@ -1,6 +1,5 @@
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:ride/constant/colors.dart';
import 'package:ride/constant/links.dart';
import 'package:ride/constant/style.dart';
import 'package:ride/main.dart';

View File

@@ -7,7 +7,6 @@ import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart';
import 'package:location/location.dart';
import 'package:ride/constant/box_name.dart';
import 'package:ride/constant/colors.dart';
import 'package:ride/constant/credential.dart';
import 'package:ride/constant/links.dart';
import 'package:ride/controller/firebase/firbase_messge.dart';
@@ -74,9 +73,9 @@ class MapPassengerController extends GetxController {
int selectedPassengerCount = 1;
double progress = 0;
double progressTimerToPassengerFromDriverAfterApplied = 0;
int durationTimer = 25;
int durationTimer = 15;
late int durationToRide;
int remainingTime = 25;
int remainingTime = 15;
int remainingTimeToPassengerFromDriverAfterApplied = 60;
int timeToPassengerFromDriverAfterApplied = 0;
Timer? timerToPassengerFromDriverAfterApplied;
@@ -86,6 +85,8 @@ class MapPassengerController extends GetxController {
String stringRemainingTimeRideBegin = '';
late String rideId;
bool noCarString = false;
bool isCashSelectedBeforeConfirmRide = false;
bool isPassengerChosen = false;
late String driverToken;
int carsOrder = 0;
@@ -94,6 +95,11 @@ class MapPassengerController extends GetxController {
update();
}
void onChangedPassengersChoose() {
isPassengerChosen = true;
update();
}
// final mainBottomMenuMap = GlobalKey<AnimatedContainer>();
void changeBottomSheetShown() {
isBottomSheetShown = !isBottomSheetShown;
@@ -103,6 +109,7 @@ class MapPassengerController extends GetxController {
void changeCashConfirmPageShown() {
isCashConfirmPageShown = !isCashConfirmPageShown;
isCashSelectedBeforeConfirmRide = true;
cashConfirmPageShown = isCashConfirmPageShown == true ? 250 : 0;
update();
}
@@ -530,6 +537,8 @@ class MapPassengerController extends GetxController {
changeCancelRidePageShow();
rideConfirm = false;
shouldFetch = false;
isCashSelectedBeforeConfirmRide = false;
isPassengerChosen = false;
timeToPassengerFromDriverAfterApplied = 0;
update();
} else {
@@ -538,19 +547,16 @@ class MapPassengerController extends GetxController {
data = [];
rideConfirm = false;
shouldFetch = false;
isPassengerChosen = false;
isCashSelectedBeforeConfirmRide = false;
timeToPassengerFromDriverAfterApplied = 0;
changeCancelRidePageShow();
remainingTime = 25;
update();
await CRUD().post(link: AppLink.addCancelRideFromPassenger, payload: {
"driverID": FirebaseMessagesController()
.driverID
.toString(), // Convert to String
"passengerID":
box.read(BoxName.passengerID).toString(), // Convert to String
"rideID": rideId.toString(), // Convert to String
"note": cancelNote
await CRUD().post(link: AppLink.updateDriverOrder, payload: {
"order_id": rideId.toString(), // Convert to String
"status": 'Cancel'
});
update();

View File

@@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';
import 'package:ride/constant/info.dart';
import 'package:ride/controller/payment/payment_controller.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
@@ -218,7 +219,7 @@ GetBuilder<MapPassengerController> buttomSheetMapPage() {
.title,
)
: Text(
'Sefer Wallet',
'${AppInformation.appName} Wallet',
style: AppStyle
.title,
),
@@ -329,147 +330,162 @@ GetBuilder<MapPassengerController> buttomSheetMapPage() {
],
),
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
TextButton(
onPressed: () {
Get.defaultDialog(
title: 'How Many Passengers?'.tr,
titleStyle: AppStyle.title,
content: Column(
children: [
Text(
'Allowed up to 4 Passengers.'
.tr,
style: AppStyle.title,
),
SizedBox(
height:
200, // Set the desired height here
child: CupertinoPicker(
itemExtent: 32,
onSelectedItemChanged:
(index) {
controller
.onChangedPassengerCount(
index + 1);
},
children: [
Text('1 Passenger'.tr),
Text('2 Passengers'.tr),
Text('3 Passengers'.tr),
Text('4 Passengers'.tr),
],
SizedBox(
width: Get.width * .95,
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
TextButton(
onPressed: () {
Get.defaultDialog(
barrierDismissible: false,
title:
'How Many Passengers?'.tr,
titleStyle: AppStyle.title,
content: Column(
children: [
Text(
'Allowed up to 4 Passengers.'
.tr,
style: AppStyle.title,
),
),
MyElevatedButton(
title: 'Back',
onPressed: () => Get.back(),
)
],
),
);
},
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text('How Many Passengers?'.tr,
style: AppStyle.title),
const SizedBox(
width: 10,
),
Container(
decoration: BoxDecoration(
border: Border.all()),
child: Padding(
padding:
const EdgeInsets.all(3.0),
child: Text(
controller
.selectedPassengerCount
.toString(),
style: AppStyle.title),
SizedBox(
height:
200, // Set the desired height here
child: CupertinoPicker(
itemExtent: 32,
onSelectedItemChanged:
(index) {
controller
.onChangedPassengerCount(
index + 1);
},
children: [
Text(
'1 Passenger'.tr),
Text('2 Passengers'
.tr),
Text('3 Passengers'
.tr),
Text('4 Passengers'
.tr),
],
),
),
MyElevatedButton(
title: 'Back',
onPressed: () =>
Get.back(),
)
],
),
),
],
);
},
child: Row(
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
children: [
Text('How Many Passengers?'.tr,
style: AppStyle.title),
const SizedBox(
width: 10,
),
Container(
decoration: BoxDecoration(
border: Border.all()),
child: Padding(
padding:
const EdgeInsets.all(
3.0),
child: Text(
controller
.selectedPassengerCount
.toString(),
style: AppStyle.title),
),
),
],
),
),
),
MyElevatedButton(
title: 'Confirm Selection'.tr,
onPressed: () {
controller.changeConfirmRide();
// Get.to(() => UsePaypal(
// sandboxMode: true,
// clientId:
// "AXE7bR3WzFEfAInUA2PBDOsW4zolx11Qr3jVOOjjJ7KGDLY3tnMIhZgyFT5Qkvj1NKWPaE8VZbG4UrZs",
// secretKey:
// "EJPW01FKqOm-SKKP16LQ_2cr3b124aZgmE0vi3JfbkWgLffv2xIjT4iCIfQv8RYn3W8h4DzxgZu_UxZC",
// returnURL:
// "https://samplesite.com/return",
// cancelURL:
// "https://samplesite.com/cancel",
// transactions: const [
// {
// "amount": {
// "total": '10.12',
// "currency": "USD",
// "details": {
// "subtotal": '10.12',
// "shipping": '0',
// "shipping_discount": 0
// }
// },
// "description":
// "The payment transaction description.",
// "payment_options": {
// "allowed_payment_method":
// "INSTANT_FUNDING_SOURCE"
// },
// "item_list": {
// "items": [
// {
// "name":
// "A demo product",
// "quantity": 1,
// "price": '10.12',
// "currency": "USD"
// }
// ],
// // shipping address is not required though
// "shipping_address": {
// "recipient_name":
// "Jane Foster",
// "line1": "Travis County",
// "line2": "",
// "city": "Austin",
// "country_code": "US",
// "postal_code": "73301",
// "phone": "+00000000",
// "state": "Texas"
// },
// }
// }
// ],
// note:
// "Contact us for any questions on your order.",
// onSuccess: (Map params) async {
// print("onSuccess: $params");
// },
// onError: (error) {
// print("onError: $error");
// },
// onCancel: (params) {
// print('cancelled: $params');
// },
// )
// );
},
),
],
controller.isCashSelectedBeforeConfirmRide ==
false
? MyElevatedButton(
title: 'Next'.tr,
onPressed: () {
controller
.changeCashConfirmPageShown();
},
)
: controller.isPassengerChosen ==
false
? MyElevatedButton(
title: 'Next'.tr,
onPressed: () {
controller
.onChangedPassengersChoose();
Get.defaultDialog(
barrierDismissible:
false,
title:
'How Many Passengers?'
.tr,
titleStyle:
AppStyle.title,
content: Column(
children: [
Text(
'Allowed up to 4 Passengers.'
.tr,
style: AppStyle
.title,
),
SizedBox(
height:
200, // Set the desired height here
child:
CupertinoPicker(
itemExtent:
32,
onSelectedItemChanged:
(index) {
controller.onChangedPassengerCount(
index +
1);
},
children: [
Text('1 Passenger'
.tr),
Text('2 Passengers'
.tr),
Text('3 Passengers'
.tr),
Text('4 Passengers'
.tr),
],
),
),
MyElevatedButton(
title: 'Back',
onPressed: () =>
Get.back(),
)
],
),
);
},
)
: MyElevatedButton(
title: 'Confirm Selection'
.tr,
onPressed: () {
controller
.changeConfirmRide();
},
),
],
),
)
],
),