From b0e842e53be2bdc0690047504c67fa7ca2e36b7f Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Wed, 18 Oct 2023 01:34:30 +0300 Subject: [PATCH] 10/18/1 --- lib/constant/links.dart | 5 + .../home/captin/home_captain_controller.dart | 22 ++- .../home/captin/map_driver_controller.dart | 11 ++ lib/controller/rate/rate_conroller.dart | 1 + lib/main.dart | 27 ++-- lib/views/Rate/ride_calculate_driver.dart | 12 ++ lib/views/home/Captin/home_captin.dart | 21 +-- .../Captin/mapDriver/driver_end_ride_bar.dart | 83 ++++++++++ .../Captin/mapDriver/driver_map_page.dart | 27 ++++ .../mapDriver/google_driver_map_page.dart | 66 ++++++++ .../mapDriver}/passenger_info_window.dart | 4 +- lib/views/orderCaptin/driver_map_page.dart | 153 ------------------ lib/views/orderCaptin/order_request_page.dart | 4 +- 13 files changed, 255 insertions(+), 181 deletions(-) create mode 100644 lib/views/Rate/ride_calculate_driver.dart create mode 100644 lib/views/home/Captin/mapDriver/driver_end_ride_bar.dart create mode 100644 lib/views/home/Captin/mapDriver/driver_map_page.dart create mode 100644 lib/views/home/Captin/mapDriver/google_driver_map_page.dart rename lib/views/home/{map_widget.dart => Captin/mapDriver}/passenger_info_window.dart (99%) delete mode 100644 lib/views/orderCaptin/driver_map_page.dart diff --git a/lib/constant/links.dart b/lib/constant/links.dart index a0908d4..f81f131 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -39,7 +39,12 @@ class AppLink { static const String updateRides = "$ride/rides/update.php"; static const String deleteRides = "$ride/rides/delete.php"; +//-----------------DriverPayment------------------ + static const String addDriverpayment = "$ride/payment/add.php"; + static const String getDriverpaymentToday = "$ride/payment/get.php"; + //-----------------DriverOrder------------------ + static const String addDriverOrder = "$ride/driver_order/add.php"; static const String getDriverOrder = "$ride/driver_order/get.php"; static const String updateDriverOrder = "$ride/driver_order/update.php"; diff --git a/lib/controller/home/captin/home_captain_controller.dart b/lib/controller/home/captin/home_captain_controller.dart index a6d2f24..fcbfbc1 100644 --- a/lib/controller/home/captin/home_captain_controller.dart +++ b/lib/controller/home/captin/home_captain_controller.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:get/get.dart'; import 'package:ride/constant/box_name.dart'; import 'dart:async'; @@ -12,6 +14,8 @@ class HomeCaptainController extends GetxController { DateTime? activeStartTime; Duration activeDuration = Duration.zero; Timer? activeTimer; + Map data = {}; + String totalToday = '0'; // Inject the LocationController class final locationController = Get.find(); @@ -53,12 +57,26 @@ class HomeCaptainController extends GetxController { @override void onInit() async { + addToken(); + getPaymentToday(); + super.onInit(); + } + + addToken() async { await CRUD().post(link: AppLink.addTokensDriver, payload: { 'token': box.read(BoxName.tokenDriver), 'captain_id': box.read(BoxName.driverID).toString() - }).then((value) => print('cccc')); + }).then((value) => print('Token Added')); box.write(BoxName.statusDriverLocation, 'off'); - super.onInit(); + } + + getPaymentToday() async { + var res = await CRUD().get( + link: AppLink.getDriverpaymentToday, + payload: {'driverID': box.read(BoxName.driverID).toString()}); + data = jsonDecode(res); + totalToday = data['message'][0]['total_amount']; + update(); } @override diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart index ee744f3..5189e87 100644 --- a/lib/controller/home/captin/map_driver_controller.dart +++ b/lib/controller/home/captin/map_driver_controller.dart @@ -29,6 +29,8 @@ class MapDriverController extends GetxController { late String name; late String phone; late String rideId; + late String paymentAmount; + late String paymentMethod; late String passengerId; late String driverId; late String tokenPassenger; @@ -178,6 +180,13 @@ class MapDriverController extends GetxController { box.write(BoxName.statusDriverLocation, 'on'); update(); + await CRUD().post(link: AppLink.addDriverpayment, payload: { + 'rideId': rideId, + 'amount': paymentAmount, + 'payment_method': paymentMethod, + 'passengerID': passengerId, + 'driverID': box.read(BoxName.driverID).toString(), + }); await CRUD().post(link: AppLink.updateRides, payload: { 'id': rideId, 'rideTimeStart': DateTime.now().toString(), @@ -334,6 +343,8 @@ class MapDriverController extends GetxController { durationToPassenger = Get.arguments['DurationToPassenger']; rideId = Get.arguments['rideId']; durationOfRideValue = Get.arguments['durationOfRideValue']; + paymentAmount = Get.arguments['paymentAmount']; + paymentMethod = Get.arguments['paymentMethod']; String lat = Get.find().myLocation.latitude.toString(); String lng = Get.find().myLocation.longitude.toString(); String origin = '$lat,$lng'; diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 2c472ed..fc1c560 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -51,6 +51,7 @@ class RateController extends GetxController { }); Get.offAll(const HomeCaptain()); homeCaptainController.isActive = true; + homeCaptainController.getPaymentToday(); } } diff --git a/lib/main.dart b/lib/main.dart index 2f8791d..d5f0b6e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -39,22 +39,21 @@ void main() async { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); + await FirebaseMessagesController().requestFirebaseMessagingPermission(); + + await FirebaseMessagesController().getToken(); + FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); + + List initializationTasks = [ + FirebaseMessagesController().getNotificationSettings(), + FirebaseMessagesController().getToken(), + // FirebaseMessagesController().getTokens(), + // Add more initialization tasks here + ]; + + await Future.wait(initializationTasks); } - await FirebaseMessagesController().requestFirebaseMessagingPermission(); - - await FirebaseMessagesController().getToken(); - FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); - - List initializationTasks = [ - FirebaseMessagesController().getNotificationSettings(), - FirebaseMessagesController().getToken(), - // FirebaseMessagesController().getTokens(), - // Add more initialization tasks here - ]; - - await Future.wait(initializationTasks); - runApp(const MyApp()); } diff --git a/lib/views/Rate/ride_calculate_driver.dart b/lib/views/Rate/ride_calculate_driver.dart new file mode 100644 index 0000000..8f09ef8 --- /dev/null +++ b/lib/views/Rate/ride_calculate_driver.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:ride/views/widgets/my_scafold.dart'; + +class RideCalculateDriver extends StatelessWidget { + const RideCalculateDriver({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld(title: 'Ride Summary'.tr, body: [], isleading: true); + } +} diff --git a/lib/views/home/Captin/home_captin.dart b/lib/views/home/Captin/home_captin.dart index 04d3e2f..a525c51 100644 --- a/lib/views/home/Captin/home_captin.dart +++ b/lib/views/home/Captin/home_captin.dart @@ -98,15 +98,18 @@ class HomeCaptain extends StatelessWidget { const SizedBox( height: 10, ), - Container( - decoration: AppStyle.boxDecoration, - width: Get.width * .8, - height: 80, - child: Center( - child: Text( - 'You Earn today is '.tr, //Todo add here number for income - style: AppStyle.title, - )), + GetBuilder( + builder: (homeCaptainController) => Container( + decoration: AppStyle.boxDecoration, + width: Get.width * .8, + height: 80, + child: Center( + child: Text( + 'You Earn today is '.tr + + homeCaptainController + .totalToday, //Todo add here number for income + style: AppStyle.title, + ))), ), GetBuilder( builder: (homeCaptainController) => Column( diff --git a/lib/views/home/Captin/mapDriver/driver_end_ride_bar.dart b/lib/views/home/Captin/mapDriver/driver_end_ride_bar.dart new file mode 100644 index 0000000..b990ab4 --- /dev/null +++ b/lib/views/home/Captin/mapDriver/driver_end_ride_bar.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/home/captin/map_driver_controller.dart'; +import '../../../widgets/elevated_btn.dart'; + +GetBuilder driverEndRideBar() { + return GetBuilder( + builder: (mapDriverController) => mapDriverController.isRideStarted + ? Positioned( + left: 5, + top: 5, + right: 5, + child: Container( + decoration: AppStyle.boxDecoration, + height: 100, + width: 200, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Column( + children: [ + const Icon(Icons.social_distance), + Text( + mapDriverController.distance.toString() + + ' ' + + 'KM'.tr, + style: AppStyle.title, + ), + ], + ), + mapDriverController.remainingTimeTimerRideBegin < 60 + ? MyElevatedButton( + title: 'End Ride'.tr, + onPressed: () { + mapDriverController.finishRideFromDriver(); + }, + kolor: AppColor.redColor, + ) + : const SizedBox(), + Column( + children: [ + const Icon(Icons.timelapse), + Text( + mapDriverController.duration.toString() + + ' ' + + 'Minute'.tr, + style: AppStyle.title), + ], + ), + ], + ), + Stack( + children: [ + LinearProgressIndicator( + backgroundColor: AppColor.accentColor, + color: + mapDriverController.remainingTimeTimerRideBegin < + 60 + ? AppColor.redColor + : AppColor.greenColor, + minHeight: 40, + borderRadius: BorderRadius.circular(15), + value: mapDriverController.progressTimerRideBegin + .toDouble(), + ), + Center( + child: Text( + mapDriverController.stringRemainingTimeRideBegin, + style: AppStyle.title, + ), + ) + ], + ), + ], + ), + )) + : const SizedBox()); +} diff --git a/lib/views/home/Captin/mapDriver/driver_map_page.dart b/lib/views/home/Captin/mapDriver/driver_map_page.dart new file mode 100644 index 0000000..a26d57e --- /dev/null +++ b/lib/views/home/Captin/mapDriver/driver_map_page.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:ride/controller/home/captin/map_driver_controller.dart'; +import 'package:ride/views/widgets/my_scafold.dart'; + +import '../../../../controller/functions/location_controller.dart'; +import 'driver_end_ride_bar.dart'; +import 'google_driver_map_page.dart'; +import 'passenger_info_window.dart'; + +class PassengerLocationMapPage extends StatelessWidget { + PassengerLocationMapPage({super.key}); + final LocationController locationController = Get.put(LocationController()); + @override + Widget build(BuildContext context) { + Get.put(MapDriverController()); + + return MyScafolld( + title: 'Map'.tr, + body: [ + GoogleDriverMap(locationController: locationController), + const PassengerInfoWindow(), + driverEndRideBar() + ], + isleading: true); + } +} diff --git a/lib/views/home/Captin/mapDriver/google_driver_map_page.dart b/lib/views/home/Captin/mapDriver/google_driver_map_page.dart new file mode 100644 index 0000000..049a544 --- /dev/null +++ b/lib/views/home/Captin/mapDriver/google_driver_map_page.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../controller/functions/location_controller.dart'; +import '../../../../controller/home/captin/map_driver_controller.dart'; + +class GoogleDriverMap extends StatelessWidget { + const GoogleDriverMap({ + super.key, + required this.locationController, + }); + + final LocationController locationController; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: GetBuilder( + builder: (controller) => GoogleMap( + onMapCreated: controller.onMapCreated, + initialCameraPosition: CameraPosition( + target: locationController.myLocation, + zoom: 15, + ), + // onCameraMove: (position) { + // locationController.myLocation = position.target; + // print(position); + // }, + minMaxZoomPreference: const MinMaxZoomPreference(6, 18), + buildingsEnabled: true, + mapToolbarEnabled: true, + polylines: { + Polyline( + zIndex: 2, + consumeTapEvents: true, + geodesic: true, + endCap: Cap.buttCap, + startCap: Cap.buttCap, + visible: true, + polylineId: const PolylineId('route'), + points: controller.polylineCoordinates, + color: AppColor.greenColor, + width: 5, + ), + }, + markers: { + Marker( + markerId: MarkerId('MyLocation'.tr), + position: locationController.myLocation, + draggable: true, + icon: controller.carIcon, + infoWindow: const InfoWindow( + title: 'Time', + // snippet: controller.durationFromDriverToPassenger + // .toString(), + ), + ), + }, + ), + ), + ); + } +} diff --git a/lib/views/home/map_widget.dart/passenger_info_window.dart b/lib/views/home/Captin/mapDriver/passenger_info_window.dart similarity index 99% rename from lib/views/home/map_widget.dart/passenger_info_window.dart rename to lib/views/home/Captin/mapDriver/passenger_info_window.dart index 5386167..ad9516f 100644 --- a/lib/views/home/map_widget.dart/passenger_info_window.dart +++ b/lib/views/home/Captin/mapDriver/passenger_info_window.dart @@ -8,8 +8,8 @@ import 'package:ride/controller/home/captin/map_driver_controller.dart'; import 'package:ride/main.dart'; import 'package:ride/views/widgets/elevated_btn.dart'; -import '../../../constant/style.dart'; -import '../../../controller/functions/launch.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/functions/launch.dart'; class PassengerInfoWindow extends StatelessWidget { const PassengerInfoWindow({ diff --git a/lib/views/orderCaptin/driver_map_page.dart b/lib/views/orderCaptin/driver_map_page.dart deleted file mode 100644 index 1678c0b..0000000 --- a/lib/views/orderCaptin/driver_map_page.dart +++ /dev/null @@ -1,153 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:google_maps_flutter/google_maps_flutter.dart'; -import 'package:ride/controller/home/captin/map_driver_controller.dart'; -import 'package:ride/views/widgets/elevated_btn.dart'; -import 'package:ride/views/widgets/my_scafold.dart'; - -import '../../constant/colors.dart'; -import '../../constant/style.dart'; -import '../../controller/functions/location_controller.dart'; -import '../home/map_widget.dart/passenger_info_window.dart'; - -class PassengerLocationMapPage extends StatelessWidget { - PassengerLocationMapPage({super.key}); - final LocationController locationController = Get.put(LocationController()); - @override - Widget build(BuildContext context) { - Get.put(MapDriverController()); - - return MyScafolld( - title: 'Map'.tr, - body: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: GetBuilder( - builder: (controller) => GoogleMap( - onMapCreated: controller.onMapCreated, - initialCameraPosition: CameraPosition( - target: locationController.myLocation, - zoom: 15, - ), - // onCameraMove: (position) { - // locationController.myLocation = position.target; - // print(position); - // }, - minMaxZoomPreference: const MinMaxZoomPreference(6, 18), - buildingsEnabled: true, - mapToolbarEnabled: true, - polylines: { - Polyline( - zIndex: 2, - consumeTapEvents: true, - geodesic: true, - endCap: Cap.buttCap, - startCap: Cap.buttCap, - visible: true, - polylineId: const PolylineId('route'), - points: controller.polylineCoordinates, - color: AppColor.greenColor, - width: 5, - ), - }, - markers: { - Marker( - markerId: MarkerId('MyLocation'.tr), - position: locationController.myLocation, - draggable: true, - icon: controller.carIcon, - infoWindow: const InfoWindow( - title: 'Time', - // snippet: controller.durationFromDriverToPassenger - // .toString(), - ), - ), - }, - ), - ), - ), - const PassengerInfoWindow(), - GetBuilder( - builder: (mapDriverController) => mapDriverController - .isRideStarted - ? Positioned( - left: 5, - top: 5, - right: 5, - child: Container( - decoration: AppStyle.boxDecoration, - height: 100, - width: 200, - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Column( - children: [ - const Icon(Icons.social_distance), - Text( - mapDriverController.distance.toString() + - ' ' + - 'KM'.tr, - style: AppStyle.title, - ), - ], - ), - mapDriverController - .remainingTimeTimerRideBegin < - 60 - ? MyElevatedButton( - title: 'End Ride'.tr, - onPressed: () { - mapDriverController - .finishRideFromDriver(); - }, - kolor: AppColor.redColor, - ) - : const SizedBox(), - Column( - children: [ - const Icon(Icons.timelapse), - Text( - mapDriverController.duration - .toString() + - ' ' + - 'Minute'.tr, - style: AppStyle.title), - ], - ), - ], - ), - Stack( - children: [ - LinearProgressIndicator( - backgroundColor: AppColor.accentColor, - color: mapDriverController - .remainingTimeTimerRideBegin < - 60 - ? AppColor.redColor - : AppColor.greenColor, - minHeight: 40, - borderRadius: BorderRadius.circular(15), - value: mapDriverController - .progressTimerRideBegin - .toDouble(), - ), - Center( - child: Text( - mapDriverController - .stringRemainingTimeRideBegin, - style: AppStyle.title, - ), - ) - ], - ), - ], - ), - )) - : const SizedBox()) - ], - isleading: true); - } -} diff --git a/lib/views/orderCaptin/order_request_page.dart b/lib/views/orderCaptin/order_request_page.dart index 484f078..a47b1e1 100644 --- a/lib/views/orderCaptin/order_request_page.dart +++ b/lib/views/orderCaptin/order_request_page.dart @@ -4,7 +4,7 @@ import 'package:ride/constant/box_name.dart'; import 'package:ride/controller/firebase/firbase_messge.dart'; import 'package:ride/controller/home/captin/map_driver_controller.dart'; import 'package:ride/main.dart'; -import 'package:ride/views/orderCaptin/driver_map_page.dart'; +import 'package:ride/views/home/Captin/mapDriver/driver_map_page.dart'; import 'package:ride/views/widgets/my_scafold.dart'; import '../../constant/colors.dart'; @@ -205,6 +205,8 @@ class OrderRequestPage extends StatelessWidget { 'passengerId': myList[7].toString(), 'driverId': myList[18].toString(), 'durationOfRideValue': myList[19].toString(), + 'paymentAmount': myList[3].toString(), + 'paymentMethod': myList[13].toString(), }); }, ),