10/10/1
This commit is contained in:
@@ -8,8 +8,8 @@ import 'package:ride/constant/colors.dart';
|
||||
import 'package:ride/constant/style.dart';
|
||||
import 'package:ride/controller/functions/crud.dart';
|
||||
import 'package:ride/controller/functions/launch.dart';
|
||||
import 'package:ride/controller/home/captin/map_dirction.dart';
|
||||
import 'package:ride/controller/home/map_page_controller.dart';
|
||||
import 'package:ride/controller/home/captin/map_driver_controller.dart';
|
||||
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||
|
||||
@@ -27,13 +27,6 @@ class FirebaseMessagesController extends GetxController {
|
||||
late String driverID;
|
||||
late String driverToken;
|
||||
NotificationSettings? notificationSettings;
|
||||
@override
|
||||
void onInit() async {
|
||||
super.onInit();
|
||||
// getNotificationSettings();
|
||||
// getToken();
|
||||
// await getTokens();
|
||||
}
|
||||
|
||||
Future<void> getNotificationSettings() async {
|
||||
// Get the current notification settings
|
||||
@@ -187,15 +180,22 @@ class FirebaseMessagesController extends GetxController {
|
||||
);
|
||||
} else if (message.notification!.title!.contains('Promo')) {
|
||||
Get.to(const PromosPassengerPage());
|
||||
} else if (message.notification!.title!
|
||||
.contains('DriverIsGoingToPassenger')) {
|
||||
Get.snackbar('Driver is Going To Passenger', '',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
} else if (message.notification!.title!.contains('RideIsBegin')) {
|
||||
// MapDirection mapDirection = Get.find<MapDirection>();
|
||||
// mapDirection.clearPolyline();
|
||||
print('jjjjjjjjjjjjjjjjjjjjjjjjjjj');
|
||||
Get.defaultDialog(
|
||||
title: 'The Ride is Begin'.tr,
|
||||
backgroundColor: AppColor.greenColor,
|
||||
);
|
||||
MapDirection().clearPolyline();
|
||||
// MapPassengerController mapController = Get.put(MapPassengerController());
|
||||
Get.snackbar('RideIsBegin', '', backgroundColor: AppColor.greenColor);
|
||||
// mapController.driverArrivePassenger();
|
||||
update();
|
||||
} else if (message.notification!.title!.contains('isRideFinished')) {
|
||||
MapPassengerController mapController =
|
||||
Get.find<MapPassengerController>();
|
||||
Get.snackbar('Ride Finished'.tr, '',
|
||||
backgroundColor: AppColor.greenColor);
|
||||
mapController.isRideFinished = true;
|
||||
update();
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -305,7 +305,8 @@ class FirebaseMessagesController extends GetxController {
|
||||
var passengerList = message.data['passengerList'];
|
||||
print(passengerList);
|
||||
print('9999999999999my Apply Ride 999999999999999');
|
||||
MapController mapController = Get.find<MapController>();
|
||||
MapPassengerController mapController =
|
||||
Get.find<MapPassengerController>();
|
||||
mapController.rideConfirm = false;
|
||||
update();
|
||||
print('-----------------------------rideConfirm===' +
|
||||
@@ -382,7 +383,7 @@ class FirebaseMessagesController extends GetxController {
|
||||
title: 'The Ride is Begin'.tr,
|
||||
backgroundColor: AppColor.greenColor,
|
||||
);
|
||||
MapDirection().clearPolyline();
|
||||
MapDriverController().clearPolyline();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import '../../../constant/credential.dart';
|
||||
import '../../../constant/links.dart';
|
||||
import '../../functions/crud.dart';
|
||||
|
||||
class MapDirection extends GetxController {
|
||||
class MapDriverController extends GetxController {
|
||||
bool isLoading = true;
|
||||
List data = [];
|
||||
LatLngBounds? boundsData;
|
||||
@@ -34,6 +34,7 @@ class MapDirection extends GetxController {
|
||||
late String direction;
|
||||
bool isPassengerInfoWindow = false;
|
||||
bool isBtnRideBegin = false;
|
||||
bool isRideFinished = false;
|
||||
double passengerInfoWindow = Get.height * .32;
|
||||
double progress = 0;
|
||||
double progressToPassenger = 0;
|
||||
@@ -93,7 +94,7 @@ class MapDirection extends GetxController {
|
||||
update();
|
||||
}
|
||||
|
||||
void changeRideToBegin() {
|
||||
void changeRideToBeginToPassenger() {
|
||||
isRideBegin = true;
|
||||
passengerInfoWindow = Get.height * .22;
|
||||
update();
|
||||
@@ -119,6 +120,7 @@ class MapDirection extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
String stringRemainingTimeToPassenger = '';
|
||||
void startTimerToShowDriverToPassengerDuration() async {
|
||||
for (int i = 0; i <= int.parse(durationToPassenger); i++) {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
@@ -131,19 +133,52 @@ class MapDirection extends GetxController {
|
||||
}
|
||||
print(isBtnRideBegin);
|
||||
print(remainingTimeToPassenger);
|
||||
|
||||
int minutes = (remainingTimeToPassenger / 60).floor();
|
||||
int seconds = remainingTimeToPassenger % 60;
|
||||
stringRemainingTimeToPassenger =
|
||||
'$minutes:${seconds.toString().padLeft(2, '0')}';
|
||||
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
beginRideFromDriver() async {
|
||||
changeRideToBegin();
|
||||
void driverGoToPassenger() async {
|
||||
changeRideToBeginToPassenger();
|
||||
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||
'id': rideId,
|
||||
'driverGoToPassengerTime': DateTime.now().toString(),
|
||||
'status': 'Applied'
|
||||
});
|
||||
FirebaseMessagesController().sendNotificationToAnyWithoutData(
|
||||
'DriverIsGoingToPassenger',
|
||||
box.read(BoxName.name).toString(),
|
||||
tokenPassenger);
|
||||
}
|
||||
|
||||
void beginRideFromDriver() async {
|
||||
changeRideToBeginToPassenger();
|
||||
isPassengerInfoWindow = false;
|
||||
isRideFinished = true;
|
||||
update();
|
||||
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||
'id': rideId,
|
||||
'rideTimeStart': DateTime.now().toString(),
|
||||
'status': 'Applied'
|
||||
'status': 'Begin'
|
||||
});
|
||||
FirebaseMessagesController().sendNotificationToAnyWithoutData('RideIsBegin',
|
||||
box.read(BoxName.tokenDriver).toString(), tokenPassenger);
|
||||
// FirebaseMessagesController().sendNotificationToAnyWithoutData(
|
||||
// 'RideIsBegin', box.read(BoxName.name).toString(), tokenPassenger);
|
||||
}
|
||||
|
||||
void finishRideFromDriver() async {
|
||||
// changeRideToBeginToPassenger();
|
||||
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||
'id': rideId,
|
||||
'rideTimeStart': DateTime.now().toString(),
|
||||
'status': 'Finished'
|
||||
});
|
||||
FirebaseMessagesController().sendNotificationToAnyWithoutData(
|
||||
'isRideFinished', box.read(BoxName.name).toString(), tokenPassenger);
|
||||
}
|
||||
|
||||
void updateMarker() {
|
||||
@@ -9,6 +9,7 @@ import 'package:location/location.dart';
|
||||
import 'package:ride/constant/box_name.dart';
|
||||
import 'package:ride/constant/credential.dart';
|
||||
import 'package:ride/constant/links.dart';
|
||||
import 'package:ride/constant/style.dart';
|
||||
import 'package:ride/controller/firebase/firbase_messge.dart';
|
||||
import 'package:ride/controller/functions/crud.dart';
|
||||
import 'package:ride/controller/functions/secure_storage.dart';
|
||||
@@ -17,7 +18,7 @@ import 'package:ride/views/widgets/elevated_btn.dart';
|
||||
import '../../main.dart';
|
||||
import '../../models/model/locations.dart';
|
||||
|
||||
class MapController extends GetxController {
|
||||
class MapPassengerController extends GetxController {
|
||||
bool isLoading = true;
|
||||
TextEditingController placeController = TextEditingController();
|
||||
List data = [];
|
||||
@@ -50,7 +51,7 @@ class MapController extends GetxController {
|
||||
bool isCancelRidePageShown = false;
|
||||
bool isCashConfirmPageShown = false;
|
||||
bool isPaymentMethodPageShown = false;
|
||||
|
||||
bool isRideFinished = false;
|
||||
bool rideConfirm = false;
|
||||
bool isMainBottomMenuMap = true;
|
||||
double heightBottomSheetShown = 0;
|
||||
@@ -70,10 +71,16 @@ class MapController extends GetxController {
|
||||
double progress = 0;
|
||||
double progressTimerToPassengerFromDriverAfterApplied = 0;
|
||||
int durationTimer = 25;
|
||||
late int durationToRide;
|
||||
int remainingTime = 25;
|
||||
int remainingTimeToPassengerFromDriverAfterApplied = 60;
|
||||
int timeToPassengerFromDriverAfterApplied = 0;
|
||||
Timer? timerToPassengerFromDriverAfterApplied;
|
||||
bool rideTimerBegin = false;
|
||||
late double progressTimerRideBegin;
|
||||
int remainingTimeTimerRideBegin = 60;
|
||||
late String stringRemainingTimeRideBegin;
|
||||
|
||||
void onChangedPassengerCount(int newValue) {
|
||||
selectedPassengerCount = newValue;
|
||||
update();
|
||||
@@ -125,6 +132,8 @@ class MapController extends GetxController {
|
||||
update();
|
||||
}
|
||||
|
||||
String stringRemainingTimeToPassenger = '';
|
||||
|
||||
void startTimerToPassengerFromDriverAfterApplied() async {
|
||||
for (int i = 0; i <= timeToPassengerFromDriverAfterApplied; i++) {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
@@ -132,16 +141,81 @@ class MapController extends GetxController {
|
||||
i / timeToPassengerFromDriverAfterApplied;
|
||||
remainingTimeToPassengerFromDriverAfterApplied =
|
||||
timeToPassengerFromDriverAfterApplied - i;
|
||||
update();
|
||||
if (remainingTimeToPassengerFromDriverAfterApplied == 0) {
|
||||
driverArrivePassenger();
|
||||
|
||||
if (remainingTimeToPassengerFromDriverAfterApplied < 69) {
|
||||
if (rideTimerBegin == false) {
|
||||
getBeginRideFromDriver();
|
||||
}
|
||||
}
|
||||
|
||||
int minutes =
|
||||
(remainingTimeToPassengerFromDriverAfterApplied / 60).floor();
|
||||
int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60;
|
||||
stringRemainingTimeToPassenger =
|
||||
'$minutes:${seconds.toString().padLeft(2, '0')}';
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void rideIsBeginPassengerTimer() async {
|
||||
for (int i = 0; i <= durationToRide; i++) {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
progressTimerRideBegin = i / durationToRide;
|
||||
remainingTimeTimerRideBegin = durationToRide - i;
|
||||
|
||||
int minutes = (remainingTimeTimerRideBegin / 60).floor();
|
||||
int seconds = remainingTimeTimerRideBegin % 60;
|
||||
stringRemainingTimeRideBegin =
|
||||
'$minutes:${seconds.toString().padLeft(2, '0')}';
|
||||
update();
|
||||
}
|
||||
|
||||
rideTimerBegin = false;
|
||||
isRideFinished = true;
|
||||
update();
|
||||
print('rideTimerBegin: $rideTimerBegin');
|
||||
print('isRideFinished: $isRideFinished');
|
||||
|
||||
Get.defaultDialog(
|
||||
title: 'Ride Is Finished.'.tr,
|
||||
titleStyle: AppStyle.title,
|
||||
content: Text(
|
||||
'Rate the Captain Please?'.tr,
|
||||
style: AppStyle.title,
|
||||
),
|
||||
confirm: MyElevatedButton(
|
||||
title: 'Ok'.tr,
|
||||
onPressed: () {
|
||||
Get.back(); //todo make Rate page
|
||||
},
|
||||
),
|
||||
barrierDismissible: false,
|
||||
);
|
||||
}
|
||||
|
||||
void getBeginRideFromDriver() async {
|
||||
var res = await CRUD()
|
||||
.get(link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId});
|
||||
var decode = jsonDecode(res);
|
||||
|
||||
if (decode['data']['status'] == 'Begin') {
|
||||
timeToPassengerFromDriverAfterApplied = 0;
|
||||
remainingTime = 0;
|
||||
remainingTimeToPassengerFromDriverAfterApplied = 0;
|
||||
// isCancelRidePageShown = true;
|
||||
rideIsBeginPassengerTimer();
|
||||
// print('rideTimerBegin: $rideTimerBegin');
|
||||
rideTimerBegin = true;
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void driverArrivePassenger() {
|
||||
timeToPassengerFromDriverAfterApplied = 0;
|
||||
remainingTime = 0;
|
||||
// isCancelRidePageShown = true;
|
||||
update();
|
||||
rideIsBeginPassengerTimer();
|
||||
}
|
||||
|
||||
void cancelTimerToPassengerFromDriverAfterApplied() {
|
||||
@@ -161,7 +235,7 @@ class MapController extends GetxController {
|
||||
update();
|
||||
}
|
||||
|
||||
var rideId;
|
||||
late String rideId;
|
||||
late String driverToken;
|
||||
int carsOrder = 0;
|
||||
changeConfirmRide() async {
|
||||
@@ -214,6 +288,7 @@ class MapController extends GetxController {
|
||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
||||
duration1.toString(),
|
||||
rideId,
|
||||
rideTimerBegin.toString(),
|
||||
];
|
||||
FirebaseMessagesController().sendNotificationToDriverMAP(
|
||||
'Order',
|
||||
@@ -297,43 +372,48 @@ class MapController extends GetxController {
|
||||
}
|
||||
|
||||
Future getCarsLocationByPassenger() async {
|
||||
carsLocationByPassenger = [];
|
||||
LatLngBounds bounds =
|
||||
calculateBounds(myLocation.latitude, myLocation.longitude, 8000);
|
||||
print(
|
||||
'Southwest: ${bounds.southwest.latitude}, ${bounds.southwest.longitude}');
|
||||
print(
|
||||
'Northeast: ${bounds.northeast.latitude}, ${bounds.northeast.longitude}');
|
||||
if (rideConfirm == false) {
|
||||
carsLocationByPassenger = [];
|
||||
LatLngBounds bounds =
|
||||
calculateBounds(myLocation.latitude, myLocation.longitude, 8000);
|
||||
print(
|
||||
'Southwest: ${bounds.southwest.latitude}, ${bounds.southwest.longitude}');
|
||||
print(
|
||||
'Northeast: ${bounds.northeast.latitude}, ${bounds.northeast.longitude}');
|
||||
|
||||
var res =
|
||||
await CRUD().get(link: AppLink.getCarsLocationByPassenger, payload: {
|
||||
'southwestLat': southwest.latitude.toString(),
|
||||
'southwestLon': southwest.longitude.toString(),
|
||||
'northeastLat': northeast.latitude.toString(),
|
||||
'northeastLon': northeast.longitude.toString(),
|
||||
});
|
||||
if (res == 'failure') {
|
||||
Get.defaultDialog(
|
||||
title: 'No Car in your site.Sorry!',
|
||||
middleText: '',
|
||||
confirm: MyElevatedButton(
|
||||
title: 'Back',
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
markerReloadingTimer.cancel();
|
||||
}));
|
||||
} else {
|
||||
dataCarsLocationByPassenger = jsonDecode(res);
|
||||
// print(dataCarsLocationByPassenger);
|
||||
var res =
|
||||
await CRUD().get(link: AppLink.getCarsLocationByPassenger, payload: {
|
||||
'southwestLat': southwest.latitude.toString(),
|
||||
'southwestLon': southwest.longitude.toString(),
|
||||
'northeastLat': northeast.latitude.toString(),
|
||||
'northeastLon': northeast.longitude.toString(),
|
||||
});
|
||||
if (res == 'failure') {
|
||||
Get.defaultDialog(
|
||||
title: 'No Car in your site.Sorry!',
|
||||
middleText: '',
|
||||
confirm: MyElevatedButton(
|
||||
title: 'Back',
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
markerReloadingTimer.cancel();
|
||||
}));
|
||||
} else {
|
||||
dataCarsLocationByPassenger = jsonDecode(res);
|
||||
// print(dataCarsLocationByPassenger);
|
||||
|
||||
for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) {
|
||||
carsLocationByPassenger.add(LatLng(
|
||||
double.parse(dataCarsLocationByPassenger['message'][i]['latitude']),
|
||||
double.parse(
|
||||
dataCarsLocationByPassenger['message'][i]['longitude'])));
|
||||
for (var i = 0;
|
||||
i < dataCarsLocationByPassenger['message'].length;
|
||||
i++) {
|
||||
carsLocationByPassenger.add(LatLng(
|
||||
double.parse(
|
||||
dataCarsLocationByPassenger['message'][i]['latitude']),
|
||||
double.parse(
|
||||
dataCarsLocationByPassenger['message'][i]['longitude'])));
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -690,6 +770,7 @@ class MapController extends GetxController {
|
||||
distanceByPassenger =
|
||||
data['rows'][0]['elements'][0]['distance']['text'];
|
||||
duration1 = data['rows'][0]['elements'][0]['duration']['value'];
|
||||
|
||||
durationFromDriverToPassenger = Duration(seconds: duration1.toInt());
|
||||
newTime1 = currentTime.add(durationFromDriverToPassenger);
|
||||
timeFromDriverToPassenger =
|
||||
@@ -744,6 +825,7 @@ class MapController extends GetxController {
|
||||
var response = await CRUD().getGoogleApi(link: url, payload: {});
|
||||
data = response['routes'][0]['legs'];
|
||||
print(data);
|
||||
durationToRide = data[0]['duration']['value'];
|
||||
final points =
|
||||
decodePolyline(response["routes"][0]["overview_polyline"]["points"]);
|
||||
for (int i = 0; i < points.length; i++) {
|
||||
@@ -2,7 +2,7 @@ import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:ride/controller/home/map_page_controller.dart';
|
||||
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||
|
||||
import '../../constant/box_name.dart';
|
||||
import '../../constant/links.dart';
|
||||
@@ -17,7 +17,7 @@ class PaymentController extends GetxController {
|
||||
bool isPromoSheetDialogue = false;
|
||||
final formKey = GlobalKey<FormState>();
|
||||
final promo = TextEditingController();
|
||||
double totalPassenger = MapController().totalPassenger;
|
||||
double totalPassenger = MapPassengerController().totalPassenger;
|
||||
int? selectedAmount = 0;
|
||||
List<dynamic> totalPassengerWalletDetails = [];
|
||||
String passengerTotalWalletAmount = '';
|
||||
@@ -70,7 +70,7 @@ class PaymentController extends GetxController {
|
||||
var firstElement = decod["message"][0];
|
||||
totalPassenger = totalPassenger -
|
||||
(totalPassenger * int.parse(firstElement['amount']));
|
||||
MapController().promoTaken = true;
|
||||
MapPassengerController().promoTaken = true;
|
||||
update();
|
||||
print(totalPassenger);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user