25-5-30/1

This commit is contained in:
Hamza-Ayed
2025-05-30 16:57:40 +03:00
parent f3ada31b3b
commit ce3ae01a75
64 changed files with 857 additions and 939 deletions

View File

@@ -1,8 +1,10 @@
import 'dart:io';
import 'package:sefer_driver/constant/box_name.dart';
import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart';
import 'package:sefer_driver/controller/firebase/local_notification.dart';
import 'package:sefer_driver/main.dart';
import 'package:sefer_driver/views/auth/captin/cards/sms_signup.dart';
import 'package:sefer_driver/views/home/Captin/orderCaptin/vip_order_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
@@ -50,7 +52,7 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
// '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}',
// '');
NotificationController1().showNotification(
'Sefer Driver'.tr,
'Tripz Driver'.tr,
'${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}',
'ding',
'');
@@ -93,46 +95,26 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
)
: const SizedBox(),
// : 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 {
// print("Current working directory: ${Directory.current.path}");
// print(
// "pubspec.yaml exists here?: ${await File('${Directory.current.path}/pubspec.yaml').exists()}");
// try {
// await LingoHunter.extractAndCreateTranslationFiles(
// baseLang: 'en',
// langs: ['ar', 'fr', 'es'],
// // Remove projectDirectory: Let it auto-detect.
// // projectDirectory: '/Users/hamzaaleghwairyeen/development/App/driver_sefer',
// outputDirectory:
// '/Users/hamzaaleghwairyeen/development/App/driver_sefer/assets/lang',
// additionalRegExps: [
// RegExp(r'translate\("([^\"]+)"\)'),
// ],
// );
// print(
// "✅ Translation files generated successfully (auto-detected).");
// } catch (e) {
// print("Error: $e");
// }
// },
// icon: const Icon(
// FontAwesome5.grin_tears,
// size: 29,
// color: AppColor.blueColor,
// ),
// );
// }),
// ),
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 {
print(box.read(BoxName.paymentLink));
},
icon: const Icon(
FontAwesome5.grin_tears,
size: 29,
color: AppColor.blueColor,
),
);
}),
),
const SizedBox(
height: 5,

View File

@@ -327,25 +327,7 @@ class OrderSpeedRequest extends StatelessWidget {
'driver_id': box.read(BoxName.driverID),
});
}
// .then((value) {
// var json = jsonDecode(res);
if (res == "failure") {
Get.defaultDialog(
title:
"This ride is already taken by another driver."
.tr,
middleText: '',
titleStyle: AppStyle.title,
middleTextStyle: AppStyle.title,
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () {
Get.back();
Get.back();
// Get.back();
}));
} else if (jsonDecode(res)['status'] == "success") {
if (res != "failure") {
box.write(BoxName.statusDriverLocation, 'on');
orderRequestController.changeApplied();
List<String> bodyToPassenger = [
@@ -357,33 +339,29 @@ class OrderSpeedRequest extends StatelessWidget {
.sendNotificationToPassengerToken(
'Accepted Ride',
'your ride is applied'.tr,
// arguments['DriverList'][9].toString(),
orderRequestController
.arguments['DriverList'][9]
.toString(),
// box.read(BoxName.tokenDriver).toString(),
bodyToPassenger,
'start.wav');
await CRUD().postFromDialogue(
CRUD().postFromDialogue(
link: AppLink.addDriverOrder,
payload: {
'driver_id': orderRequestController.myList[6]
.toString(),
// box.read(BoxName.driverID).toString(),
'order_id':
orderRequestController.body.toString(),
'status': 'Apply'
});
await CRUD().postFromDialogue(
link: AppLink.addDriverOrder,
payload: {
'driver_id': orderRequestController.myList[6]
.toString(),
// box.read(BoxName.driverID).toString(),
'order_id': orderRequestController.myList[16]
.toString(),
'status': 'Apply'
});
// CRUD().postFromDialogue(
// link: AppLink.addDriverOrder,
// payload: {
// 'driver_id': orderRequestController.myList[6]
// .toString(),
// 'order_id': orderRequestController.myList[16]
// .toString(),
// 'status': 'Apply'
// });
if (AppLink.endPoint != AppLink.seferCairoServer) {
CRUD().post(
@@ -402,9 +380,6 @@ class OrderSpeedRequest extends StatelessWidget {
}
Get.back();
// 'Arguments passed to PassengerLocationMapPage:');
// 'Payment Method: ${orderRequestController.myList[13] == 'true' ? 'visa' : 'cash'}');
box.write(BoxName.rideArguments, {
'passengerLocation':
orderRequestController.myList[0].toString(),
@@ -473,6 +448,21 @@ class OrderSpeedRequest extends StatelessWidget {
});
Get.to(() => PassengerLocationMapPage(),
arguments: box.read(BoxName.rideArguments));
} else {
Get.defaultDialog(
title:
"This ride is already taken by another driver."
.tr,
middleText: '',
titleStyle: AppStyle.title,
middleTextStyle: AppStyle.title,
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () {
Get.back();
Get.back();
// Get.back();
}));
}
// });
// Get.back();

View File

@@ -195,7 +195,7 @@ class WalletCaptain extends StatelessWidget {
_buildPromoCard(
title: 'Morning Promo'.tr,
timePromo: 'Morning Promo',
count: int.parse(captainWalletController
count: (captainWalletController
.walletDate['message'][0]
['morning_count']),
maxCount: 5,
@@ -208,7 +208,7 @@ class WalletCaptain extends StatelessWidget {
_buildPromoCard(
timePromo: 'Afternoon Promo',
title: 'Afternoon Promo'.tr,
count: int.parse(captainWalletController
count: (captainWalletController
.walletDate['message'][0]
['afternoon_count']),
maxCount: 5,

View File

@@ -0,0 +1,89 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../controller/home/captin/behavior_controller.dart';
class BehaviorPage extends StatelessWidget {
const BehaviorPage({
super.key,
});
@override
Widget build(BuildContext context) {
final controller = Get.put(DriverBehaviorController());
controller.fetchDriverBehavior();
return Scaffold(
appBar: AppBar(
title: Text('Driver Behavior'.tr),
centerTitle: true,
),
body: Obx(() {
if (controller.isLoading.value) {
return const Center(child: CircularProgressIndicator());
}
return SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)),
elevation: 4,
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
const Text("Overall Behavior Score",
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.bold)),
const SizedBox(height: 10),
Text(
"${controller.overallScore.value.toStringAsFixed(1)} / 100",
style: const TextStyle(
fontSize: 28, color: Colors.blue)),
],
),
),
),
const SizedBox(height: 20),
const Text("Last 10 Trips",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
const SizedBox(height: 10),
ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: controller.lastTrips.length,
itemBuilder: (context, index) {
var trip = controller.lastTrips[index];
return Card(
elevation: 3,
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.blue,
child: Text("${index + 1}",
style: const TextStyle(color: Colors.white)),
),
title: Text("Trip ID: ${trip['trip_id']}"),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Behavior Score: ${trip['behavior_score']}"),
Text("Max Speed: ${trip['max_speed']} km/h"),
Text("Hard Brakes: ${trip['hard_brakes']}"),
Text("Distance: ${trip['total_distance']} km"),
],
),
),
);
},
),
],
),
);
}),
);
}
}

