diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart index 7cc9928..3e83700 100644 --- a/lib/controller/home/captin/map_driver_controller.dart +++ b/lib/controller/home/captin/map_driver_controller.dart @@ -326,9 +326,9 @@ update ui for totla results */ } - void startRideFromDriver() async { + startRideFromDriver() async { double _distance = - await calculateDistanseBetweenDriverAndPassengerLocation(); + await calculateDistanceBetweenDriverAndPassengerLocation(); if (_distance < 50) { changeRideToBeginToPassenger(); @@ -340,6 +340,11 @@ update ui for totla results box.write(BoxName.statusDriverLocation, 'on'); update(); + await CRUD().post(link: AppLink.updateRides, payload: { + 'id': rideId, + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Begin', + }); await CRUD().post(link: AppLink.addDriverpayment, payload: { 'rideId': rideId, 'amount': paymentAmount, @@ -348,16 +353,14 @@ update ui for totla results 'driverID': box.read(BoxName.driverID).toString(), }); - await CRUD().post(link: AppLink.updateRides, payload: { - 'id': rideId, - 'rideTimeStart': DateTime.now().toString(), - 'status': 'Begin', - }); FirebaseMessagesController().sendNotificationToAnyWithoutData( 'RideIsBegin', box.read(BoxName.name).toString(), tokenPassenger); rideIsBeginPassengerTimer(); double pointsSubstraction = 0; - pointsSubstraction = double.parse(paymentAmount) * -17; + pointsSubstraction = double.parse(paymentAmount) * + (-1) * + double.parse(kazan) / + 100; // for eygpt /100 var res = await CRUD().post(link: AppLink.addDriversWalletPoints, payload: { 'paymentID': 'rideId$rideId', @@ -385,7 +388,7 @@ update ui for totla results } } - calcualateDistsanceInMetet(LatLng prev, LatLng current) async { + calculateDistanceInMeter(LatLng prev, LatLng current) async { double distance2 = Geolocator.distanceBetween( prev.latitude, prev.longitude, @@ -408,7 +411,7 @@ update ui for totla results latestPosition = position as LatLng?; // Update latest position // Calculate distance using the latest position - double distance = calcualateDistsanceInMetet( + double distance = calculateDistanceInMeter( currentPosition as LatLng, latestPosition!); speedoMeter = distance + speedoMeter; print('distance is $distance'); @@ -441,7 +444,7 @@ update ui for totla results updateLocation(); } - calculateDistanseBetweenDriverAndPassengerLocation() { + calculateDistanceBetweenDriverAndPassengerLocation() { double distance2 = Geolocator.distanceBetween( latLngpassengerLocation.latitude, latLngpassengerLocation.longitude, @@ -451,8 +454,8 @@ update ui for totla results return distance2; } - addWaittingTimeCostFromPassengerToDriverWallet() async { - double distance2 = calculateDistanseBetweenDriverAndPassengerLocation(); + addWaitingTimeCostFromPassengerToDriverWallet() async { + double distance2 = calculateDistanceBetweenDriverAndPassengerLocation(); if (distance2 > 40) { Get.defaultDialog( @@ -465,11 +468,12 @@ update ui for totla results Get.back(); })); } else { - double cost = - (distanceBetweenDriverAndPassengerWhenConfirm * .08) + (5 * .06); + double costOfWaiting5Minute = + (distanceBetweenDriverAndPassengerWhenConfirm * .08) + + (5 * 1); //for Eygpt other like jordan .06 per minute var res = await CRUD().post(link: AppLink.addDriverpayment, payload: { 'rideId': rideId, - 'amount': cost.toString(), + 'amount': costOfWaiting5Minute.toString(), 'payment_method': 'wait-cancel', 'passengerID': passengerId, 'driverID': box.read(BoxName.driverID).toString(), @@ -477,13 +481,13 @@ update ui for totla results if (res != 'failure') { Get.snackbar( 'You will get cost of your work for this trip'.tr, - '${'you gain'.tr} $cost \$${' in your wallet'.tr}', + '${'you gain'.tr} $costOfWaiting5Minute \$${' in your wallet'.tr}', backgroundColor: AppColor.deepPurpleAccent, ); } await CRUD().post(link: AppLink.addPassengersWallet, payload: { 'passenger_id': passengerId, - 'balance': (cost * -1).toString() + 'balance': (costOfWaiting5Minute * -1).toString() }); box.write(BoxName.statusDriverLocation, 'off'); Get.offAll(HomeCaptain()); @@ -501,7 +505,7 @@ update ui for totla results isRideFinished = true; isRideStarted = false; isPriceWindow = false; - if (cartype == 'Comfort' || cartype == 'Free Ride') { + if (carType == 'Comfort' || carType == 'Free Ride') { totalCost = price.toStringAsFixed(2); paymentAmount = totalCost; // update(); @@ -602,15 +606,15 @@ update ui for totla results await Future.delayed(const Duration(seconds: 1)); recentDistanceToDash = Get.find().totalDistance; rideTimerFromBegin = i; - price = cartype == 'Comfort' || cartype == 'Free Ride' + price = carType == 'Comfort' || carType == 'Free Ride' ? (i ~/ 60) + (recentDistanceToDash * Get.find().comfortPrice) - : cartype == 'Speed' + : carType == 'Speed' ? (i ~/ 60) + (recentDistanceToDash * Get.find().speedPrice) - : cartype == 'Delivery' + : carType == 'Delivery' ? (i ~/ 60) + (recentDistanceToDash * Get.find().deliveryPrice) @@ -877,7 +881,8 @@ LIMIT late Duration durationToAdd; int hours = 0; int minutes = 0; - late String cartype; + late String carType; + late String kazan; @override void onInit() async { mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); @@ -909,7 +914,8 @@ LIMIT step4 = Get.arguments['step4']; passengerWalletBurc = Get.arguments['passengerWalletBurc']; timeOfOrder = Get.arguments['timeOfOrder']; - cartype = Get.arguments['carType']; + carType = Get.arguments['carType']; + kazan = Get.arguments['kazan']; var coords = passengerLocation.split(','); var coordDestination = passengerDestination.split(','); diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 6da419e..c5e78c5 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -47,9 +47,9 @@ class MapPassengerController extends GetxController { List bounds = []; List placesStart = []; List driversToken = []; - LatLng previousLocationOfDrivers = LatLng(0, 0); + LatLng previousLocationOfDrivers = const LatLng(0, 0); double angleDegrees = 0; - LatLng currentLocationOfDrivers = LatLng(0, 0); + LatLng currentLocationOfDrivers = const LatLng(0, 0); List allTextEditingPlaces = []; List placesDestination = []; List wayPoint0 = []; @@ -598,7 +598,6 @@ class MapPassengerController extends GetxController { rideTimerBegin = false; isRideFinished = true; update(); - } void tripFinishedFromDriver() async { @@ -670,7 +669,8 @@ class MapPassengerController extends GetxController { remainingTime = 0; // isCancelRidePageShown = true; update(); - rideIsBeginPassengerTimer();runWhenRideIsBegin(); + rideIsBeginPassengerTimer(); + runWhenRideIsBegin(); } void cancelTimerToPassengerFromDriverAfterApplied() { @@ -832,6 +832,7 @@ class MapPassengerController extends GetxController { startNameAddress, endNameAddress, box.read(BoxName.carType), + kazan.toStringAsFixed(0), ]; print(body); FirebaseMessagesController().sendNotificationToDriverMapPolyline( @@ -908,6 +909,7 @@ class MapPassengerController extends GetxController { startNameAddress, endNameAddress, box.read(BoxName.carType), + kazan.toStringAsFixed(0), ]; print('driversToken'); print(driversToken); @@ -1133,7 +1135,7 @@ class MapPassengerController extends GetxController { } } - LatLng driverLocationToPassenger = LatLng(32, 35); + LatLng driverLocationToPassenger = const LatLng(32, 35); Future getDriverCarsLocationToPassengerAfterApplied() async { driverCarsLocationToPassengerAfterApplied = []; @@ -1187,8 +1189,8 @@ class MapPassengerController extends GetxController { void clearMarkersExceptStartEnd() { Set markersToRemove = markers .where((marker) => - marker.markerId != MarkerId("start") && - marker.markerId != MarkerId("end")) + marker.markerId != const MarkerId("start") && + marker.markerId != const MarkerId("end")) .toSet(); for (Marker marker in markersToRemove) { @@ -1201,10 +1203,10 @@ class MapPassengerController extends GetxController { clearMarkersExceptStartEnd(); // for (var i = 0; i < driverCarsLocationToPassengerAfterApplied.length; i++) { LatLng driverPosition = LatLng( - double.parse( - datadriverCarsLocationToPassengerAfterApplied[0]['latitude']), - double.parse( - datadriverCarsLocationToPassengerAfterApplied[0]['longitude'])); + double.parse(datadriverCarsLocationToPassengerAfterApplied['message'][0] + ['latitude']), + double.parse(datadriverCarsLocationToPassengerAfterApplied['message'][0] + ['longitude'])); final driverAcceptedMarker = Marker( markerId: const MarkerId('driverToPassengers'), position: driverPosition, @@ -1921,14 +1923,14 @@ class MapPassengerController extends GetxController { data[0]["start_location"]['lat'], data[0]["start_location"]['lng']); markers.add( Marker( - markerId: MarkerId('start'), + markerId: const MarkerId('start'), position: newStartPointLocation, icon: startIcon, ), ); markers.add( Marker( - markerId: MarkerId('end'), + markerId: const MarkerId('end'), position: LatLng( data[0]["end_location"]['lat'], data[0]["end_location"]['lng']), icon: endIcon, diff --git a/lib/views/Rate/rate_passenger.dart b/lib/views/Rate/rate_passenger.dart index 9e12a73..df0f5ec 100644 --- a/lib/views/Rate/rate_passenger.dart +++ b/lib/views/Rate/rate_passenger.dart @@ -48,10 +48,10 @@ class RatePassenger extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(4), child: Text( - Get.find().cartype == + Get.find().carType == 'Comfort' || Get.find() - .cartype == + .carType == 'Free Ride' ? Get.find() .price diff --git a/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart b/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart index d804223..1ed12fe 100644 --- a/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart +++ b/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart @@ -65,7 +65,7 @@ GetBuilder driverEndRideBar() { 'Price is ${mapDriverController.price.toStringAsFixed(0)}') ], ), - mapDriverController.cartype == 'Free Ride' + mapDriverController.carType == 'Free Ride' ? Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -80,7 +80,7 @@ GetBuilder driverEndRideBar() { ) : const SizedBox(), mapDriverController.remainingTimeTimerRideBegin < 60 && - mapDriverController.cartype != 'Free Ride' + mapDriverController.carType != 'Free Ride' ? Row( mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/views/home/Captin/mapDriverWidgets/passenger_info_window.dart b/lib/views/home/Captin/mapDriverWidgets/passenger_info_window.dart index 6047748..b94011e 100644 --- a/lib/views/home/Captin/mapDriverWidgets/passenger_info_window.dart +++ b/lib/views/home/Captin/mapDriverWidgets/passenger_info_window.dart @@ -219,8 +219,8 @@ class PassengerInfoWindow extends StatelessWidget { .tr, confirm: MyElevatedButton( title: 'OK'.tr, - onPressed: () { - controller + onPressed: () async { + await controller .startRideFromDriver(); Get.back(); }), @@ -238,7 +238,7 @@ class PassengerInfoWindow extends StatelessWidget { kolor: AppColor.yellowColor, onPressed: () async { if (controller - .calculateDistanseBetweenDriverAndPassengerLocation() < + .calculateDistanceBetweenDriverAndPassengerLocation() < 40) { FirebaseMessagesController() .sendNotificationToPassengerToken( @@ -334,7 +334,7 @@ class PassengerInfoWindow extends StatelessWidget { .tokenPassenger, []); await controller - .addWaittingTimeCostFromPassengerToDriverWallet(); + .addWaitingTimeCostFromPassengerToDriverWallet(); controller .isdriverWaitTimeEnd = false; diff --git a/lib/views/home/Captin/orderCaptin/order_request_page.dart b/lib/views/home/Captin/orderCaptin/order_request_page.dart index 398dd3b..ea9fbd1 100644 --- a/lib/views/home/Captin/orderCaptin/order_request_page.dart +++ b/lib/views/home/Captin/orderCaptin/order_request_page.dart @@ -351,7 +351,8 @@ class OrderRequestPage extends StatelessWidget { 'passengerWalletBurc': myList[26].toString(), 'timeOfOrder': DateTime.now().toString(), 'totalPassenger': myList[2].toString(), - 'carType':myList[31].toString(), + 'carType': myList[31].toString(), + 'kazan': myList[32].toString(), }); }, ), diff --git a/lib/views/home/Captin/orderCaptin/order_speed_request.dart b/lib/views/home/Captin/orderCaptin/order_speed_request.dart index 87ef710..570e0b0 100644 --- a/lib/views/home/Captin/orderCaptin/order_speed_request.dart +++ b/lib/views/home/Captin/orderCaptin/order_speed_request.dart @@ -306,9 +306,9 @@ class OrderSpeedRequest extends StatelessWidget { 'driver_id': box.read(BoxName.driverID), }); // .then((value) { - var json = jsonDecode(res); - print('res $json'); - if (json['status'] == "failure") { + // var json = jsonDecode(res); + print('res $res'); + if (res == "failure") { Get.defaultDialog( title: "This ride is already taken by another driver." @@ -318,7 +318,7 @@ class OrderSpeedRequest extends StatelessWidget { middleTextStyle: AppStyle.title, confirm: MyElevatedButton( title: 'Ok'.tr, onPressed: () => Get.back())); - } else if (json['status'] == "success") { + } else if (jsonDecode(res)['status'] == "success") { List bodyToPassenger = [ box.read(BoxName.driverID).toString(), box.read(BoxName.nameDriver).toString(), @@ -374,6 +374,7 @@ class OrderSpeedRequest extends StatelessWidget { 'timeOfOrder': DateTime.now().toString(), 'totalPassenger': myList[2].toString(), 'carType': myList[31].toString(), + 'kazan': myList[32].toString(), }); } // }); diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart index 3b1597f..7bd4f4a 100644 --- a/lib/views/home/map_widget.dart/apply_order_widget.dart +++ b/lib/views/home/map_widget.dart/apply_order_widget.dart @@ -199,7 +199,7 @@ class DriverArrivePassengerAndWaitMinute extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - 'The driver waitting you in picked location .'.tr, + 'The driver waiting you in picked location .'.tr, style: AppStyle.title, textAlign: TextAlign.center, ), @@ -251,9 +251,19 @@ class TimeDriverToPassenger extends StatelessWidget { : AppColor.greenColor, minHeight: 25, borderRadius: BorderRadius.circular(15), - value: controller - .progressTimerToPassengerFromDriverAfterApplied - .toDouble(), + value: () { + // Ensure valid value between 0.0 and 1.0 + double progress = controller + .progressTimerToPassengerFromDriverAfterApplied + .toDouble(); + if (progress.isNaN || progress.isInfinite) { + // Handle invalid progress (e.g., set to 0.0) + return 0.0; + } else { + return progress.clamp( + 0.0, 1.0); // Clamp to valid range + } + }(), ), Center( child: Row(