From ebb57a699bf6dbcd85763890d8c87218ac7db3f7 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Fri, 4 Oct 2024 21:09:49 +0300 Subject: [PATCH] 2-10/4/1 --- android/app/build.gradle | 4 +- lib/constant/box_name.dart | 1 + .../home/captin/map_driver_controller.dart | 92 ++++++++--- .../home/captin/order_request_controller.dart | 23 +-- .../ride_available_controller.dart | 39 ++++- lib/views/auth/captin/contact_us_page.dart | 1 - .../Captin/home_captain/drawer_captain.dart | 2 +- .../widget/left_menu_map_captain.dart | 150 +++++++++--------- 8 files changed, 195 insertions(+), 117 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 41a0ed9..1246a23 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -54,8 +54,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdk = 23 targetSdk = flutter.targetSdkVersion - versionCode = 104 - versionName = '1.5.04' + versionCode = 105 + versionName = '1.5.05' multiDexEnabled =true } diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index 6817d85..3b70247 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -12,6 +12,7 @@ class BoxName { static const String phoneWallet = "phoneWallet"; static const String IsSavedPhones = "IsSavedPhones"; static const String carType = "carType"; + static const String carTypeOfDriver = "carTypeOfDriver"; static const String isFirstTime = "isFirstTime"; static const String deviceInfo = "deviceInfo"; static const String packagInfo = "packagInfo"; diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart index f177230..ca5d50a 100644 --- a/lib/controller/home/captin/map_driver_controller.dart +++ b/lib/controller/home/captin/map_driver_controller.dart @@ -171,16 +171,21 @@ class MapDriverController extends GetxController { cancelTripFromDriverAfterApplied() async { if (formKeyCancel.currentState!.validate()) { - CRUD().post(link: AppLink.updateRides, payload: { - "id": rideId.toString(), // Convert to String - "status": 'CancelFromDriverAfterApply' - }); - CRUD().post(link: AppLink.addCancelTripFromDriverAfterApplied, payload: { - "order_id": rideId.toString(), - "driver_id": box.read(BoxName.driverID).toString(), - "status": 'reject After Applied', - "notes": cancelTripCotroller.text.toString() - }); + CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/update.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'CancelFromDriverAfterApply' + }); + CRUD().post( + link: + "${AppLink.seferCairoServer}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", + payload: { + "order_id": rideId.toString(), + "driver_id": box.read(BoxName.driverID).toString(), + "status": 'reject After Applied', + "notes": cancelTripCotroller.text.toString() + }); FirebaseMessagesController().sendNotificationToDriverMAP( "Cancel Trip from driver".tr, "Trip Cancelled from driver. We are looking for a new driver. Please wait." @@ -189,6 +194,38 @@ class MapDriverController extends GetxController { [], 'cancel.wav', ); + CRUD().post( + link: "${AppLink.seferGizaServer}/ride/rides/update.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'CancelFromDriverAfterApply' + }); + CRUD().post( + link: "${AppLink.seferAlexandriaServer}/ride/rides/update.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'CancelFromDriverAfterApply' + }); + + CRUD().post( + link: + "${AppLink.seferGizaServer}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", + payload: { + "order_id": rideId.toString(), + "driver_id": box.read(BoxName.driverID).toString(), + "status": 'reject After Applied', + "notes": cancelTripCotroller.text.toString() + }); + CRUD().post( + link: + "${AppLink.seferAlexandriaServer}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", + payload: { + "order_id": rideId.toString(), + "driver_id": box.read(BoxName.driverID).toString(), + "status": 'reject After Applied', + "notes": cancelTripCotroller.text.toString() + }); + sql.insertData({ 'order_id': rideId, 'created_at': DateTime.now().toString(), @@ -256,14 +293,32 @@ class MapDriverController extends GetxController { void driverGoToPassenger() async { changeRideToBeginToPassenger(); - await CRUD().post(link: AppLink.updateRides, payload: { - 'id': rideId, - 'driverGoToPassengerTime': DateTime.now().toString(), - 'status': 'Applied' - }); + box.write(BoxName.rideStatus, 'Applied'); + update(); + await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/update.php", + payload: { + 'id': rideId, + 'driverGoToPassengerTime': DateTime.now().toString(), + 'status': 'Applied' + }); + CRUD().post( + link: "${AppLink.seferGizaServer}/ride/rides/update.php", + payload: { + 'id': rideId, + 'driverGoToPassengerTime': DateTime.now().toString(), + 'status': 'Applied' + }); + CRUD().post( + link: "${AppLink.seferAlexandriaServer}/ride/rides/update.php", + payload: { + 'id': rideId, + 'driverGoToPassengerTime': DateTime.now().toString(), + 'status': 'Applied' + }); // Get.find().changeToAppliedRide('Applied'); - box.write(BoxName.rideStatus, 'Applied'); + FirebaseMessagesController().sendNotificationToAnyWithoutData( 'DriverIsGoingToPassenger', box.read(BoxName.name).toString(), @@ -328,7 +383,7 @@ class MapDriverController extends GetxController { double _distance = await calculateDistanceBetweenDriverAndPassengerLocation(); - if (_distance < 60) { + if (_distance < 70) { changeRideToBeginToPassenger(); isPassengerInfoWindow = false; isRideStarted = true; @@ -594,7 +649,8 @@ class MapDriverController extends GetxController { paymentAmount = totalCost; box.write(BoxName.statusDriverLocation, 'off'); // changeRideToBeginToPassenger(); - await CRUD().post(link: AppLink.updateRides, payload: { + await CRUD() + .post(link: "${AppLink.seferCairoServer}/rides/update.php", payload: { 'id': rideId, 'rideTimeFinish': DateTime.now().toString(), 'status': 'Finished', diff --git a/lib/controller/home/captin/order_request_controller.dart b/lib/controller/home/captin/order_request_controller.dart index 76c9a9d..c0aef3f 100644 --- a/lib/controller/home/captin/order_request_controller.dart +++ b/lib/controller/home/captin/order_request_controller.dart @@ -75,16 +75,16 @@ class OrderRequestController extends GetxController { } void getRefusedOrderByCaptain() async { - DateTime today = DateTime.now(); - int todayDay = today.day; + // Get today's date in YYYY-MM-DD format + String today = DateTime.now().toString().substring(0, 10); String driverId = box.read(BoxName.driverID).toString(); String customQuery = ''' - SELECT COUNT(*) AS count + SELECT COUNT(*) AS count FROM ${TableName.driverOrdersRefuse} WHERE driver_id = '$driverId' - AND created_at LIKE '%$todayDay%' + AND DATE(created_at) = '$today' '''; try { @@ -114,21 +114,6 @@ class OrderRequestController extends GetxController { } catch (e) {} } - void getSQL() async { - DateTime today = DateTime.now(); - int todayDay = today.day; - - String driverId = box.read(BoxName.driverID).toString(); - - String customQuery = ''' - SELECT * - FROM ${TableName.driverOrdersRefuse} - WHERE driver_id = '$driverId' - AND created_at LIKE '%$todayDay%' - '''; - List> results = await sql.getCustomQuery(customQuery); - } - bool _timerActive = false; Future startTimer(String driverID, String orderID) async { diff --git a/lib/controller/notification/ride_available_controller.dart b/lib/controller/notification/ride_available_controller.dart index 578d3dd..37c9b46 100644 --- a/lib/controller/notification/ride_available_controller.dart +++ b/lib/controller/notification/ride_available_controller.dart @@ -1,19 +1,56 @@ import 'dart:convert'; +import 'dart:math'; +import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/style.dart'; +import 'package:SEFER/controller/functions/location_controller.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; import '../../constant/links.dart'; +import '../../main.dart'; import '../../views/widgets/mydialoug.dart'; import '../functions/crud.dart'; class RideAvailableController extends GetxController { bool isLoading = false; Map rideAvailableMap = {}; + late LatLng southwest; + late LatLng northeast; + LatLngBounds calculateBounds( + double centerLat, double centerLng, double radius) { + // double radius = 4000; // 10 km in meters + + southwest = LatLng( + centerLat - (radius / 111000), + centerLng - (radius / (111000 * cos(centerLat))), + ); + + northeast = LatLng( + centerLat + (radius / 111000), + centerLng + (radius / (111000 * cos(centerLat))), + ); + + return LatLngBounds(southwest: southwest, northeast: northeast); + } + getRideAvailable() async { isLoading = true; - var res = await CRUD().get(link: AppLink.getRideWaiting, payload: {}); + LatLngBounds bounds = calculateBounds( + Get.find().myLocation.latitude, + Get.find().myLocation.longitude, + 4000); + var res = await CRUD().get( + link: AppLink.getRideWaiting, + payload: { + "carType": box.read(BoxName.carTypeOfDriver), + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }, + ); if (res != 'failure') { rideAvailableMap = jsonDecode(res); isLoading = false; diff --git a/lib/views/auth/captin/contact_us_page.dart b/lib/views/auth/captin/contact_us_page.dart index e8ca787..8b0a738 100644 --- a/lib/views/auth/captin/contact_us_page.dart +++ b/lib/views/auth/captin/contact_us_page.dart @@ -1,6 +1,5 @@ import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; -import 'package:SEFER/controller/functions/launch.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/home/Captin/home_captain/drawer_captain.dart b/lib/views/home/Captin/home_captain/drawer_captain.dart index 0130b32..3a768e3 100644 --- a/lib/views/home/Captin/home_captain/drawer_captain.dart +++ b/lib/views/home/Captin/home_captain/drawer_captain.dart @@ -180,7 +180,7 @@ class UserAccountHeader extends StatelessWidget { image: DecorationImage( fit: BoxFit.cover, image: NetworkImage( - '${AK.serverPHP}/portrate_captain_image/${box.read(BoxName.driverID)}.jpg', + '${AppLink.seferCairoServer}/portrate_captain_image/${box.read(BoxName.driverID)}.jpg', ), ), ), diff --git a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart index 7659adf..9da28a8 100644 --- a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart +++ b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart @@ -212,82 +212,82 @@ GetBuilder leftMainMenuCaptainIcons() { }), ) : const SizedBox(), - AnimatedContainer( - duration: const Duration(microseconds: 200), - width: controller.widthMapTypeAndTraffic, - decoration: BoxDecoration( - color: AppColor.secondaryColor, - border: Border.all(color: AppColor.blueColor), - borderRadius: BorderRadius.circular(15)), - child: Builder(builder: (context) { - return IconButton( - onPressed: () async { - Get.to(() => LoginCaptin()); - // print(box.read(BoxName.myList)); + // AnimatedContainer( + // duration: const Duration(microseconds: 200), + // width: controller.widthMapTypeAndTraffic, + // decoration: BoxDecoration( + // color: AppColor.secondaryColor, + // border: Border.all(color: AppColor.blueColor), + // borderRadius: BorderRadius.circular(15)), + // child: Builder(builder: (context) { + // return IconButton( + // onPressed: () async { + // Get.to(() => LoginCaptin()); + // // print(box.read(BoxName.myList)); - // List d = [ - // "30.003028,31.2419628", - // "30.0955661,31.2665336", - // "160.00", - // "25.92", - // "1488", - // "16.93", - // "114243034311436865474", - // "113172279072358305645", - // "hamza ayed", - // "rlMbi4Hc8L1STMPE99iPKqK4Gddwv8r9qZOCadsz9qTEJZ6KLEE9ruTJI6N8dKfK4CXez5pme5WIs14-1QGo29s07fQOniZgIlJV5XFL3yqzPRSUmn3", - // "+201023248456", - // "1 min", - // "1 m", - // "false", - // "QwUMoyUtZ0J3oR6yXKUavrB_gBl9npUZe-qZtax-Raq4QBbdKv0AmtLKm0BfBd6N_592HBv4CVa41ii4122W3hr-BCUKKzJhzZcK8m0YjbWbtpvgJRD8uD_nuMk9", - // "0", - // "238", - // "false", - // "114243034311436865474", - // "1488", - // "startEnd", - // "30.049307749732176,31.274291574954987", - // "", - // "", - // "", - // "", - // "17.73", - // "0", - // "hamzaayedflutter@gmail.com", - // "الفسطاط، حي مصر القديمة، مصر", - // " الزاوية الحمراء، محافظة القاهرة، مصر", - // "Speed", - // "8", - // "5.00" - // ]; - // FirebaseMessagesController().sendNotificationToDriverMAP( - // 'Order'.tr, - // 'from: ', - // // jsonDecode(value)['message'].toString(), - // 'fKBBB4_1R0q18-byySHUeG:APA91bHk2RmjjMt6eKr7KQnqh4CK02yW3H5E8g_beVcQFgiCG50j9KCtSU1O8PtvS_gA5xuJLhaorDV9AeslcyLFJFf302tICKMiKgsDP5pWkF5WXNw0-4NsoD-BnJxf0-Do9Vs1Zbpq', - // d, - // 'order.wav'); - // NotificationController() - // .showNotification('VIP Order'.tr, '', 'order', ''); - // try {} catch (e) { - // print('Error showing overlay: $e'); - // } - // final Bubble _bubble = Bubble(showCloseButton: true); - // try { - // await _bubble.startBubbleHead(sendAppToBackground: false); - // } on PlatformException { - // print('Failed to call startBubbleHead'); - // } - }, - icon: const Icon( - FontAwesome5.grin_tears, - size: 29, - color: AppColor.blueColor, - ), - ); - }), - ), + // // List d = [ + // // "30.003028,31.2419628", + // // "30.0955661,31.2665336", + // // "160.00", + // // "25.92", + // // "1488", + // // "16.93", + // // "114243034311436865474", + // // "113172279072358305645", + // // "hamza ayed", + // // "rlMbi4Hc8L1STMPE99iPKqK4Gddwv8r9qZOCadsz9qTEJZ6KLEE9ruTJI6N8dKfK4CXez5pme5WIs14-1QGo29s07fQOniZgIlJV5XFL3yqzPRSUmn3", + // // "+201023248456", + // // "1 min", + // // "1 m", + // // "false", + // // "QwUMoyUtZ0J3oR6yXKUavrB_gBl9npUZe-qZtax-Raq4QBbdKv0AmtLKm0BfBd6N_592HBv4CVa41ii4122W3hr-BCUKKzJhzZcK8m0YjbWbtpvgJRD8uD_nuMk9", + // // "0", + // // "238", + // // "false", + // // "114243034311436865474", + // // "1488", + // // "startEnd", + // // "30.049307749732176,31.274291574954987", + // // "", + // // "", + // // "", + // // "", + // // "17.73", + // // "0", + // // "hamzaayedflutter@gmail.com", + // // "الفسطاط، حي مصر القديمة، مصر", + // // " الزاوية الحمراء، محافظة القاهرة، مصر", + // // "Speed", + // // "8", + // // "5.00" + // // ]; + // // FirebaseMessagesController().sendNotificationToDriverMAP( + // // 'Order'.tr, + // // 'from: ', + // // // jsonDecode(value)['message'].toString(), + // // 'fKBBB4_1R0q18-byySHUeG:APA91bHk2RmjjMt6eKr7KQnqh4CK02yW3H5E8g_beVcQFgiCG50j9KCtSU1O8PtvS_gA5xuJLhaorDV9AeslcyLFJFf302tICKMiKgsDP5pWkF5WXNw0-4NsoD-BnJxf0-Do9Vs1Zbpq', + // // d, + // // 'order.wav'); + // // NotificationController() + // // .showNotification('VIP Order'.tr, '', 'order', ''); + // // try {} catch (e) { + // // print('Error showing overlay: $e'); + // // } + // // final Bubble _bubble = Bubble(showCloseButton: true); + // // try { + // // await _bubble.startBubbleHead(sendAppToBackground: false); + // // } on PlatformException { + // // print('Failed to call startBubbleHead'); + // // } + // }, + // icon: const Icon( + // FontAwesome5.grin_tears, + // size: 29, + // color: AppColor.blueColor, + // ), + // ); + // }), + // ), const SizedBox( height: 5, ),