View File

@@ -74,9 +74,7 @@ class CaptainsCars extends StatelessWidget {
padding: const EdgeInsets.symmetric(
horizontal: 4),
child: Text(
EncryptionHelper.instance
.decryptData(
car['car_plate']),
(car['car_plate']),
style: AppStyle.title,
),
),

View File

@@ -94,11 +94,8 @@ GetBuilder<AI> egyptCarLicenceFront() {
style: AppStyle.headTitle2),
IconButton(
onPressed: () async {
ai.allMethodForAI(
EncryptionHelper.instance.decryptData(
ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt,
'car_front');
ai.allMethodForAI((ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt, 'car_front');
},
icon: const Icon(Icons.refresh),
),
@@ -142,12 +139,8 @@ GetBuilder<AI> egyptCarLicenceFront() {
return Card(
child: InkWell(
onTap: () async {
ai.allMethodForAINewCar(
EncryptionHelper.instance
.decryptData(ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt1,
'car_front',
'carId'); //todo
ai.allMethodForAINewCar((ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt1, 'car_front', 'carId'); //todo
},
child: Column(
children: [
@@ -213,11 +206,8 @@ GetBuilder<AI> egyptCarLicenceBack() {
Text('Vehicle Details Back'.tr, style: AppStyle.headTitle2),
IconButton(
onPressed: () async {
ai.allMethodForAI(
EncryptionHelper.instance.decryptData(
ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt,
'car_back');
ai.allMethodForAI((ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt, 'car_back');
},
icon: const Icon(Icons.refresh),
),
@@ -286,11 +276,8 @@ GetBuilder<AI> egyptCarLicenceBack() {
return Card(
child: InkWell(
onTap: () async {
ai.allMethodForAI(
EncryptionHelper.instance
.decryptData(ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt,
'car_back');
ai.allMethodForAI((ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt, 'car_back');
},
child: Column(
children: [

View File

@@ -10,6 +10,7 @@ import 'package:sefer_driver/controller/profile/captain_profile_controller.dart'
import 'package:sefer_driver/views/widgets/my_scafold.dart';
import '../my_wallet/walet_captain.dart';
import 'behavior_page.dart';
import 'captains_cars.dart';
class ProfileCaptain extends StatelessWidget {
@@ -33,19 +34,38 @@ class ProfileCaptain extends StatelessWidget {
Material(
elevation: 2,
borderRadius: BorderRadius.circular(8),
child: InkWell(
onTap: () async {
addBankCodeEgypt(captainWalletController);
},
borderRadius: BorderRadius.circular(8),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 16, horizontal: 16),
child: Text(
'Add bank Account'.tr,
style: AppStyle.title,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
InkWell(
onTap: () async {
addBankCodeEgypt(captainWalletController);
},
borderRadius: BorderRadius.circular(8),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 16, horizontal: 16),
child: Text(
'Add bank Account'.tr,
style: AppStyle.title,
),
),
),
),
InkWell(
onTap: () async {
Get.to(() => BehaviorPage());
},
borderRadius: BorderRadius.circular(8),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 16, horizontal: 16),
child: Text(
'Show behavior page'.tr,
style: AppStyle.title,
),
),
),
],
),
),
const SizedBox(height: 15),
@@ -73,41 +93,28 @@ class ProfileCaptain extends StatelessWidget {
driverId:
controller.captainProfileData['driverID'] ??
'',
name: EncryptionHelper.instance.decryptData(
(controller.captainProfileData[
'first_name']) ??
'') +
' ' +
EncryptionHelper.instance.decryptData(
(controller.captainProfileData[
'last_name']) ??
''),
phoneNumber: EncryptionHelper.instance
.decryptData(controller
.captainProfileData['phone']) ??
name:
'${((controller.captainProfileData['first_name']) ?? '')} ${((controller.captainProfileData['last_name']) ?? '')}',
phoneNumber:
(controller.captainProfileData['phone']) ??
'',
email: (controller.captainProfileData['email']) ??
'',
email: EncryptionHelper.instance.decryptData(
controller.captainProfileData['email']) ??
birthdate: (controller
.captainProfileData['birthdate']) ??
'',
birthdate: EncryptionHelper.instance.decryptData(
controller
.captainProfileData['birthdate']) ??
'',
gender: EncryptionHelper.instance.decryptData(
controller
.captainProfileData['gender']) ??
'',
education: EncryptionHelper.instance.decryptData(
controller
.captainProfileData['education']) ??
gender:
(controller.captainProfileData['gender']) ??
'',
education: (controller
.captainProfileData['education']) ??
'',
carMake:
controller.captainProfileData['make'] ?? '',
carModel:
controller.captainProfileData['model'] ?? '',
carPlate: EncryptionHelper.instance.decryptData(
controller
.captainProfileData['car_plate']) ??
carPlate: (controller
.captainProfileData['car_plate']) ??
'',
carColor:
controller.captainProfileData['color'] ?? '',