From 91985fddf6bb4d87d4015a63bb446461663f4eb6 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Thu, 25 Jan 2024 23:08:54 +0300 Subject: [PATCH] 1/25/2 --- lib/constant/links.dart | 2 + .../home/map_passenger_controller.dart | 71 ++---- .../passenger_wallet_history_controller.dart | 31 +++ .../payment/payment_controller.dart | 2 +- lib/controller/themes/themes.dart | 26 +- .../buttom_sheet_map_show.dart | 103 ++------ .../cash_confirm_bottom_page.dart | 26 +- .../home/my_wallet/passenger_wallet.dart | 234 ++++++------------ .../my_wallet/passenger_wallet_dialoge.dart | 1 + .../payment_history_passenger_page.dart | 53 ++++ 10 files changed, 236 insertions(+), 313 deletions(-) create mode 100644 lib/controller/payment/passenger_wallet_history_controller.dart create mode 100644 lib/views/home/my_wallet/payment_history_passenger_page.dart diff --git a/lib/constant/links.dart b/lib/constant/links.dart index e58e6ca..2dc653e 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -20,6 +20,8 @@ class AppLink { "$wallet/getAllPassengerTransaction.php"; static String getWalletByPassenger = "$wallet/getWalletByPassenger.php"; static String getPassengersWallet = "$wallet/get.php"; + static String getPassengerWalletArchive = + "$wallet/getPassengerWalletArchive.php"; static String addPassengersWallet = "$wallet/add.php"; static String deletePassengersWallet = "$wallet/delete.php"; static String updatePassengersWallet = "$wallet/update.php"; diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 43aaf45..11756a7 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -1439,6 +1439,7 @@ class MapPassengerController extends GetxController { // getDistanceFromText(data[0]['distance']['text']); double distanceOfTrip = (data[0]['distance']['value']) / 1000; + distance = distanceOfTrip; print('distance is $distanceOfTrip'); // Animate the camera to the adjusted bounds if (distanceOfTrip <= 5) { @@ -1616,12 +1617,6 @@ class MapPassengerController extends GetxController { Future bottomSheet() async { if (data.isNotEmpty) { - String distanceText = await data[0]['distance']['text']; - // String durationText = await data[0]['duration']['text']; - print(data[0]['duration']['text']); - print('================================='); - // distance = getDistanceFromText(distanceText); - // duration = getDistanceFromText(durationText); durationToAdd = Duration(seconds: durationToRide); print('durationToRide----- $durationToRide'); hours = durationToAdd.inHours; @@ -1637,61 +1632,37 @@ class MapPassengerController extends GetxController { totalME = totalPassenger - tax; update(); if (currentTime.hour >= 22) { - if (distanceText.contains('km')) { - cost = distance * 0.23; - update(); - } else { - cost = distance * 0.23 / 1000; - update(); - } + cost = distance * 0.23; + update(); } else if (currentTime.hour < 5) { - if (distanceText.contains('km')) { + cost = distance * 0.25; + update(); + } else if (currentTime.hour >= 13 && currentTime.hour <= 16) { + if (averageDuration > 2.5) { cost = distance * 0.25; update(); } else { - cost = distance * 0.25 / 1000; - update(); - } - } else if (currentTime.hour >= 13 && currentTime.hour <= 16) { - if (averageDuration > 2.5) { - if (distanceText.contains('km')) { - cost = distance * 0.25; - update(); - } else { - cost = distance * 0.25 / 1000; - update(); - } - } else { - if (distanceText.contains('km')) { - cost = distance * 0.21; - update(); - } else { - cost = distance * 0.21 / 1000; - update(); - } - } - } else { - if (distanceText.contains('km')) { cost = distance * 0.21; update(); - } else { - cost = distance * 0.21 / 1000; - update(); } + } else { + cost = distance * 0.21; + update(); } - + print('cost $cost'); if (totalPassenger < 1) { totalPassenger = 1; + totalDriver = 1; update(); - if (totalDriver < .5) { - totalDriver = .75; - totalME = .21; - update(); - } else { - totalDriver = .90; - totalME = .06; - update(); - } + // if (totalDriver < .5) { + // totalDriver = .75; + // totalME = .21; + // update(); + // } else { + // totalDriver = .90; + // totalME = .06; + // update(); + // } } // buttomSheetMapPage(); diff --git a/lib/controller/payment/passenger_wallet_history_controller.dart b/lib/controller/payment/passenger_wallet_history_controller.dart new file mode 100644 index 0000000..1a2162e --- /dev/null +++ b/lib/controller/payment/passenger_wallet_history_controller.dart @@ -0,0 +1,31 @@ +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:ride/constant/box_name.dart'; +import 'package:ride/constant/links.dart'; +import 'package:ride/controller/functions/crud.dart'; +import 'package:ride/main.dart'; + +class PassengerWalletHistoryController extends GetxController { + bool isLoading = false; + List archive = []; + + getArchivePayment() async { + isLoading = true; + update(); + var res = await CRUD().get( + link: AppLink.getPassengerWalletArchive, + payload: {'passenger_id': box.read(BoxName.passengerID)}); + + archive = jsonDecode(res)['message']; + print(archive); + isLoading = false; + update(); + } + + @override + void onInit() { + getArchivePayment(); + super.onInit(); + } +} diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart index c6afd51..876dcce 100644 --- a/lib/controller/payment/payment_controller.dart +++ b/lib/controller/payment/payment_controller.dart @@ -23,7 +23,7 @@ class PaymentController extends GetxController { bool isPromoSheetDialogue = false; final formKey = GlobalKey(); final promo = TextEditingController(); - double totalPassenger = MapPassengerController().totalPassenger; + double totalPassenger = Get.find().totalPassenger; int? selectedAmount = 0; List totalPassengerWalletDetails = []; String passengerTotalWalletAmount = ''; diff --git a/lib/controller/themes/themes.dart b/lib/controller/themes/themes.dart index a6ac191..176963f 100644 --- a/lib/controller/themes/themes.dart +++ b/lib/controller/themes/themes.dart @@ -5,26 +5,12 @@ import '../../constant/colors.dart'; ThemeData themeEnglish = ThemeData( fontFamily: "PlayfairDisplay", - textTheme: const TextTheme( - displaySmall: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 24, - color: AppColor.primaryColor), - displayLarge: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 22, - color: AppColor.primaryColor), - displayMedium: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 26, - color: AppColor.primaryColor), - bodyLarge: TextStyle( - height: 2, - color: AppColor.accentColor, - fontWeight: FontWeight.bold, - fontSize: 14), - bodyMedium: - TextStyle(height: 2, color: AppColor.accentColor, fontSize: 14)), + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.title, + displayMedium: AppStyle.title, + bodyLarge: AppStyle.headTitle, + bodyMedium: AppStyle.headTitle2), primarySwatch: Colors.blue, dialogTheme: DialogTheme( backgroundColor: AppColor.secondaryColor, diff --git a/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart b/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart index 73fe60e..a434251 100644 --- a/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart +++ b/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart @@ -76,10 +76,10 @@ GetBuilder buttomSheetMapPage() { : '${'Your Ride Duration is '.tr} ${controller.minutes} m', style: AppStyle.subtitle, ), - Text( - '${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}', - style: AppStyle.subtitle, - ), + // Text( + // '${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}', + // style: AppStyle.subtitle, + // ), Text( '${'Your trip distance is'.tr} ${controller.distance.toStringAsFixed(2)} KM', style: AppStyle.subtitle, @@ -96,9 +96,21 @@ GetBuilder buttomSheetMapPage() { crossAxisAlignment: CrossAxisAlignment.center, children: [ - Text( - '${'Fee is'.tr} \n${controller.totalPassenger.toStringAsFixed(2)}', - style: AppStyle.subtitle, + Container( + width: Get.width * .14, + height: Get.height * .06, + decoration: BoxDecoration( + color: AppColor.secondaryColor, + shape: BoxShape.rectangle, + border: Border.all( + width: 2, + color: AppColor.greenColor)), + child: Center( + child: Text( + '${'Fee is'.tr} \n${controller.totalPassenger.toStringAsFixed(2)}', + style: AppStyle.subtitle, + ), + ), ), controller.promoTaken ? const Icon( @@ -205,7 +217,8 @@ GetBuilder buttomSheetMapPage() { onTap: () async { controller .changeCashConfirmPageShown(); - PaymentController() + Get.find< + PaymentController>() .getPassengerWallet(); }, child: GetBuilder< @@ -337,80 +350,6 @@ GetBuilder buttomSheetMapPage() { mainAxisAlignment: MainAxisAlignment.center, children: [ - // TextButton( - // onPressed: () { - // Get.defaultDialog( - // barrierDismissible: false, - // title: - // 'How Many Passengers?'.tr, - // titleStyle: AppStyle.title, - // content: Column( - // children: [ - // Text( - // 'Allowed up to 4 Passengers.' - // .tr, - // style: AppStyle.title, - // ), - // SizedBox( - // height: - // 200, // Set the desired height here - // child: CupertinoPicker( - // itemExtent: 32, - // onSelectedItemChanged: - // (index) { - // controller - // .onChangedPassengerCount( - // index + 1); - // }, - // children: [ - // Text( - // '1 Passenger'.tr), - // Text('2 Passengers' - // .tr), - // Text('3 Passengers' - // .tr), - // Text('4 Passengers' - // .tr), - // ], - // ), - // ), - // MyElevatedButton( - // title: 'Back', - // onPressed: () => - // Get.back(), - // ) - // ], - // ), - // ); - // }, - // child: Row( - // mainAxisAlignment: - // MainAxisAlignment - // .spaceBetween, - // children: [ - // Text('How Many Passengers?'.tr, - // style: AppStyle.title), - // const SizedBox( - // width: 10, - // ), - // Container( - // decoration: BoxDecoration( - // border: Border.all()), - // child: Padding( - // padding: - // const EdgeInsets.all( - // 3.0), - // child: Text( - // controller - // .selectedPassengerCount - // .toString(), - // style: AppStyle.title), - // ), - // ), - // ], - // ), - // ), - controller.isCashSelectedBeforeConfirmRide == false ? MyElevatedButton( diff --git a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart index 2922c72..6df7279 100644 --- a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart +++ b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart @@ -9,7 +9,6 @@ import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/payment/payment_controller.dart'; import '../../../main.dart'; import '../../widgets/elevated_btn.dart'; -import '../my_wallet/passenger_wallet_dialoge.dart'; class CashConfirmPageShown extends StatelessWidget { CashConfirmPageShown({ @@ -70,7 +69,7 @@ class CashConfirmPageShown extends StatelessWidget { ), Text( // '${'Your Wallet balance is '.tr}JD ', - '${'Your Wallet balance is '.tr} ${box.read(BoxName.passengerWalletTotal).toString()} JD', + '${'Your Wallet balance is '.tr} ${box.read(BoxName.passengerWalletTotal).toString()} \$', style: AppStyle.subtitle, ), ], @@ -144,12 +143,23 @@ class CashConfirmPageShown extends StatelessWidget { double.parse(box .read(BoxName.passengerWalletTotal)) < controller.totalPassenger) - ? MyElevatedButton( - title: 'To use Wallet charge it'.tr, - onPressed: () { - Get.to(() => const PassengerWallet()); - }, - kolor: AppColor.redColor, + ? Column( + children: [ + MyElevatedButton( + title: 'To use Wallet charge it'.tr, + onPressed: () { + Get.to(() => const PassengerWallet()); + }, + kolor: AppColor.redColor, + ), + MyElevatedButton( + title: 'Next'.tr, + onPressed: () { + paymentController.isCashChecked = true; + controller.changeCashConfirmPageShown(); + }, + ), + ], ) : MyElevatedButton( title: 'Next'.tr, diff --git a/lib/views/home/my_wallet/passenger_wallet.dart b/lib/views/home/my_wallet/passenger_wallet.dart index 9ed5e39..cdb21df 100644 --- a/lib/views/home/my_wallet/passenger_wallet.dart +++ b/lib/views/home/my_wallet/passenger_wallet.dart @@ -1,12 +1,11 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:ride/views/home/my_wallet/payment_history_passenger_page.dart'; import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; import '../../../constant/info.dart'; import '../../../constant/style.dart'; -import '../../../controller/functions/secure_storage.dart'; -import '../../../controller/functions/toast.dart'; import '../../../controller/home/payment/credit_card_controller.dart'; import '../../../controller/payment/payment_controller.dart'; import '../../../main.dart'; @@ -28,154 +27,28 @@ class PassengerWallet extends StatelessWidget { body: [ GetBuilder( builder: (controller) => Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - Column( - children: [ - Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - decoration: const BoxDecoration( - borderRadius: - BorderRadius.all(Radius.circular(12)), - color: AppColor.secondaryColor, - boxShadow: [ - BoxShadow( - color: AppColor.accentColor, - offset: Offset(-1, -1), - blurRadius: 0, - spreadRadius: 0, - blurStyle: BlurStyle.normal), - BoxShadow( - color: AppColor.accentColor, - offset: Offset(3, 3), - blurRadius: 1, - spreadRadius: 0, - blurStyle: BlurStyle.normal) - ]), - child: Padding( - padding: const EdgeInsets.all(10), - child: - box.read(BoxName.passengerWalletTotal) == null - ? Text( - '${'You Dont Have Any amount in'.tr} ${AppInformation.appName}${'Wallet!'.tr}', - style: AppStyle.title, - ) - : Text( - '${'You Have'.tr} ${box.read(BoxName.passengerWalletTotal).toString()} JD in ${AppInformation.appName} Wallet', - style: AppStyle.title, - ), - ), - ), - ], - ), - const SizedBox( - height: 30, - ), - const MyCreditCardWidget(), - const SizedBox( - height: 10, - ), - // GetBuilder( - // builder: (creditCardController) => Row( - // mainAxisAlignment: MainAxisAlignment.center, - // children: [ - // MyElevatedButton( - // title: 'Save Credit Card'.tr, - // onPressed: () async { - // if (controller.formKey.currentState! - // .validate()) { - // SecureStorage().saveData( - // BoxName.cardNumber, - // creditCardController - // .cardNumberController.text); - // SecureStorage().saveData( - // BoxName.cardHolderName, - // creditCardController - // .cardHolderNameController.text); - // SecureStorage().saveData( - // BoxName.cvvCode, - // creditCardController - // .cvvCodeController.text); - // SecureStorage().saveData( - // BoxName.expiryDate, - // creditCardController - // .expiryDateController.text); - // } - // }, - // ), - // ], - // )), - // // MyElevatedButton( - // title: 'Charge your Wallet', - // onPressed: () { - // Get.defaultDialog( - // title: 'Choose amount you will Charge?'.tr, - // content: Column( - // crossAxisAlignment: CrossAxisAlignment.center, - // children: [ - // Row( - // children: [ - // Radio( - // value: 10, - // groupValue: controller.selectedAmount, - // onChanged: (value) { - // controller.selectedAmount = - // value as String?; - // }, - // ), - // Text('10 and get 4% discount'.tr), - // ], - // ), - // Row( - // children: [ - // Radio( - // value: 20, - // groupValue: controller.selectedAmount, - // onChanged: (value) { - // controller.selectedAmount = - // value as String?; - // }, - // ), - // Text('20 and get 6% discount'.tr), - // ], - // ), - // Row( - // children: [ - // Radio( - // value: 40, - // groupValue: controller.selectedAmount, - // onChanged: (value) { - // controller.selectedAmount = - // value as String?; - // }, - // ), - // Text('40 and get 8% discount'.tr), - // ], - // ), - // Row( - // children: [ - // Radio( - // value: 100, - // groupValue: controller.selectedAmount, - // onChanged: (value) { - // controller.selectedAmount = - // value as String?; - // }, - // ), - // Text('100 and get 11% discount'.tr), - // ], - // ), - // ], - // )); - // }, - // ) - ], - ), - ], + const CardSeferWallet(), + const SizedBox( + height: 20, ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 30), + child: Row( + children: [ + MyElevatedButton( + kolor: AppColor.blueColor, + title: 'Payment History'.tr, + onPressed: () { + Get.to(() => const PaymentHistoryPassengerPage(), + transition: Transition.size); + }, + ), + ], + ), + ) ], ), ), @@ -187,11 +60,11 @@ class PassengerWallet extends StatelessWidget { : const SizedBox()), GetBuilder( builder: (controller) => Positioned( - bottom: Get.height * .3, - left: Get.width * .3, - right: Get.width * .3, + bottom: Get.height * .2, + left: Get.width * .2, + right: Get.width * .2, child: MyElevatedButton( - title: 'Show Promos'.tr, + title: 'Show Promos to Charge'.tr, onPressed: () { controller.changePromoSheetDialogue(); }, @@ -202,3 +75,60 @@ class PassengerWallet extends StatelessWidget { ); } } + +class CardSeferWallet extends StatelessWidget { + const CardSeferWallet({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: Get.width * .85, + height: Get.height * .3, + decoration: BoxDecoration( + color: AppColor.deepPurpleAccent, + borderRadius: const BorderRadius.all(Radius.circular(12)), + gradient: const LinearGradient( + colors: [AppColor.blueColor, AppColor.primaryColor]), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Row( + children: [ + Text( + '${AppInformation.appName} Wallet', + style: AppStyle.headTitle + .copyWith(color: AppColor.primaryColor), + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + '${box.read(BoxName.passengerWalletTotal)} \$' ?? '0.0 \$', + style: AppStyle.headTitle2, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + box.read(BoxName.name), + style: AppStyle.title, + ) + ], + ) + ], + ), + ), + ], + ); + } +} diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart index bcf5a86..46d3779 100644 --- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart +++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart @@ -125,6 +125,7 @@ class PassengerWalletDialoge extends StatelessWidget { )), const Spacer(), MyElevatedButton( + kolor: AppColor.blueColor, title: 'Pay with Your PayPal'.tr, onPressed: () { if (controller.selectedAmount != 0) { diff --git a/lib/views/home/my_wallet/payment_history_passenger_page.dart b/lib/views/home/my_wallet/payment_history_passenger_page.dart new file mode 100644 index 0000000..eed688a --- /dev/null +++ b/lib/views/home/my_wallet/payment_history_passenger_page.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:ride/constant/colors.dart'; +import 'package:ride/constant/style.dart'; +import 'package:ride/controller/payment/passenger_wallet_history_controller.dart'; +import 'package:ride/views/widgets/my_scafold.dart'; +import 'package:ride/views/widgets/mycircular.dart'; + +class PaymentHistoryPassengerPage extends StatelessWidget { + const PaymentHistoryPassengerPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(PassengerWalletHistoryController()); + return MyScafolld( + title: 'Payment History'.tr, + body: [ + GetBuilder( + builder: (controller) => controller.isLoading + ? const MyCircularProgressIndicator() + : ListView.builder( + itemCount: controller.archive.length, + itemBuilder: (BuildContext context, int index) { + var list = controller.archive[index]; + return Padding( + padding: const EdgeInsets.all(4), + child: Container( + decoration: BoxDecoration( + color: double.parse(list['balance']) < 0 + ? AppColor.redColor.withOpacity(.4) + : AppColor.greenColor.withOpacity(.4)), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + list['balance'], + style: AppStyle.title, + ), + Text( + list['created_at'], + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ), + ) + ], + isleading: true); + } +}