This commit is contained in:
Hamza-Ayed
2024-01-18 00:49:00 +03:00
parent 358bb904ab
commit 7af7e71b30
17 changed files with 1028 additions and 269 deletions

View File

@@ -67,12 +67,12 @@ class MapPassengerController extends GetxController {
late LatLng newPointLocation3 = const LatLng(32.115295, 36.064773);
late LatLng newPointLocation4 = const LatLng(32.115295, 36.064773);
LatLng myDestination = const LatLng(32.115295, 36.064773);
final List<LatLng> polylineCoordinates = [];
final List<LatLng> polylineCoordinates0 = [];
final List<LatLng> polylineCoordinates1 = [];
final List<LatLng> polylineCoordinates2 = [];
final List<LatLng> polylineCoordinates3 = [];
final List<LatLng> polylineCoordinates4 = [];
List<LatLng> polylineCoordinates = [];
List<LatLng> polylineCoordinates0 = [];
List<LatLng> polylineCoordinates1 = [];
List<LatLng> polylineCoordinates2 = [];
List<LatLng> polylineCoordinates3 = [];
List<LatLng> polylineCoordinates4 = [];
List<List<LatLng>> polylineCoordinatesPointsAll = [];
List<LatLng> carsLocationByPassenger = [];
List<LatLng> driverCarsLocationToPassengerAfterApplied = [];
@@ -187,7 +187,8 @@ class MapPassengerController extends GetxController {
late Duration durationToAdd;
late DateTime newTime = DateTime.now();
int hours = 0;
int minutes = 0;
void onChangedPassengerCount(int newValue) {
selectedPassengerCount = newValue;
update();
@@ -573,7 +574,15 @@ class MapPassengerController extends GetxController {
rideTimerBegin.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
.toString(),
durationToRide.toString()
durationToRide.toString(),
Get.find<WayPointController>().wayPoints.length > 1
? 'haveSteps'
: 'startEnd',
placesCoordinate[0],
placesCoordinate[1],
placesCoordinate[2],
placesCoordinate[3],
placesCoordinate[4],
];
FirebaseMessagesController().sendNotificationToDriverMAP(
'Order',
@@ -636,6 +645,14 @@ class MapPassengerController extends GetxController {
cancelRideAfterRejectFromAll();
}
} else if (decod['data'].toString() == 'Cancel') {
remainingTime = 0;
shouldFetch = false;
rideConfirm = false;
FirebaseMessagesController().sendNotificationToDriverMAP(
'Trip Canceled'.tr, '', driverToken, []);
update();
} else {
delayAndFetchRideStatus(
rideId); // Repeat the delay and fetch operation
@@ -807,6 +824,7 @@ class MapPassengerController extends GetxController {
"status": 'Cancel'
});
rideConfirm = false;
totalStepDurations = 0;
shouldFetch = false;
isPassengerChosen = false;
isCashConfirmPageShown = false;
@@ -825,6 +843,7 @@ class MapPassengerController extends GetxController {
if (rideConfirm == false) {
clearPlacesDestination();
clearPolyline();
// clearPolylineAll();
data = [];
changeCancelRidePageShow();
rideConfirm = false;
@@ -834,6 +853,7 @@ class MapPassengerController extends GetxController {
isCashSelectedBeforeConfirmRide = false;
isPickerShown = false;
totalStepDurations = 0;
totalStepDurations = 0;
timeToPassengerFromDriverAfterApplied = 0;
update();
} else {
@@ -852,7 +872,9 @@ class MapPassengerController extends GetxController {
isCashSelectedBeforeConfirmRide = false;
timeToPassengerFromDriverAfterApplied = 0;
totalStepDurations = 0;
totalStepDurations = 0;
changeCancelRidePageShow();
// clearPolylineAll();
remainingTime = 0;
update();
@@ -1073,9 +1095,27 @@ class MapPassengerController extends GetxController {
void clearPolyline() {
polyLines = [];
polylineCoordinates.clear();
// polylineCoordinates = [];
polylineCoordinatesPointsAll[0].clear();
polylineCoordinatesPointsAll[1].clear();
polylineCoordinatesPointsAll[2].clear();
polylineCoordinatesPointsAll[3].clear();
polylineCoordinatesPointsAll[4].clear();
update();
}
// void clearPolylineAll() {
// polylineCoordinatesPointsAll[0].clear();
// polylineCoordinatesPointsAll[1].clear();
// polylineCoordinatesPointsAll[2].clear();
// polylineCoordinatesPointsAll[3].clear();
// polylineCoordinatesPointsAll[4].clear();
// polyLines = [];
// polylineCoordinates.clear();
// update();
// }
void addCustomPicker() {
ImageConfiguration config = const ImageConfiguration(
size: Size(20, 20),
@@ -1111,9 +1151,9 @@ class MapPassengerController extends GetxController {
}
void addCustomCarIcon() {
ImageConfiguration config = ImageConfiguration(
size: Size(Get.width * .6, Get.height * .6),
// size: Size(20, 20),
ImageConfiguration config = const ImageConfiguration(
// size: Size(Get.width * .6, Get.height * .6),
size: Size(20, 20),
// scale: 1.0,
);
BitmapDescriptor.fromAssetImage(config, 'assets/images/car.png')
@@ -1414,19 +1454,23 @@ class MapPassengerController extends GetxController {
int totalStepDurations = 0;
getMapPoints(String origin, String destination, int index) async {
isWayPointStopsSheetUtilGetMap = false;
await getCarsLocationByPassenger();
isLoading = false;
update();
var url =
('${AppLink.googleMapsLink}directions/json?&language=en&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}');
print(url);
// print(url);
var response = await CRUD().getGoogleApi(link: url, payload: {});
data = response['routes'][0]['legs'];
// print(data);
isLoading = false;
int durationToRide0 = data[0]['duration']['value'];
durationToRide = durationToRide + durationToRide0;
print('durationToRide is ${data[0]['duration']['value']}');
print('totalStepDurations is $durationToRide');
update();
durationToRide = durationToRide + int.parse(data[0]['duration']['value']);
// totalStepDurations = totalStepDurations + durationToRide;
final points =
decodePolyline(response["routes"][0]["overview_polyline"]["points"]);
for (int i = 0; i < points.length; i++) {
@@ -1452,20 +1496,20 @@ class MapPassengerController extends GetxController {
// Animate the camera to the adjusted bounds
if (distanceOfDestnation <= 5) {
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 14));
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 15));
} else if (distanceOfDestnation > 5 && distanceOfDestnation <= 8) {
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 13));
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 14));
} else if (distanceOfDestnation > 8 && distanceOfDestnation < 16) {
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 12));
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 13));
} else if (distanceOfDestnation >= 16 && distanceOfDestnation < 30) {
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 11));
} else if (distanceOfDestnation >= 30 && distanceOfDestnation < 100) {
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 10));
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 9));
} else if (distanceOfDestnation >= 100) {
mapController!.animateCamera(CameraUpdate.newLatLngZoom(myLocation, 7));
}
if (polyLines.isNotEmpty) {
clearPolyline();
// clearPolyline();
} else {
var polyline = Polyline(
polylineId: PolylineId(response["routes"][0]["summary"]),
@@ -1540,18 +1584,21 @@ class MapPassengerController extends GetxController {
print('=================================');
distance = getDistanceFromText(distanceText);
duration = getDistanceFromText(durationText);
durationToAdd = Duration(minutes: duration.toInt());
durationToAdd = Duration(seconds: durationToRide);
print('durationToRide----- $durationToRide');
hours = durationToAdd.inHours;
minutes = (durationToAdd.inMinutes % 60).round();
DateTime currentTime = DateTime.now();
newTime = currentTime.add(durationToAdd);
averageDuration = duration / distance;
costDuration = duration * averageDuration * 0.016;
averageDuration = (durationToRide / 60) / distance;
costDuration = (durationToRide / 60) * averageDuration * 0.016;
var totalDriver1 = cost + costDuration;
totalPassenger = totalDriver1 + (totalDriver1 * .16);
totalDriver = totalDriver1 + (totalDriver1 * .16);
tax = totalPassenger * .04;
totalME = totalPassenger - totalDriver - tax;
tax = totalPassenger * .16;
totalME = totalPassenger - tax;
update();
if (currentTime.hour >= 21) {
if (currentTime.hour >= 22) {
if (distanceText.contains('km')) {
cost = distance * 0.23;
update();
@@ -1570,7 +1617,7 @@ class MapPassengerController extends GetxController {
} else if (currentTime.hour >= 13 && currentTime.hour <= 16) {
if (averageDuration > 2.5) {
if (distanceText.contains('km')) {
cost = distance * 0.23;
cost = distance * 0.25;
update();
} else {
cost = distance * 0.25 / 1000;
@@ -1599,8 +1646,8 @@ class MapPassengerController extends GetxController {
totalPassenger = 1;
update();
if (totalDriver < .5) {
totalDriver = .80;
totalME = .16;
totalDriver = .75;
totalME = .21;
update();
} else {
totalDriver = .90;