diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index f72a32c..1d3c8e0 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -481,7 +481,7 @@ class MyTranslation extends Translations { 'Accept Order': "‏اقبل الطلب", 'reject your order.': "رفض طلبك.", 'Bottom Bar Example': "مثال لشريط الأسفل", - 'Statistics': "الإحصائيات", + 'Statistics': "الإحصائيات",'Available for rides':'‏مشاوير متاحة', 'Scan Id': "مسح الهوية", 'Camera not initilaized yet': "الكاميرا لم تُثبت بعد", 'Scan ID MklGoogle': "مسح هوية MklGoogle", diff --git a/lib/controller/notification/ride_available_controller.dart b/lib/controller/notification/ride_available_controller.dart new file mode 100644 index 0000000..f1f8598 --- /dev/null +++ b/lib/controller/notification/ride_available_controller.dart @@ -0,0 +1,27 @@ +import 'dart:convert'; + +import 'package:get/get.dart'; + +import '../../constant/links.dart'; +import '../functions/crud.dart'; + +class RideAvailableController extends GetxController { + bool isLoading = false; + Map rideAvalibleMap = {}; + getRideAvalible() async { + isLoading = true; + var res = await CRUD().get(link: AppLink.getRideWaiting, payload: {}); + if (res != 'failure') { + rideAvalibleMap = jsonDecode(res); + print(rideAvalibleMap); + isLoading = false; + update(); + } + } + + @override + void onInit() { + getRideAvalible(); + super.onInit(); + } +} diff --git a/lib/views/home/Captin/history/history_captain.dart b/lib/views/home/Captin/history/history_captain.dart index ead8b78..c69b14a 100644 --- a/lib/views/home/Captin/history/history_captain.dart +++ b/lib/views/home/Captin/history/history_captain.dart @@ -18,83 +18,78 @@ class HistoryCaptain extends StatelessWidget { title: 'History Page'.tr, body: [ GetBuilder( - builder: (historyCaptainController) => Expanded( - child: historyCaptainController.isloading - ? const MyCircularProgressIndicator() - : ListView.builder( - itemCount: historyCaptainController - .historyData['message'].length, - itemBuilder: (BuildContext context, int index) { - var list = historyCaptainController - .historyData['message'][index]; - return InkWell( - onTap: () { - list['status'] != 'Cancel' - ? historyCaptainController - .getHistoryDetails(list['order_id']) - : Get.defaultDialog( - title: 'This Trip Cancelled'.tr, - middleText: '', - titleStyle: AppStyle.title, - confirm: MyElevatedButton( - title: 'Ok'.tr, - onPressed: () => Get.back())); - }, - child: Card( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Text( - 'OrderId'.tr, - style: AppStyle.title, - ), - Text( - list['order_id'], - style: AppStyle.subtitle, - ), - ], - ), - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Text( - 'created time'.tr, - style: AppStyle.title, - ), - Text( - list['created_at'], - style: AppStyle.subtitle, - ), - ], - ), - Text( - list['status'], - style: list['status'] == 'Apply' - ? AppStyle.title.copyWith( - color: AppColor.greenColor) - : list['status'] == 'Refused' - ? AppStyle.title.copyWith( - color: AppColor.redColor) - : AppStyle.title.copyWith( - color: - AppColor.yellowColor), - ), - ], - ), + builder: (historyCaptainController) => historyCaptainController + .isloading + ? const MyCircularProgressIndicator() + : ListView.builder( + itemCount: + historyCaptainController.historyData['message'].length, + itemBuilder: (BuildContext context, int index) { + var list = historyCaptainController.historyData['message'] + [index]; + return InkWell( + onTap: () { + list['status'] != 'Cancel' + ? historyCaptainController + .getHistoryDetails(list['order_id']) + : Get.defaultDialog( + title: 'This Trip Cancelled'.tr, + middleText: '', + titleStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () => Get.back())); + }, + child: Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'OrderId'.tr, + style: AppStyle.title, + ), + Text( + list['order_id'], + style: AppStyle.subtitle, + ), + ], ), - ), - ); - }, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'created time'.tr, + style: AppStyle.title, + ), + Text( + list['created_at'], + style: AppStyle.subtitle, + ), + ], + ), + Text( + list['status'], + style: list['status'] == 'Apply' + ? AppStyle.title + .copyWith(color: AppColor.greenColor) + : list['status'] == 'Refused' + ? AppStyle.title.copyWith( + color: AppColor.redColor) + : AppStyle.title.copyWith( + color: AppColor.yellowColor), + ), + ], + ), + ), ), - )) + ); + }, + )) ], isleading: true, ); diff --git a/lib/views/home/Captin/home_captain/drawer_captain.dart b/lib/views/home/Captin/home_captain/drawer_captain.dart index e03676c..e343b80 100644 --- a/lib/views/home/Captin/home_captain/drawer_captain.dart +++ b/lib/views/home/Captin/home_captain/drawer_captain.dart @@ -2,10 +2,9 @@ import 'package:SEFER/constant/api_key.dart'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/home/captin/home_captain_controller.dart'; +import 'package:SEFER/views/notification/available_rides_page.dart'; import 'package:SEFER/views/widgets/mycircular.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; import 'package:get/get.dart'; @@ -145,6 +144,15 @@ class DrawerCaptain extends StatelessWidget { // Handle history of trip item tap }, ), + ListTile( + leading: const Icon(Icons.phonelink_ring_rounded), + title: Text('Available for rides'.tr), + onTap: () { + Get.to(() => const AvailableRidesPage(), + transition: Transition.rightToLeftWithFade); + // Handle history of trip item tap + }, + ), ListTile( leading: const Icon(Icons.notifications), title: Text('Notifications'.tr), diff --git a/lib/views/home/Captin/orderCaptin/order_request_page.dart b/lib/views/home/Captin/orderCaptin/order_request_page.dart index 2e41390..204f179 100644 --- a/lib/views/home/Captin/orderCaptin/order_request_page.dart +++ b/lib/views/home/Captin/orderCaptin/order_request_page.dart @@ -399,8 +399,8 @@ class OrderRequestPage extends StatelessWidget { ); orderRequestController.addRideToNotificationDriverString( myList[16].toString(), - myList[0].toString(), - myList[1].toString(), + myList[29].toString(), + myList[30].toString(), '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}', '${DateTime.now().hour}:${DateTime.now().minute}', myList[2].toString(), diff --git a/lib/views/notification/available_rides_page.dart b/lib/views/notification/available_rides_page.dart new file mode 100644 index 0000000..a681fa5 --- /dev/null +++ b/lib/views/notification/available_rides_page.dart @@ -0,0 +1,76 @@ +import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/constant/style.dart'; +import 'package:SEFER/controller/notification/ride_available_controller.dart'; +import 'package:SEFER/views/widgets/my_scafold.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class AvailableRidesPage extends StatelessWidget { + const AvailableRidesPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RideAvailableController()); + return GetBuilder( + builder: (rideAvailableController) { + return MyScafolld( + title: 'Available for rides'.tr, + body: [ + rideAvailableController.rideAvalibleMap['message'].length < 1 + ? ListView.builder( + itemCount: rideAvailableController + .rideAvalibleMap['message'].length, + itemBuilder: (BuildContext context, int index) { + var list = rideAvailableController + .rideAvalibleMap['message'][index]; + return Container( + decoration: AppStyle.boxDecoration1, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + 'Price: ${list['start_location']}', + style: AppStyle.title, + ), + Text( + 'Price: ${list['end_location']}', + style: AppStyle.title, + ), + const SizedBox(height: 4), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text('${'Price:'.tr}${list['price']} \$'), + const SizedBox(height: 4), + Text( + '${list['carType']}', + style: AppStyle.title + .copyWith(color: AppColor.greenColor), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text('📈 ${list['passengerRate']}', + style: AppStyle.title), + const SizedBox(height: 4), + Text( + '📍 ${list['distance']}${'KM'.tr}', + style: AppStyle.title + .copyWith(color: AppColor.greenColor), + ), + ], + ) + ], + ), + ); + }) + : Center( + child: Text('text'), + ) + ], + isleading: true); + }); + } +}