This commit is contained in:
Hamza-Ayed
2024-02-11 00:24:07 +03:00
parent 8c99fc94e2
commit 7c627d5182
6 changed files with 201 additions and 104 deletions

View File

@@ -3,6 +3,7 @@ import 'dart:convert';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart';
@@ -63,7 +64,7 @@ class MapDriverController extends GetxController {
bool isPassengerInfoWindow = false;
bool isBtnRideBegin = false;
bool isArrivedSend = true;
bool isBtnPassengerWait = false;
bool isdriverWaitTimeEnd = false;
bool isRideFinished = false;
bool isRideStarted = false;
double passengerInfoWindow = Get.height * .35;
@@ -211,11 +212,11 @@ class MapDriverController extends GetxController {
progressInPassengerLocationFromDriver = i / (timeWaitingPassenger * 60);
remainingTimeInPassengerLocatioWait = (timeWaitingPassenger * 60) - i;
if (remainingTimeInPassengerLocatioWait == 0) {
isBtnPassengerWait = true;
print(isBtnPassengerWait);
isdriverWaitTimeEnd = true;
print(isdriverWaitTimeEnd);
update();
}
print(isBtnPassengerWait);
print(isdriverWaitTimeEnd);
print(
'remainingTimeInPassengerLocatioWait $remainingTimeInPassengerLocatioWait');
@@ -282,6 +283,48 @@ class MapDriverController extends GetxController {
// 'RideIsBegin', box.read(BoxName.name).toString(), tokenPassenger);
}
addWaittingTimeCostFromPassengerToDriverWallet() async {
double distance2 = Geolocator.distanceBetween(
latLngpassengerLocation.latitude,
latLngpassengerLocation.longitude,
Get.find<LocationController>().myLocation.latitude,
Get.find<LocationController>().myLocation.longitude,
);
if (distance2 > 80) {
Get.defaultDialog(
title: 'Your are far from passenger location'.tr,
middleText:
'go to your passenger location before\nPassenger cancel trip'.tr,
confirm: MyElevatedButton(
title: 'Ok',
onPressed: () {
Get.back();
}));
} else {
double cost =
(distanceBetweenDriverAndPassengerWhenConfirm * .08) + (5 * .06);
var res = await CRUD().post(link: AppLink.addDriverpayment, payload: {
'rideId': rideId,
'amount': cost.toString(),
'payment_method': 'wait-cancel',
'passengerID': passengerId,
'driverID': box.read(BoxName.driverID).toString(),
});
if (res != 'failure') {
Get.snackbar(
'You will get cost of your work for this trip'.tr,
'you gain $cost \$ in your wallet',
backgroundColor: AppColor.deepPurpleAccent,
);
}
await CRUD().post(link: AppLink.addPassengersWallet, payload: {
'passenger_id': passengerId,
'balance': (cost * -1).toString()
});
Get.offAll(HomeCaptain());
}
}
void finishRideFromDriver() async {
isRideFinished = true;
isRideStarted = false;
@@ -436,6 +479,7 @@ class MapDriverController extends GetxController {
});
}
double distanceBetweenDriverAndPassengerWhenConfirm = 0;
getMap(String origin, destination) async {
isLoading = false;
@@ -447,6 +491,8 @@ class MapDriverController extends GetxController {
var response = await CRUD().getGoogleApi(link: url, payload: {});
data = response['routes'][0]['legs'];
print(data);
distanceBetweenDriverAndPassengerWhenConfirm =
(data[0]['distance']['value']) / 1000;
final points =
decodePolyline(response["routes"][0]["overview_polyline"]["points"]);
for (int i = 0; i < points.length; i++) {

View File

@@ -650,6 +650,7 @@ class MapPassengerController extends GetxController {
late String licensePlate;
changeConfirmRide() async {
await getCarsLocationByPassenger();
await getNearestDriverByPassengerLocation();
if (dataCarsLocationByPassenger != 'failure') {
driverToken =
@@ -1423,7 +1424,7 @@ class MapPassengerController extends GetxController {
String distanceByPassenger = '';
late Duration durationFromDriverToPassenger;
void getNearestDriverByPassengerLocation() async {
getNearestDriverByPassengerLocation() async {
if (polyLines.isEmpty || data.isEmpty) {
if (rideConfirm == false) {
double nearestDistance = double.infinity;
@@ -1493,7 +1494,7 @@ class MapPassengerController extends GetxController {
}
calculateDistanceBetweenPassengerAndDriverBeforecancelRide() async {
// await getDriverCarsLocationToPassengerAfterApplied();
await getDriverCarsLocationToPassengerAfterApplied();
double distance = Geolocator.distanceBetween(
passengerLocation.latitude,
passengerLocation.longitude,