From f2ed2736dc12e8c13b7e287e9a0034f7992f97af Mon Sep 17 00:00:00 2001 From: Hamza Aleghwairyeen Date: Mon, 22 Apr 2024 15:56:13 +0300 Subject: [PATCH] 4/22/2 --- lib/controller/firebase/firbase_messge.dart | 28 +++++- .../functions}/call_controller.dart | 45 +++++---- lib/controller/rate/rate_conroller.dart | 30 ++++++ lib/views/Rate/rate_captain.dart | 91 ++++++++++--------- .../Captin/home_captain/widget/call_page.dart | 2 +- .../widget/call_page_From_passenger.dart | 6 +- 6 files changed, 133 insertions(+), 69 deletions(-) rename lib/{views/home/Captin/home_captain => controller/functions}/call_controller.dart (72%) diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index a107f6e..95be155 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -227,6 +227,26 @@ class FirebaseMessagesController extends GetxController { } catch (e) { print('Error navigating to PassengerCallPage: $e'); } + } else if (message.notification!.title! == 'Call Income from Passenger') { + try { + var myListString = message.data['passengerList']; + var driverList = jsonDecode(myListString) as List; + // if (Platform.isAndroid) { + NotificationController().showNotification( + 'Call Income'.tr, + message.notification!.body!, + 'iphone_ringtone', + ); + // } + // Assuming GetMaterialApp is initialized and context is valid for navigation + Get.to(() => CallPage( + // channelName: driverList[1].toString(), + // token: driverList[0].toString(), + // remoteID: driverList[2].toString(), + )); + } catch (e) { + print('Error navigating to PassengerCallPage: $e'); + } } else if (message.notification!.title! == 'Call End') { try { var myListString = message.data['passengerList']; @@ -652,15 +672,19 @@ class DriverTipWidget extends StatelessWidget { return Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + // Text( + // '${'Your fee is '.tr}${Get.find().totalPassenger.toStringAsFixed(2)}'), Text( - '${'Your fee is '.tr}${Get.find().totalPassenger.toStringAsFixed(2)}'), - Text('Do you want to pay Tips for this Driver'.tr), + 'Do you want to pay Tips for this Driver'.tr, + textAlign: TextAlign.center, + ), Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ InkWell( onTap: () { box.write(BoxName.tipPercentage, '0.05'); + Toast.show( context, '${'Tip is '.tr}${(Get.find().totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString())))}', diff --git a/lib/views/home/Captin/home_captain/call_controller.dart b/lib/controller/functions/call_controller.dart similarity index 72% rename from lib/views/home/Captin/home_captain/call_controller.dart rename to lib/controller/functions/call_controller.dart index 0d92033..9976488 100644 --- a/lib/views/home/Captin/home_captain/call_controller.dart +++ b/lib/controller/functions/call_controller.dart @@ -5,10 +5,10 @@ import 'package:agora_rtc_engine/agora_rtc_engine.dart'; import 'package:get/get.dart'; import 'package:permission_handler/permission_handler.dart'; -import '../../../../constant/box_name.dart'; -import '../../../../controller/firebase/firbase_messge.dart'; -import '../../../../controller/home/captin/map_driver_controller.dart'; -import '../../../../main.dart'; +import '../../constant/box_name.dart'; +import '../firebase/firbase_messge.dart'; +import '../home/captin/map_driver_controller.dart'; +import '../../main.dart'; class CallController extends GetxController { String channelName = ''; // Get.find().rideId; @@ -23,20 +23,21 @@ class CallController extends GetxController { @override void onInit() { super.onInit(); - channelName = box.read(BoxName.driverID) != null - ? Get.find().rideId - : Get.find().rideId; // 'sefer300'; // - remoteUid = box.read(BoxName.driverID) != null - ? int.parse(box.read(BoxName.phoneDriver)) - : int.parse(box.read(BoxName.phone)); - uid = box.read(BoxName.driverID) == null - ? int.parse(box.read(BoxName.phoneDriver)) - : int.parse(box.read(BoxName.phone)); + if (box.read(BoxName.passengerID) != null) { + channelName = Get.find().rideId; // 'sefer300'; // + remoteUid = int.parse(Get.find().driverPhone); + uid = int.parse(box.read(BoxName.phone)); + } else { + channelName = Get.find().rideId; // 'sefer300'; // + remoteUid = int.parse(Get.find().passengerPhone); + uid = int.parse(box.read(BoxName.phoneDriver)); + } initAgoraFull(); } initAgoraFull() async { + print('channelName is $channelName'); print('remoteid is $remoteUid'); print('uid is $uid'); await fetchToken(); @@ -44,9 +45,13 @@ class CallController extends GetxController { setupVoiceSDKEngine(); // join(); FirebaseMessagesController().sendNotificationToPassengerToken( - 'Call Income', - '${'You have call from driver'.tr} ${box.read(BoxName.nameDriver)}', - Get.find().tokenPassenger, + 'Call Income from Passenger', + box.read(BoxName.passengerID) != null + ? '${'You have call from Passenger'.tr} ${box.read(BoxName.name)}' + : '${'You have call from driver'.tr} ${box.read(BoxName.nameDriver)}', + box.read(BoxName.passengerID) != null + ? Get.find().driverToken + : Get.find().tokenPassenger, [ token, channelName, @@ -84,10 +89,10 @@ class CallController extends GetxController { }, onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) { // Get.snackbar("Remote user uid:$remoteUid joined the channel", ''); - status = '${Get.find().passengerName}' - ' joined' - .tr - .tr; + status = + '${box.read(BoxName.passengerID) != null ? Get.find().driverName : Get.find().passengerName}' + ' joined' + .tr; remoteUid = remoteUid; update(); }, diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 6151559..1cf029a 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -12,6 +12,8 @@ import 'package:SEFER/views/home/Captin/home_captain/home_captin.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; +import '../firebase/firbase_messge.dart'; + // import '../home/captin/home_captain_controller.dart'; class RateController extends GetxController { @@ -80,6 +82,34 @@ class RateController extends GetxController { middleText: '', confirm: MyElevatedButton(title: 'Ok', onPressed: () => Get.back())); } else { + var tip = (Get.find().totalPassenger) * + (double.parse(box.read(BoxName.tipPercentage.toString()))); + var res = await CRUD().post(link: AppLink.addTips, payload: { + 'passengerID': box.read(BoxName.passengerID), + 'driverID': Get.find().driverId.toString(), + 'rideID': Get.find().rideId.toString(), + 'tipAmount': tip.toString(), + }); + await CRUD().post(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'balance': ((-1) * tip).toString() + }); + + await CRUD().post(link: AppLink.addDriversWalletPoints, payload: { + 'driverID': Get.find().driverId.toString(), + 'paymentID': '${Get.find().rideId}tip', + 'amount': (tip * 100).toString(), + 'paymentMethod': 'visa-tip', + }); + + if (res != 'failure') { + FirebaseMessagesController().sendNotificationToAnyWithoutData( + 'You Have Tips', + '${'${tip.toString()}\$${' tips\nTotal is'.tr}'} ${tip + (Get.find().totalPassenger)}', + Get.find().driverToken.toString(), + ); + } + await CRUD().post(link: AppLink.addRateToDriver, payload: { 'passenger_id': box.read(BoxName.passengerID).toString(), 'driver_id': driverId, diff --git a/lib/views/Rate/rate_captain.dart b/lib/views/Rate/rate_captain.dart index 1b018a9..a8e3405 100644 --- a/lib/views/Rate/rate_captain.dart +++ b/lib/views/Rate/rate_captain.dart @@ -22,17 +22,19 @@ class RateDriverFromPassenger extends StatelessWidget { title: 'Rate Driver'.tr, body: [ Positioned( - top: 40, + top: 10, left: Get.width * .1, right: Get.width * .1, child: Container( + // height: Get.height * 6, decoration: AppStyle.boxDecoration1, child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Padding( padding: const EdgeInsets.all(4), child: Container( - height: Get.height * .25, + height: Get.height * .5, decoration: AppStyle.boxDecoration1, child: Padding( padding: const EdgeInsets.all(8.0), @@ -43,47 +45,54 @@ class RateDriverFromPassenger extends StatelessWidget { '${'Total price to '.tr}${Get.find().firstName}', style: AppStyle.title, ), - Container( - decoration: BoxDecoration( - border: Border.all( - width: 2, - color: AppColor.redColor, - )), - child: Padding( - padding: const EdgeInsets.all(4), - child: Text( - (double.parse(controller.price - .toString()) * - .12 + - double.parse( - controller.price.toString())) - .toStringAsFixed(2), - style: AppStyle.number.copyWith( - color: AppColor.redColor, - textBaseline: - TextBaseline.ideographic, - decoration: - TextDecoration.lineThrough, - decorationColor: AppColor.redColor), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + Container( + decoration: BoxDecoration( + border: Border.all( + width: 2, + color: AppColor.redColor, + )), + child: Padding( + padding: const EdgeInsets.all(4), + child: Text( + (double.parse(controller.price + .toString()) * + .12 + + double.parse(controller.price + .toString())) + .toStringAsFixed(2), + style: AppStyle.number.copyWith( + color: AppColor.redColor, + textBaseline: + TextBaseline.ideographic, + decoration: + TextDecoration.lineThrough, + decorationColor: + AppColor.redColor), + ), + ), ), - ), - ), - const SizedBox( - height: 10, - ), - Container( - decoration: BoxDecoration( - border: Border.all( - width: 2, - color: AppColor.greenColor, - )), - child: Padding( - padding: const EdgeInsets.all(4), - child: Text( - controller.price.toString(), - style: AppStyle.number, + const SizedBox( + height: 10, ), - ), + Container( + decoration: BoxDecoration( + border: Border.all( + width: 2, + color: AppColor.greenColor, + )), + child: Padding( + padding: const EdgeInsets.all(4), + child: Text( + controller.price.toString(), + style: AppStyle.number, + ), + ), + ), + ], ), const SizedBox( height: 10, diff --git a/lib/views/home/Captin/home_captain/widget/call_page.dart b/lib/views/home/Captin/home_captain/widget/call_page.dart index 0870bd6..07e91b9 100644 --- a/lib/views/home/Captin/home_captain/widget/call_page.dart +++ b/lib/views/home/Captin/home_captain/widget/call_page.dart @@ -2,7 +2,7 @@ import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/firebase/firbase_messge.dart'; import 'package:SEFER/controller/home/captin/map_driver_controller.dart'; -import 'package:SEFER/views/home/Captin/home_captain/call_controller.dart'; +import 'package:SEFER/controller/functions/call_controller.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/views/home/Captin/home_captain/widget/call_page_From_passenger.dart b/lib/views/home/Captin/home_captain/widget/call_page_From_passenger.dart index 05debc6..1d18154 100644 --- a/lib/views/home/Captin/home_captain/widget/call_page_From_passenger.dart +++ b/lib/views/home/Captin/home_captain/widget/call_page_From_passenger.dart @@ -1,17 +1,13 @@ import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/firebase/firbase_messge.dart'; -import 'package:SEFER/controller/home/captin/map_driver_controller.dart'; import 'package:SEFER/controller/home/map_passenger_controller.dart'; -import 'package:SEFER/views/home/Captin/home_captain/call_controller.dart'; +import 'package:SEFER/controller/functions/call_controller.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/controller/home/captin/home_captain_controller.dart'; -import '../../../../../constant/box_name.dart'; -import '../../../../../main.dart'; - class CallPageFromPassenger extends StatelessWidget { const CallPageFromPassenger({super.key});