This commit is contained in:
Hamza-Ayed
2023-08-21 23:34:15 +03:00
parent b340316e11
commit c1869d2725
18 changed files with 418 additions and 116 deletions

View File

@@ -49,6 +49,7 @@ class CRUD {
},
);
print(response.request);
var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) {
if (jsonData['status'] == 'success') {

View File

@@ -9,9 +9,7 @@ import 'package:ride/constant/box_name.dart';
import 'package:ride/constant/credential.dart';
import 'package:ride/constant/links.dart';
import 'package:ride/controller/functions/crud.dart';
import 'package:ride/views/home/map_widget.dart/buttom_sheet_map_show.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
import 'package:http/http.dart' as http;
import '../../main.dart';
import '../../models/model/locations.dart';
import '../firebase/firbase_messge.dart';
@@ -46,7 +44,7 @@ class MapController extends GetxController {
bool isCashConfirmPageShown = false;
bool isPaymentMethodPageShown = false;
bool isMainBottomMenuMap = true;
double heightButtomSheetShown = 300;
double heightButtomSheetShown = 0;
double cashConfirmPageShown = 250;
double paymentPageShown = Get.height * .6;
late final LatLng southwest;
@@ -98,14 +96,32 @@ class MapController extends GetxController {
}
int selectedReason = -1;
void selectReason(int index) {
String? cancelNote;
void selectReason(int index, String note) {
selectedReason = index;
cancelNote = note;
update();
}
bool rideConfirm = false;
void cancelRide() async {
changeConfirmRide() {
rideConfirm = true;
//TODO add ride and get ride id and details
update();
}
Future cancelRide() async {
var payload = {
"driverID": "1", // Convert to String
"passengerID":
box.read(BoxName.pasengerID).toString(), // Convert to String
"rideID": "222", // Convert to String
"note": cancelNote
};
print(rideConfirm);
print(payload);
if (rideConfirm == false) {
clearPlaces();
clearpolyline();
@@ -117,12 +133,9 @@ class MapController extends GetxController {
clearpolyline();
data = [];
changeCancelRidePageShow();
await CRUD().post(link: AppLink.addCancelRide, payload: {
"driverID": 1,
"passengerID": box.read(BoxName.pasengerID).toString(),
"rideID": 222,
"note": "zxcz"
});
await CRUD().post(link: AppLink.addCancelRide, payload: payload);
update();
}
}
@@ -385,19 +398,25 @@ class MapController extends GetxController {
late double costDuration = 0;
late double cost = 0;
late double distance = 0;
late double duration = 2;
late double duration = 0;
DateTime currentTime = DateTime.now();
late Duration durationToAdd;
late DateTime newTime = DateTime.now();
void bottomSheet() {
Future bottomSheet() async {
if (data.isNotEmpty) {
String distanceText = data[0]['distance']['text'];
String durationText = data[0]['duration']['text'];
String distanceText = await data[0]['distance']['text'];
String durationText = await data[0]['duration']['text'];
distance = getDistanceFromText(distanceText);
duration = getDistanceFromText(durationText);
durationToAdd = Duration(minutes: duration.toInt());
DateTime currentTime = DateTime.now();
newTime = currentTime.add(durationToAdd);
averageDuration = duration / distance;
costDuration = duration * averageDuration * 0.016;
totalDriver = cost + costDuration;
totalPassenger = totalDriver + (totalDriver * .16);
tax = totalPassenger * .04;
totaME = totalPassenger - totalDriver - tax;
update();
if (currentTime.hour >= 21) {
if (distanceText.contains('km')) {
@@ -407,6 +426,32 @@ class MapController extends GetxController {
cost = distance * 0.23 / 1000;
update();
}
} else if (currentTime.hour < 5) {
if (distanceText.contains('km')) {
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.23;
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;
@@ -416,12 +461,7 @@ class MapController extends GetxController {
update();
}
}
averageDuration = duration / distance;
costDuration = duration * averageDuration * 0.016;
totalDriver = cost + costDuration;
totalPassenger = totalDriver + (totalDriver * .16);
tax = totalPassenger * .04;
totaME = totalPassenger - totalDriver - tax;
if (totalPassenger < 1) {
totalPassenger = 1;
update();
@@ -435,8 +475,11 @@ class MapController extends GetxController {
update();
}
}
// buttomSheetMapPage();
changeButtomSheetShown();
}
buttomSheetMapPage();
// Get.bottomSheet(
// Container(
// height: 130,

View File

@@ -12,9 +12,27 @@ class LocaleController extends GetxController {
ThemeData appTheme = themeEnglish;
changeLang(String langcode) {
Locale locale = Locale(langcode);
Locale locale;
switch (langcode) {
case "ar":
locale = const Locale("ar");
appTheme = themeArabic;
break;
case "en":
locale = const Locale("en");
appTheme = themeEnglish;
break;
case "tr":
locale = const Locale("tr");
appTheme = themeEnglish;
break;
default:
locale = Locale(Get.deviceLocale!.languageCode);
appTheme = themeEnglish;
break;
}
box.write(BoxName.lang, langcode);
appTheme = langcode == "ar" ? themeArabic : themeEnglish;
Get.changeTheme(appTheme);
Get.updateLocale(locale);
update();
@@ -23,15 +41,24 @@ class LocaleController extends GetxController {
@override
void onInit() {
FirebasMessagesController().requestPermission();
if (box.read(BoxName.lang) == "ar") {
language = const Locale("ar");
appTheme = themeArabic;
} else if (box.read(BoxName.lang) == "en") {
language = const Locale("en");
appTheme = themeEnglish;
} else {
language = Locale(Get.deviceLocale!.languageCode);
appTheme = themeEnglish;
String storedLang = box.read(BoxName.lang) ?? "";
switch (storedLang) {
case "ar":
language = const Locale("ar");
appTheme = themeArabic;
break;
case "en":
language = const Locale("en");
appTheme = themeEnglish;
break;
case "tr":
language = const Locale("tr");
appTheme = themeEnglish;
break;
default:
language = Locale(Get.deviceLocale!.languageCode);
appTheme = themeEnglish;
break;
}
super.onInit();
}

View File

@@ -5,12 +5,178 @@ class MyTranslation extends Translations {
Map<String, Map<String, String>> get keys => {
"ar": {
"Choose Language": "اختر اللغة",
"Login": "تسجيل الدخول",
"Enter your email address": "أدخل عنوان بريدك الإلكتروني",
"Please enter Your Email.": "يرجى إدخال بريدك الإلكتروني.",
"Enter your phone number": "أدخل رقم هاتفك",
"Please enter your phone number.": "يرجى إدخال رقم هاتفك.",
"Please enter Your Password.": "يرجى إدخال كلمة المرور.",
"Submit": "إرسال",
"if you dont have account": "إذا لم يكن لديك حساب",
"Register": "تسجيل",
"Accept Ride's Terms & Review Privacy Notice":
"قبول شروط الاستخدام ومراجعة إشعار الخصوصية",
"By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.":
"من خلال اختيار 'أوافق' أدناه، قمت بمراجعة وقبول شروط الاستخدام وأقر بإشعار الخصوصية. أنا على الأقل 18 عامًا.",
"I Agree": "أوافق",
"First name": "الاسم الأول",
"Enter your first name": "أدخل اسمك الأول",
"Please enter your first name.": "يرجى إدخال اسمك الأول.",
"Last name": "اسم العائلة",
"Enter your last name": "أدخل اسمك الأخير",
"Please enter your last name.": "يرجى إدخال اسمك الأخير.",
"City": "المدينة",
"Please enter your City.": "يرجى إدخال اسم مدينتك.",
"Male": "ذكر",
"Female": "أنثى",
"Verify Email": "تحقق من البريد الإلكتروني",
"We sent 5 digit to your Email provided":
"لقد أرسلنا رمزًا مؤلفًا من 5 أرقام إلى بريدك الإلكتروني المُدخَل",
"5 digit": "5 أرقام",
"Send Verification Code": "إرسال رمز التحقق",
"Your Ride Duration is ": "مدة رحلتك ",
"You will be thier in": "ستكون هناك في",
"You trip distance is": "مسافة الرحلة",
"Fee is": "الرسوم",
"From : ": "من: ",
"To : ": "إلى: ",
"Add Promo": "إضافة برومو",
"Confirm Selection": "تأكيد الاختيار",
"distance is": "المسافة",
"duration is": "المدة",
"I don't need a ride anymore": "لست بحاجة إلى رحلة بعد الآن",
"I was just trying the application": "كنت فقط أجرب التطبيق",
"No driver accepted my request": "لم يقبل أي سائق طلبي",
"I added the wrong pick-up/drop-off location":
"أضفت موقع الالتقاط/التسليم الخاطئ",
"I don't have a reason": "ليس لدي سبب",
"Other": "آخر",
"Can we know why you want to cancel Ride ?":
"هل يمكننا معرفة سبب رغبتك في إلغاء الرحلة؟",
"Cancel Ride": "إلغاء الرحلة",
"Add Payment Method": "إضافة طريقة الدفع",
"Your Wallet balance is ": "رصيد المحفظة الخاص بك ",
"Ride Wallet": "محفظة الرحلة",
"Payment Method": "طريقة الدفع",
"Type here Place": "اكتب هنا المكان",
"Are You sure to ride to": "هل أنت متأكد من رغبتك في الذهاب إلى",
"Confirm": "تأكيد",
"Back": "رجوع",
"You are Delete": "أنت على وشك الحذف",
"Deleted": "تم الحذف",
"You Dont Have Any places yet !": "ليس لديك أي أماكن بعد!",
"Favorite Places": "الأماكن المفضلة",
"From : Current Location": "من: الموقع الحالي",
"Where to": "إلى أين",
"Notifications": "الإشعارات",
"Profile": "الملف الشخصي",
"Home": "الصفحة الرئيسية",
"My Cared": "المهتم به",
"Add Card": "إضافة بطاقة",
"Add Credit Card": "إضافة بطاقة ائتمان",
"Please enter the cardholder name": "يرجى إدخال اسم حامل البطاقة",
"Please enter the expiry date": "يرجى إدخال تاريخ انتهاء الصلاحية",
"Please enter the CVV code": "يرجى إدخال رمز CVV",
"Go To Favorite Places": "الانتقال إلى الأماكن المفضلة",
"Go to this Target": "الانتقال إلى هذا الهدف",
"My Profile": "ملفي الشخصي",
"Sign Out": "تسجيل الخروج",
"Home Page": "الصفحة الرئيسية",
"Are you want to go to this site":
"هل ترغب في الانتقال إلى هذا الموقع",
"MyLocation": "موقعي",
"my location": "موقعي",
"Target": "هدف"
},
"tr": {
"Choose Language": "Dil Seçin",
"Login": "Giriş Yap",
"Enter your email address": "E-posta adresinizi girin",
"Please enter Your Email.": "Lütfen E-posta adresinizi girin.",
"Enter your phone number": "Telefon numaranızı girin",
"Please enter your phone number.": "Lütfen telefon numaranızı girin.",
"Please enter Your Password.": "Lütfen şifrenizi girin.",
"Submit": "Gönder",
"if you dont have account": "Hesabınız yoksa",
"Register": "Kayıt Ol",
"Accept Ride's Terms & Review Privacy Notice":
"Kullanım Koşullarını Kabul Edin ve Gizlilik Bildirimini İnceleyin",
"By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.":
"\"Kabul Ediyorum\" seçeneğini seçerek, Kullanım Koşullarını inceledim ve kabul ettim, Gizlilik Bildirimi'ni onaylıyorum. En az 18 yaşındayım.",
"I Agree": "Kabul Ediyorum",
"First name": "Adınız",
"Enter your first name": "Adınızı girin",
"Please enter your first name.": "Lütfen adınızı girin.",
"Last name": "Soyadınız",
"Enter your last name": "Soyadınızı girin",
"Please enter your last name.": "Lütfen soyadınızı girin.",
"City": "Şehir",
"Please enter your City.": "Lütfen şehir adınızı girin.",
"Male": "Erkek",
"Female": "Kadın",
"Verify Email": "E-postayı Doğrula",
"We sent 5 digit to your Email provided":
"E-postanıza 5 haneli bir kod gönderdik",
"5 digit": "5 haneli",
"Send Verification Code": "Doğrulama Kodunu Gönder",
"Your Ride Duration is ": "Seyir Süreniz ",
"You will be thier in": "Orada olacaksınız",
"You trip distance is": "Gezi mesafesi",
"Fee is": "Ücret",
"From : ": "Başlangıç noktası: ",
"To : ": "Varış noktası: ",
"Add Promo": "Promosyon Ekle",
"Confirm Selection": "Seçimi Onayla",
"distance is": "mesafe",
"duration is": "süre",
"I don't need a ride anymore": "Artık bir sürüşe ihtiyacım yok",
"I was just trying the application": "Sadece uygulamayı deniyordum",
"No driver accepted my request":
"Hiçbir sürücü isteğimi kabul etmedi",
"I added the wrong pick-up/drop-off location":
"Yanlış kalkış/varış konumu ekledim",
"I don't have a reason": "Bir sebebim yok",
"Other": "Diğer",
"Can we know why you want to cancel Ride ?":
"Neden sürüşü iptal etmek istediğinizi öğrenebilir miyiz?",
"Cancel Ride": "Sürüşü İptal Et",
"Add Payment Method": "Ödeme Yöntemi Ekle",
"Your Wallet balance is ": "Cüzdan bakiyeniz ",
"Ride Wallet": "Sürüş Cüzdanı",
"Payment Method": "Ödeme Yöntemi",
"Type here Place": "Buraya Yer Girin",
"Are You sure to ride to":
"Şuraya gitmek istediğinizden emin misiniz",
"Confirm": "Onayla",
"Back": "Geri",
"You are Delete": "Silmektesiniz",
"Deleted": "Silindi",
"You Dont Have Any places yet !": "Henüz hiç yeriniz yok!",
"Favorite Places": "Favori Yerler",
"From : Current Location": "Başlangıç noktası: Mevcut Konum",
"Where to": "Nereye",
"Notifications": "Bildirimler",
"Profile": "Profil",
"Home": "Ana Sayfa",
"My Cared": "İlgilendiğim",
"Add Card": "Kart Ekle",
"Add Credit Card": "Kredi Kartı Ekle",
"Please enter the cardholder name":
"Lütfen kart sahibinin adını girin",
"Please enter the expiry date": "Lütfen son kullanma tarihini girin",
"Please enter the CVV code": "Lütfen CVV kodunu girin",
"Go To Favorite Places": "Favori Yerlere Git",
"Go to this Target": "Bu Hedefe Git",
"My Profile": "Profilim",
"Sign Out": "Çıkış Yap",
"Home Page": "Ana Sayfa",
"Are you want to go to this site": "Bu siteye gitmek istiyor musunuz",
"MyLocation": "Konumum",
"my location": "konumum",
"Target": "Hedef"
},
"en": {
"Choose Language": "Choose Language",
},
"tr": {
"Choose Language": "Dil seç",
},
};
}