This commit is contained in:
Hamza-Ayed
2023-12-14 23:09:46 +03:00
parent 2ff52420ce
commit c2fd1187d0
19 changed files with 523 additions and 195 deletions

View File

@@ -55,6 +55,14 @@ class AppLink {
static String getDriverPaymentPoints = "$ride/driverWallet/get.php"; static String getDriverPaymentPoints = "$ride/driverWallet/get.php";
static String getDriverpaymentToday = "$ride/payment/get.php"; static String getDriverpaymentToday = "$ride/payment/get.php";
static String getAllPaymentFromRide = "$ride/payment/getAllPayment.php"; static String getAllPaymentFromRide = "$ride/payment/getAllPayment.php";
//-----------------Passenger NotificationCaptain------------------
static String addNotificationPassenger =
"$ride/notificationPassenger/add.php";
static String getNotificationPassenger =
"$ride/notificationPassenger/get.php";
static String updateNotificationPassenger =
"$ride/notificationPassenger/update.php";
//-----------------Driver NotificationCaptain------------------ //-----------------Driver NotificationCaptain------------------
static String addNotificationCaptain = "$ride/notificationCaptain/add.php"; static String addNotificationCaptain = "$ride/notificationCaptain/add.php";
static String getNotificationCaptain = "$ride/notificationCaptain/get.php"; static String getNotificationCaptain = "$ride/notificationCaptain/get.php";
@@ -123,6 +131,7 @@ class AppLink {
//==================Blog============= //==================Blog=============
static String profile = '$server/ride/profile'; static String profile = '$server/ride/profile';
static String getprofile = "$profile/get.php"; static String getprofile = "$profile/get.php";
static String getCaptainProfile = "$profile/getCaptainProfile.php";
static String addprofile = "$profile/add.php"; static String addprofile = "$profile/add.php";
static String deleteprofile = "$profile/delete.php"; static String deleteprofile = "$profile/delete.php";
static String updateprofile = "$profile/update.php"; static String updateprofile = "$profile/update.php";
@@ -141,6 +150,7 @@ class AppLink {
static String sendVerifyEmailCaptin = "$authCaptin/sendVerifyEmail.php"; static String sendVerifyEmailCaptin = "$authCaptin/sendVerifyEmail.php";
static String verifyEmailCaptin = "$authCaptin/verifyEmail.php"; static String verifyEmailCaptin = "$authCaptin/verifyEmail.php";
static String removeUser = "$authCaptin/removeAccount.php"; static String removeUser = "$authCaptin/removeAccount.php";
static String deletecaptainAccounr = "$authCaptin/deletecaptainAccounr.php";
static String updateAccountBank = "$authCaptin/updateAccountBank.php"; static String updateAccountBank = "$authCaptin/updateAccountBank.php";
static String getAccount = "$authCaptin/getAccount.php"; static String getAccount = "$authCaptin/getAccount.php";
} }

View File

@@ -4,8 +4,10 @@ import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/constant/links.dart'; import 'package:ride/constant/links.dart';
import 'package:ride/constant/style.dart';
import 'package:ride/controller/functions/crud.dart'; import 'package:ride/controller/functions/crud.dart';
import 'package:ride/views/auth/login_page.dart'; import 'package:ride/views/auth/login_page.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
import '../../views/auth/verify_email_page.dart'; import '../../views/auth/verify_email_page.dart';
@@ -29,26 +31,27 @@ class RegisterController extends GetxController {
getBirthDate() { getBirthDate() {
Get.defaultDialog( Get.defaultDialog(
title: 'Select Date', title: 'Select Date',
content: SizedBox( titleStyle: AppStyle.title,
width: 300, content: SizedBox(
child: CalendarDatePicker( width: 300,
initialDate: DateTime.now().subtract(const Duration(days: 14 * 365)), child: CalendarDatePicker(
firstDate: DateTime.parse('1940-06-01'), initialDate:
lastDate: DateTime.now().subtract(const Duration(days: 14 * 365)), DateTime.now().subtract(const Duration(days: 14 * 365)),
onDateChanged: (date) { firstDate: DateTime.parse('1940-06-01'),
// Get the selected date and convert it to a DateTime object lastDate: DateTime.now().subtract(const Duration(days: 14 * 365)),
DateTime dateTime = date; onDateChanged: (date) {
// Call the getOrders() function from the controller // Get the selected date and convert it to a DateTime object
birthDate = dateTime.toString().split(' ')[0]; DateTime dateTime = date;
update(); // Call the getOrders() function from the controller
Get.back(); birthDate = dateTime.toString().split(' ')[0];
}, update();
},
// onDateChanged: (DateTime value) {}, // onDateChanged: (DateTime value) {},
),
), ),
), confirm: MyElevatedButton(title: 'Ok'.tr, onPressed: () => Get.back()));
);
} }
void changeGender(String value) { void changeGender(String value) {
@@ -75,7 +78,7 @@ class RegisterController extends GetxController {
'email': emailController.text.toString(), 'email': emailController.text.toString(),
'phone': phoneController.text.toString(), 'phone': phoneController.text.toString(),
'password': passwordController.text.toString(), 'password': passwordController.text.toString(),
'gender': gender, 'gender': 'yet',
'site': siteController.text, 'site': siteController.text,
'birthdate': birthDate, 'birthdate': birthDate,
}); });

View File

@@ -1,24 +1,81 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/basic.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/constant/box_name.dart'; import 'package:ride/constant/box_name.dart';
import 'package:ride/constant/colors.dart'; import 'package:ride/constant/colors.dart';
import 'package:ride/constant/links.dart'; import 'package:ride/constant/links.dart';
import 'package:ride/controller/functions/crud.dart'; import 'package:ride/controller/functions/crud.dart';
import 'package:ride/main.dart'; import 'package:ride/main.dart';
import 'package:ride/onbording_page.dart';
import 'package:ride/views/lang/languages.dart'; import 'package:ride/views/lang/languages.dart';
import 'package:ride/views/widgets/elevated_btn.dart'; import 'package:ride/views/widgets/elevated_btn.dart';
import 'package:ride/views/widgets/my_textField.dart';
import '../../constant/style.dart'; import '../../constant/style.dart';
class LogOut { class LogOut {
TextEditingController checkTxtController = TextEditingController();
final formKey = GlobalKey<FormState>();
Future deleteMyAccount(String id) async { Future deleteMyAccount(String id) async {
await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then( await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then(
(value) => Get.snackbar('Deleted', 'Your Account is Deleted', (value) => Get.snackbar('Deleted', 'Your Account is Deleted',
backgroundColor: AppColor.redColor)); backgroundColor: AppColor.redColor));
} }
Future logOut() async { checkBeforeDelete() async {
var res = await CRUD().post(
link: AppLink.deletecaptainAccounr,
payload: {'id': box.read(BoxName.driverID)}).then((value) => exit(0));
}
deletecaptainAccount() {
Get.defaultDialog(
backgroundColor: AppColor.yellowColor,
title: 'Are you sure to delete your account?'.tr,
middleText:
'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month ',
titleStyle: AppStyle.title,
content: Column(
children: [
Container(
width: Get.width,
decoration: AppStyle.boxDecoration,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month'
.tr,
style: AppStyle.title.copyWith(color: AppColor.redColor),
),
),
),
const SizedBox(
height: 20,
),
Form(
key: formKey,
child: SizedBox(
width: Get.width,
child: MyTextForm(
controller: checkTxtController,
label: 'Enter Your First Name'.tr,
hint: 'Enter Your First Name'.tr,
type: TextInputType.name,
),
))
],
),
confirm: MyElevatedButton(
title: 'Delete'.tr,
onPressed: () {
if (checkTxtController.text == box.read(BoxName.nameDriver)) {
deletecaptainAccount();
}
}));
}
Future logOutPassenger() async {
Get.defaultDialog( Get.defaultDialog(
title: 'Are you Sure to LogOut?'.tr, title: 'Are you Sure to LogOut?'.tr,
content: Row( content: Row(
@@ -42,7 +99,54 @@ class LogOut {
box.remove(BoxName.phone); box.remove(BoxName.phone);
box.remove(BoxName.tokenFCM); box.remove(BoxName.tokenFCM);
box.remove(BoxName.tokens); box.remove(BoxName.tokens);
Get.offAll(const Language()); Get.offAll(OnBoardingPage());
},
child: Text(
'Sign Out'.tr,
style:
AppStyle.title.copyWith(color: AppColor.secondaryColor),
))
],
));
}
Future logOutCaptain() async {
Get.defaultDialog(
title: 'Are you Sure to LogOut?'.tr,
titleStyle: AppStyle.title,
content: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyElevatedButton(
title: 'Cancel'.tr,
onPressed: () => Get.back(),
),
ElevatedButton(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(AppColor.redColor),
),
onPressed: () {
// box.remove(BoxName.agreeTerms);
box.remove(BoxName.driverID);
box.remove(BoxName.sexDriver);
box.remove(BoxName.dobDriver);
box.remove(BoxName.nameDriver);
box.remove(BoxName.emailDriver);
box.remove(BoxName.phoneDriver);
box.remove(BoxName.statusDriverLocation);
box.remove(BoxName.cvvCodeDriver);
box.remove(BoxName.lastNameDriver);
box.remove(BoxName.passwordDriver);
box.remove(BoxName.cardNumberDriver);
box.remove(BoxName.expiryDateDriver);
box.remove(BoxName.cardHolderNameDriver);
box.remove(BoxName.vin);
box.remove(BoxName.make);
box.remove(BoxName.year);
box.remove(BoxName.owner);
box.remove(BoxName.onBoarding);
box.remove(BoxName.agreeTerms);
Get.offAll(OnBoardingPage());
}, },
child: Text( child: Text(
'Sign Out'.tr, 'Sign Out'.tr,

View File

@@ -6,6 +6,8 @@ import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart'; import 'package:google_polyline_algorithm/google_polyline_algorithm.dart';
import 'package:location/location.dart'; import 'package:location/location.dart';
import 'package:ride/constant/colors.dart';
import 'package:ride/constant/style.dart';
import 'package:ride/views/home/map_page_passenger.dart'; import 'package:ride/views/home/map_page_passenger.dart';
import '../../constant/api_key.dart'; import '../../constant/api_key.dart';
import '../../constant/box_name.dart'; import '../../constant/box_name.dart';
@@ -273,77 +275,88 @@ class MapPassengerController extends GetxController {
} }
changeConfirmRide() async { changeConfirmRide() async {
PaymentController paymentController = Get.find<PaymentController>(); if (dataCarsLocationByPassenger != 'failure') {
rideConfirm = true; driverToken =
shouldFetch = true; dataCarsLocationByPassenger['message'][carsOrder]['token'].toString();
isBottomSheetShown = false; PaymentController paymentController = Get.find<PaymentController>();
timeToPassengerFromDriverAfterApplied = 60; rideConfirm = true;
driverToken = shouldFetch = true;
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(); isBottomSheetShown = false;
update(); timeToPassengerFromDriverAfterApplied = 60;
// print('rideConfirm= $rideConfirm');
await getCarsLocationByPassenger();
await CRUD().post(link: AppLink.addRides, payload: {
"start_location": //'${data[0]['start_address']}',
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
"end_location": //'${data[0]['end_address']}',
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
"date": DateTime.now().toString(),
"time": DateTime.now().toString(),
"endtime": durationToAdd.toString(),
"price": totalPassenger.toString(),
"passenger_id": box.read(BoxName.passengerID).toString(),
"driver_id": dataCarsLocationByPassenger['message'][carsOrder]
['driver_id']
.toString(),
"status": "waiting",
"price_for_driver": totalDriver.toString(),
"price_for_passenger": totalME.toString(),
"distance": distance.toString()
}).then((value) {
// print(jsonDecode(value)['message']);
// List<String> body = [
rideId = jsonDecode(value)['message'];
List<String> body = [
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
totalPassenger.toString(),
totalDriver.toString(),
duration.toString(),
distance.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
.toString(),
box.read(BoxName.passengerID).toString(),
box.read(BoxName.name).toString(),
box.read(BoxName.tokenFCM).toString(),
box.read(BoxName.phone).toString(),
durationByPassenger.toString(),
distanceByPassenger.toString(),
paymentController.isWalletChecked.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
duration1.toString(),
rideId,
rideTimerBegin.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
.toString(),
durationToRide.toString()
];
FirebaseMessagesController().sendNotificationToDriverMAP(
'Order',
jsonDecode(value)['message'].toString(),
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
body,
);
// print(dataCarsLocationByPassenger);
// print(dataCarsLocationByPassenger['message'][0]['token'].toString());
});
delayAndFetchRideStatus(rideId);
if (shouldFetch == false) {
startTimer();
update(); update();
// print('rideConfirm= $rideConfirm');
await getCarsLocationByPassenger();
await CRUD().post(link: AppLink.addRides, payload: {
"start_location": //'${data[0]['start_address']}',
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
"end_location": //'${data[0]['end_address']}',
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
"date": DateTime.now().toString(),
"time": DateTime.now().toString(),
"endtime": durationToAdd.toString(),
"price": totalPassenger.toString(),
"passenger_id": box.read(BoxName.passengerID).toString(),
"driver_id": dataCarsLocationByPassenger['message'][carsOrder]
['driver_id']
.toString(),
"status": "waiting",
"price_for_driver": totalDriver.toString(),
"price_for_passenger": totalME.toString(),
"distance": distance.toString()
}).then((value) {
// print(jsonDecode(value)['message']);
// List<String> body = [
rideId = jsonDecode(value)['message'];
List<String> body = [
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
totalPassenger.toString(),
totalDriver.toString(),
duration.toString(),
distance.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
.toString(),
box.read(BoxName.passengerID).toString(),
box.read(BoxName.name).toString(),
box.read(BoxName.tokenFCM).toString(),
box.read(BoxName.phone).toString(),
durationByPassenger.toString(),
distanceByPassenger.toString(),
paymentController.isWalletChecked.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
duration1.toString(),
rideId,
rideTimerBegin.toString(),
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
.toString(),
durationToRide.toString()
];
FirebaseMessagesController().sendNotificationToDriverMAP(
'Order',
jsonDecode(value)['message'].toString(),
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
body,
);
// print(dataCarsLocationByPassenger);
// print(dataCarsLocationByPassenger['message'][0]['token'].toString());
});
delayAndFetchRideStatus(rideId);
if (shouldFetch == false) {
startTimer();
update();
}
update();
} else {
Get.defaultDialog(
title: 'No Car or Captain Found in your area.'.tr,
titleStyle: AppStyle.title,
middleText: 'Please Try anther time '.tr,
middleTextStyle: AppStyle.title.copyWith(color: AppColor.yellowColor),
confirm:
MyElevatedButton(title: 'Ok'.tr, onPressed: () => Get.back()));
} }
update();
} }
void delayAndFetchRideStatus(String rideId) { void delayAndFetchRideStatus(String rideId) {
@@ -446,6 +459,7 @@ class MapPassengerController extends GetxController {
}); });
if (res == 'failure') { if (res == 'failure') {
noCarString = true; noCarString = true;
dataCarsLocationByPassenger = res;
update(); update();
// Get.snackbar('No Car in your site.Sorry!'.tr, '', // Get.snackbar('No Car in your site.Sorry!'.tr, '',
// backgroundColor: AppColor.redColor); // backgroundColor: AppColor.redColor);

View File

@@ -5,10 +5,10 @@ import 'package:ride/constant/style.dart';
import 'package:ride/constant/table_names.dart'; import 'package:ride/constant/table_names.dart';
import 'package:ride/views/widgets/elevated_btn.dart'; import 'package:ride/views/widgets/elevated_btn.dart';
import '../../../constant/box_name.dart'; import '../../constant/box_name.dart';
import '../../../constant/links.dart'; import '../../constant/links.dart';
import '../../../main.dart'; import '../../main.dart';
import '../../functions/crud.dart'; import '../functions/crud.dart';
class NotificationCaptainController extends GetxController { class NotificationCaptainController extends GetxController {
bool isloading = false; bool isloading = false;

View File

@@ -0,0 +1,67 @@
import 'dart:convert';
import 'package:get/get.dart';
import 'package:ride/controller/firebase/firbase_messge.dart';
import '../../constant/box_name.dart';
import '../../constant/links.dart';
import '../../constant/style.dart';
import '../../main.dart';
import '../../views/widgets/elevated_btn.dart';
import '../functions/crud.dart';
class PassengerNotificationController extends GetxController {
bool isloading = false;
Map notificationData = {};
getNotifications() async {
isloading = true;
update();
var res = await CRUD().get(
link: AppLink.getNotificationPassenger,
payload: {'passenger_id': box.read(BoxName.passengerID)});
if (res == "failure") {
// print(res);
Get.defaultDialog(
title: 'There is no notification yet'.tr,
titleStyle: AppStyle.title,
middleText: '',
confirm: MyElevatedButton(
title: 'Back',
onPressed: () {
Get.back();
Get.back();
}));
}
notificationData = jsonDecode(res);
// sql.insertData(notificationData['message'], TableName.captainNotification);
// print(notificationData);
isloading = false;
update();
}
updateNotification(String id) async {
await CRUD().post(
link: AppLink.updateNotificationPassenger,
payload: {'isShown': 'true', 'id': id},
);
Get.back();
getNotifications();
}
addNotificationToPassenger(String title, body) async {
var res = CRUD().post(link: AppLink.addNotificationPassenger, payload: {
'title': title,
'body': body,
});
FirebaseMessagesController()
.sendNotificationToPassengerToken(title, body, 'token', []);
}
@override
void onInit() {
getNotifications();
super.onInit();
}
}

View File

@@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:http/http.dart';
import 'package:ride/constant/box_name.dart'; import 'package:ride/constant/box_name.dart';
import 'package:ride/constant/links.dart'; import 'package:ride/constant/links.dart';
import 'package:ride/controller/functions/crud.dart'; import 'package:ride/controller/functions/crud.dart';
@@ -38,4 +39,28 @@ class CaptainProfileController extends GetxController {
Get.back(); Get.back();
} }
} }
Map captainProfileData = {};
Future getProfileData() async {
var res = await CRUD().get(
link: AppLink.getCaptainProfile,
payload: {'id': box.read(BoxName.driverID)});
if (res != 'failure') {
var d = jsonDecode(res);
captainProfileData = d['message'];
update();
print(d['message']);
box.write(BoxName.sexDriver, d['message']['gender']);
box.write(BoxName.dobDriver, d['message']['birthdate']);
}
}
@override
void onInit() {
if (box.read(BoxName.dobDriver).toString().isEmpty) {
getProfileData();
}
super.onInit();
}
} }

View File

@@ -1,6 +1,5 @@
import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:animated_text_kit/animated_text_kit.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_stripe/flutter_stripe.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/constant/colors.dart'; import 'package:ride/constant/colors.dart';
import 'package:ride/constant/info.dart'; import 'package:ride/constant/info.dart';

View File

@@ -1,18 +1,11 @@
import 'dart:convert';
import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:animated_text_kit/animated_text_kit.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/controller/functions/llama_ai.dart';
import 'package:ride/env/env.dart';
import '../../../constant/api_key.dart';
import '../../../constant/box_name.dart'; import '../../../constant/box_name.dart';
import '../../../constant/char_map.dart';
import '../../../constant/colors.dart'; import '../../../constant/colors.dart';
import '../../../constant/credential.dart';
import '../../../constant/info.dart'; import '../../../constant/info.dart';
import '../../../constant/style.dart'; import '../../../constant/style.dart';
import '../../../controller/auth/captin/login_captin_controller.dart'; import '../../../controller/auth/captin/login_captin_controller.dart';
@@ -197,62 +190,62 @@ class LoginCaptin extends StatelessWidget {
displayFullTextOnTap: true, displayFullTextOnTap: true,
stopPauseOnTap: true, stopPauseOnTap: true,
), ),
IconButton( // IconButton(
onPressed: () async { // onPressed: () async {
// String v = // // String v =
// await storage.read(key: BoxName.serverAPI) ?? ''; // // await storage.read(key: BoxName.serverAPI) ?? '';
// print(v); // // print(v);
// sql.deleteAllData(TableName.faceDetectTimes); // // sql.deleteAllData(TableName.faceDetectTimes);
AC credentials = AC(); // AC credentials = AC();
// String apiKey = AK.secretKey; // // String apiKey = AK.secretKey;
// // // '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'; // // // // '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';
// credentials.gAK(); // // credentials.gAK();
// String? apiKeyf = // // String? apiKeyf =
// await storage.read(key: BoxName.chatGPTkey); // // await storage.read(key: BoxName.chatGPTkey);
// print(apiKeyf); // // print(apiKeyf);
// String convertedString = credentials.c(apiKey, s); // // String convertedString = credentials.c(apiKey, s);
// String convertedStrings = credentials.c(apiKey, s); // // String convertedStrings = credentials.c(apiKey, s);
// print('Converted String s: $convertedStrings'); // // print('Converted String s: $convertedStrings');
// String convertedStringC = // // String convertedStringC =
// credentials.c(convertedStrings, c); // // credentials.c(convertedStrings, c);
// print('v: $v'); // // print('v: $v');
// 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH' // // 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
// 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH' // // 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
String convertedStringN = credentials.c( // String convertedStringN = credentials.c(
credentials.c( // credentials.c(
credentials.c( // credentials.c(
'0vQRyaYYDWpsv73A5CZOknseK7S2sgwE', cs), // '0vQRyaYYDWpsv73A5CZOknseK7S2sgwE', cs),
cC), // cC),
cn); // cn);
print('Converted v: $convertedStringN'); // print('Converted v: $convertedStringN');
// // // // //
// String retrievedStringN = // // String retrievedStringN =
// credentials.r(convertedStringN, n); // // credentials.r(convertedStringN, n);
// print('Retrieved String: $retrievedStringN'); // // print('Retrieved String: $retrievedStringN');
// String retrievedStringC = // // String retrievedStringC =
// credentials.r(retrievedStringN, c); // // credentials.r(retrievedStringN, c);
// print('Retrieved String: $retrievedStringC'); // // print('Retrieved String: $retrievedStringC');
String retrievedStringS = credentials.r( // String retrievedStringS = credentials.r(
credentials.r( // credentials.r(
credentials.r(convertedStringN, cn), cC), // credentials.r(convertedStringN, cn), cC),
cs); // cs);
print('Retrieved String: $retrievedStringS'); // print('Retrieved String: $retrievedStringS');
// if (retrievedStringS == apiKey) { // // if (retrievedStringS == apiKey) {
// print('same'); // // print('same');
// } // // }
// print(' AK is ' + AK.chatGPTkey); // // // print(' AK is ' + AK.chatGPTkey); //
// print(' ENV is ' + Env.chatGPTkey); // // // print(' ENV is ' + Env.chatGPTkey); //
// // print('storage is ' + v); // // // // print('storage is ' + v); //
// print('storage is ' + apiKeyf!); // // // print('storage is ' + apiKeyf!); //
}, // },
icon: const Icon( // icon: const Icon(
Icons.close, // Icons.close,
color: AppColor.blueColor, // color: AppColor.blueColor,
), // ),
), // ),
], ],
), ),
) )

