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 addDriverOrder = "$ride/driver_order/add.php";
static const String getDriverOrder = "$ride/driver_order/get.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 updateDriverOrder = "$ride/driver_order/update.php";
static const String deleteDriverOrder = "$ride/driver_order/delete.php"; static const String deleteDriverOrder = "$ride/driver_order/delete.php";

View File

@@ -47,8 +47,8 @@ class MapDriverController extends GetxController {
double progress = 0; double progress = 0;
double progressToPassenger = 0; double progressToPassenger = 0;
bool isRideBegin = false; bool isRideBegin = false;
int progressTimerToShowPassengerInfoWindowFromDriver = 25; int progressTimerToShowPassengerInfoWindowFromDriver = 15;
int remainingTimeToShowPassengerInfoWindowFromDriver = 25; int remainingTimeToShowPassengerInfoWindowFromDriver = 15;
int remainingTimeToPassenger = 60; int remainingTimeToPassenger = 60;
bool isDriverNearPassengerStart = false; bool isDriverNearPassengerStart = false;
GoogleMapController? mapController; GoogleMapController? mapController;
@@ -218,6 +218,31 @@ class MapDriverController extends GetxController {
// 'isRideFinished', box.read(BoxName.name).toString(), tokenPassenger); // '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 { void rideIsBeginPassengerTimer() async {
// print('mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'); // print('mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm');
// print(durationOfRideValue); // print(durationOfRideValue);
@@ -353,6 +378,7 @@ class MapDriverController extends GetxController {
addCustomCarIcon(); addCustomCarIcon();
// updateMarker(); // updateMarker();
startTimerToShowPassengerInfoWindowFromDriver(); startTimerToShowPassengerInfoWindowFromDriver();
cancelCheckRidefromPassenger();
// checkIsDriverNearPassenger(); // checkIsDriverNearPassenger();
super.onInit(); super.onInit();
} }

View File

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

View File

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