View File

@@ -1,5 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/constant/colors.dart';
import 'package:ride/controller/functions/log_out.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
import 'package:ride/views/widgets/my_scafold.dart'; import 'package:ride/views/widgets/my_scafold.dart';
class LogoutCaptain extends StatelessWidget { class LogoutCaptain extends StatelessWidget {
@@ -9,7 +12,30 @@ class LogoutCaptain extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MyScafolld( return MyScafolld(
title: 'Log Out Page'.tr, title: 'Log Out Page'.tr,
body: [], body: [
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
MyElevatedButton(
title: 'Log Off'.tr,
onPressed: () {
LogOut().logOutCaptain();
}),
const SizedBox(
height: 30,
),
MyElevatedButton(
title: 'Delete My Account'.tr,
onPressed: () {
LogOut().deletecaptainAccount();
},
kolor: AppColor.redColor,
),
],
),
)
],
isleading: true, isleading: true,
); );
} }

View File

@@ -257,22 +257,26 @@ class RegisterPage extends StatelessWidget {
), ),
), ),
), ),
DropdownButton( // DropdownButton(
value: controller.gender, // value: controller.gender,
items: [ // items: [
DropdownMenuItem( // DropdownMenuItem(
value: 'Male'.tr, // value: 'Male'.tr,
child: Text('Male'.tr), // child: Text('Male'.tr),
), // ),
DropdownMenuItem( // DropdownMenuItem(
value: 'Female'.tr, // value: 'Female'.tr,
child: Text('Female'.tr), // child: Text('Female'.tr),
), // ),
], // DropdownMenuItem(
onChanged: (value) { // value: '--'.tr,
controller.changeGender(value!); // child: Text('--'.tr),
}, // ),
) // ],
// onChanged: (value) {
// controller.changeGender(value!);
// },
// )
], ],
), ),
MyElevatedButton( MyElevatedButton(

View File

@@ -1,5 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/constant/style.dart';
import 'package:ride/views/lang/languages.dart';
import 'package:ride/views/widgets/my_scafold.dart'; import 'package:ride/views/widgets/my_scafold.dart';
class SettingsCaptain extends StatelessWidget { class SettingsCaptain extends StatelessWidget {
@@ -9,7 +11,31 @@ class SettingsCaptain extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MyScafolld( return MyScafolld(
title: 'Settings'.tr, title: 'Settings'.tr,
body: [], body: [
ListView(
children: <Widget>[
ListTile(
leading: const Icon(Icons.language),
title: Text(
'Language',
style: AppStyle.headtitle2,
),
onTap: () => Get.to(const Language()),
),
// ListTile(
// leading: const Icon(Icons.notifications),
// title: const Text('Notifications'),
// onTap: () =>
// Navigator.pushNamed(context, '/notification-settings'),
// ),
// ListTile(
// leading: const Icon(Icons.account_circle),
// title: const Text('Account'),
// onTap: () => Navigator.pushNamed(context, '/account-settings'),
// ),
],
),
],
isleading: true, isleading: true,
); );
} }

View File

@@ -192,7 +192,7 @@ class PassengerProfilePage extends StatelessWidget {
child: MyElevatedButton( child: MyElevatedButton(
title: 'Sign Out'.tr, title: 'Sign Out'.tr,
onPressed: () { onPressed: () {
LogOut().logOut(); LogOut().logOutPassenger();
}), }),
), ),
Positioned( Positioned(

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/constant/style.dart'; import 'package:ride/constant/style.dart';
import 'package:ride/controller/auth/captin/notification_captain_controller.dart'; import 'package:ride/controller/notification/notification_captain_controller.dart';
import 'package:ride/views/widgets/elevated_btn.dart'; import 'package:ride/views/widgets/elevated_btn.dart';
import 'package:ride/views/widgets/my_scafold.dart'; import 'package:ride/views/widgets/my_scafold.dart';
import 'package:ride/views/widgets/mycircular.dart'; import 'package:ride/views/widgets/mycircular.dart';

View File

@@ -3,35 +3,80 @@ import 'package:get/get.dart';
import 'package:ride/constant/colors.dart'; import 'package:ride/constant/colors.dart';
import 'package:ride/constant/style.dart'; import 'package:ride/constant/style.dart';
import '../../constant/box_name.dart'; import '../../controller/notification/passenger_notification_controller.dart';
import '../../main.dart'; import '../widgets/elevated_btn.dart';
import '../widgets/my_scafold.dart'; import '../widgets/my_scafold.dart';
import '../widgets/mycircular.dart';
class NotificationPage extends StatelessWidget { class NotificationPage extends StatelessWidget {
const NotificationPage({super.key}); const NotificationPage({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Get.put(PassengerNotificationController());
return MyScafolld( return MyScafolld(
isleading: true, isleading: true,
title: 'Notifications', title: 'Notifications',
action: IconButton(
onPressed: () async {
print(box.read(BoxName.tokenFCM).toString());
// await CRUD().post(link: AppLink.addTokens, payload: {
// 'token': box.read(BoxName.tokenFCM).toString(),
// 'passengerID': box.read(BoxName.pasengerID).toString()
// }).then((value) => print('cccc'));
},
icon: const Icon(
Icons.add,
color: AppColor.primaryColor,
),
),
body: [ body: [
Container( GetBuilder<PassengerNotificationController>(
decoration: AppStyle.boxDecoration, builder: (notificationCaptainController) =>
), notificationCaptainController.isloading
? const MyCircularProgressIndicator()
: SafeArea(
child: ListView.builder(
itemCount: notificationCaptainController
.notificationData['message'].length,
itemBuilder: (BuildContext context, int index) {
if (notificationCaptainController
.notificationData['message'] ==
"No notification data found") {
Get.defaultDialog();
}
var res = notificationCaptainController
.notificationData['message'][index];
return Card(
elevation: 4,
color: res['isShown'] == 'true'
? AppColor.secondaryColor.withOpacity(.5)
: AppColor.secondaryColor.withOpacity(.9),
child: ListTile(
onTap: () {
Get.defaultDialog(
title: res['title'],
titleStyle: AppStyle.title,
content: SizedBox(
width: Get.width * .8,
// height: Get.height * .4,
child: Text(
res['body'],
style: AppStyle.title,
),
),
confirm: MyElevatedButton(
title: 'Ok',
onPressed: () {
notificationCaptainController
.updateNotification(
res['id'].toString());
}));
},
leading: res['isShown'] == 'true'
? const Icon(
Icons.notifications_off_outlined)
: const Icon(Icons.notifications_active),
title: Text(
res['title'],
style: AppStyle.title,
),
subtitle: Text(
res['body'],
style: AppStyle.subtitle,
),
),
);
},
),
))
], ],
); );
} }

View File

@@ -9,7 +9,10 @@ class MyScafolld extends StatelessWidget {
super.key, super.key,
required this.title, required this.title,
required this.body, required this.body,
this.action = const Icon(Icons.clear), this.action = const Icon(
Icons.clear,
color: AppColor.secondaryColor,
),
required this.isleading, required this.isleading,
}); });

View File

@@ -41,7 +41,7 @@ class MyTextForm extends StatelessWidget {
hintText: hint.tr, hintText: hint.tr,
), ),
validator: (value) { validator: (value) {
if (value!.isEmpty || value.length != 10) { if (value!.isEmpty) {
return 'Please enter $label.'.tr; return 'Please enter $label.'.tr;
} }
return null; return null;

View File

@@ -161,6 +161,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
calendar_builder:
dependency: "direct main"
description:
name: calendar_builder
sha256: "4b94a20d7e8136b84cd62fb7c7752f4a723b67a4b7ed3c3c14c2615e6e6a4653"
url: "https://pub.dev"
source: hosted
version: "0.0.6"
camera: camera:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@@ -48,6 +48,7 @@ dependencies:
image_cropper: ^4.0.1 image_cropper: ^4.0.1
envied: ^0.5.2 envied: ^0.5.2
cached_network_image: ^3.3.0 cached_network_image: ^3.3.0
calendar_builder: ^0.0.6