diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 9182924..ff0440e 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -186,7 +186,7 @@ "updateBranch": "تحديث فرع", "branches": "الفروع", "requests": "الطلبات", - "noBranchFound": "لم يتم العثور على فرع", + "noBranchFound" : "لم يتم العثور على فرع", "onlyProviderApp": "نأسف هذا التطبيق فقط لمقدمي الخدمات", "pickAddress": "اختر العنوان", "pickLocation": "اختر الموقع", @@ -202,19 +202,19 @@ "completeProfile2": "اكمل الملف الشخصي 2/3", "completeProfile3": "اكمل الملف الشخصي 3/3", "provider": "مزود", - "noRequeststoShow": "لا توجد طلبات للعرض", + "noRequeststoShow" : "لا توجد طلبات للعرض", "myBranches": "فروعي", - "mergeAppointments": "دمج المواعيد", - "addService": "أضف الخدمة", - "selectServicestoAdd": "حدد الخدمات التي تريد إضافتها", + "mergeAppointments" : "دمج المواعيد", + "addService" : "أضف الخدمة", + "selectServicestoAdd" : "حدد الخدمات التي تريد إضافتها", "noServiceFound": "لم يتم العثور على الخدمة", - "selectItems": "اختيار العناصر", - "noItemSelectedYet": "لم يتم تحديد أي عنصر بعد", - "totalAdditionalAmount": "إجمالي المبلغ الإضافي", - "sar": "ريال سعودي", - "cancel": "يلغي", - "add": "يضيف", - "itemsAddedSuccessfully": "تمت إضافة العناصر بنجاح", + "selectItems" : "اختيار العناصر", + "noItemSelectedYet" : "لم يتم تحديد أي عنصر بعد", + "totalAdditionalAmount" : "إجمالي المبلغ الإضافي", + "sar" : "ريال سعودي", + "cancel" : "يلغي", + "add" : "يضيف", + "itemsAddedSuccessfully" : "تمت إضافة العناصر بنجاح", "pleaseSelectItems": "يرجى اختيار العناصر", "totalAmount": "المبلغ الإجمالي", "searchItems": "البحث عن العناصر", @@ -568,6 +568,15 @@ "customer": "العميل", "amountVAR": "كمية", "accept": "قبول", + "amountVAR": "كمية", + "nowVar": "الآن", + "whendoyouWanttoUpgrade": "متى تريد الترقية", + "yourSubscriptionUpgradeAffectingFrom": "سيتم ترقية اشتراكك الآن. ساري المفعول من", + "upgradeAfterCurrentExpiry": "الترقية بعد انتهاء الاشتراك الحالي", + "yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom": "سيتم ترقية اشتراكك بعد انتهاء اشتراكك الحالي. ساري المفعول من", + "upgradeVar": "ترقية", + "whendoyouWanttoRenew" : "متى تريد التجديد", + "renewVar" : "تجديد", "requestAlreadyInProgress": "هذا الطلب قيد التقدم بالفعل.", "acceptOfferConfirmation": "هل تريد قبول هذا العرض؟", "acceptOfferConfirmationMessage": "سيتم قبول هذا العرض وستدفع المبلغ المطلوب للمشتري في وقت معين وإلا سيتم إلغاء هذا العرض." diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 75e0498..b8245fe 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -404,7 +404,7 @@ "passwordAcceptableStrong": "Your password is acceptable but not strong", "passwordIsStrong": "Your password is strong", "passwordVeryStrong": "Your password is very strong", - "onlyProviderApp": "Sorry, Only Customer's can log in this app", + "onlyProviderApp": "Sorry, Only Providers can log in this app", "selectDuration": "Select Duration", "daysVar": "Days", "adCharges": "Ad Charges", @@ -423,93 +423,93 @@ "reserveAd": "Reserve Ad", "reservationAmount": "Reservation Amount", "belowAmountPayLater": "Below Amount that you will pay later", - "carPrice": "Car Price", - "vatExcluded": "VAT Excluded", - "carInsuranceService": "Car insurance Service", - "toBeDecided": "To be Decided", - "registrationCarPlates": "Registration & Car Plates", - "homeDeliveryService": "Home Delivery Service", - "specialServicechargesInsuranceDeliveryLocation": "Special service charges will be added based on desired insurance and delivery Location", - "estimated": "Estimated", - "servicesReservingAd": "Some services are mandatory while reserving Ad", - "completeReservation": "Complete Reservation", - "contact": "Contact", - "setDateandTime": "Set Date and Time", - "selectOffice": "Select Office", - "availableSlots": "Available Slots", - "bookAndPay": "Book and Pay", - "reservationAmounts": "Reservation Amounts", - "tax": "Tax", + "carPrice":"Car Price", + "vatExcluded":"VAT Excluded", + "carInsuranceService":"Car insurance Service", + "toBeDecided":"To be Decided", + "registrationCarPlates":"Registration & Car Plates", + "homeDeliveryService":"Home Delivery Service", + "specialServicechargesInsuranceDeliveryLocation":"Special service charges will be added based on desired insurance and delivery Location", + "estimated":"Estimated", + "servicesReservingAd":"Some services are mandatory while reserving Ad", + "completeReservation":"Complete Reservation", + "contact":"Contact", + "setDateandTime":"Set Date and Time", + "selectOffice":"Select Office", + "availableSlots":"Available Slots", + "bookAndPay":"Book and Pay", + "reservationAmounts":"Reservation Amounts", + "tax":"Tax", "adsFilter": "Ads Filter", - "searchByCity": "Search By City", - "selectCity": "Select City", - "searchByBrandName": "Search By Brand Name", - "selectVehicleBrand": "Select Vehicle Brand", - "searchByVehicleYear": "Search By Vehicle Year", - "selectYear": "Select Year", - "searchByAdOwner": "Search By Ad Owner", - "selectOwner": "Select Owner", - "search": "Search", - "clearFilters": "Clear Filters", - "book": "Book", - "markAsSold": "Mark As Sold", - "deactivateAd": "Deactivate Ad", - "doWantDeactivateAd": "Do you want to the Deactivate this Ad?", - "stoptheBuyers": "We will stop showing this ad to the buyers", - "cancelReservation": "Cancel Reservation", - "reasonForCancellation": "Reason for Cancellation", - "doWantCancelReservation": "Do you want to cancel the reservation", - "yourAdVisibletoBuy.": "Your ad reservation will be cancelled and this ad will be again visible to everyone to buy", - "completeDeal": "Complete Deal", - "uploadBankReceipt": "Upload Bank Receipt", - "notesForAdmin": "Notes For Admin", - "extendAd": "Extend Ad", - "updateAdDetails": "Do you want to update the Ad Details", - "durationExtendingAd": "You can change the ad duration and details before extending the ad", - "waitingAdminsResponse": "Waiting for Admins Response", - "cancelledByOwner": "Cancelled by Owner", - "cancelledByAdmin": "Cancelled by Admin", - "reservationTimeOver": "Reservation Time Over", - "paymentVerified": "Payment Verified", - "rejectedFormAdmin": "Rejected form Admin", - "waitingAdminPost": "Waiting for admin to post", - "waitingAdminsApproval": "Waiting for Admins Approval", - "sold": "Sold", - "noAdsShow": "No Ads to show", - "damagePartList": "Damage Part List", - "searchPart": "Search Part", - "addSpecialService": "Add Special Service", - "vehicleVar": "Vehicle", - "detailsVar": "Details", - "damageVar": "Damage", + "searchByCity":"Search By City", + "selectCity":"Select City", + "searchByBrandName":"Search By Brand Name", + "selectVehicleBrand":"Select Vehicle Brand", + "searchByVehicleYear":"Search By Vehicle Year", + "selectYear":"Select Year", + "searchByAdOwner":"Search By Ad Owner", + "selectOwner":"Select Owner", + "search":"Search", + "clearFilters":"Clear Filters", + "book":"Book", + "markAsSold":"Mark As Sold", + "deactivateAd":"Deactivate Ad", + "doWantDeactivateAd":"Do you want to the Deactivate this Ad?", + "stoptheBuyers":"We will stop showing this ad to the buyers", + "cancelReservation":"Cancel Reservation", + "reasonForCancellation":"Reason for Cancellation", + "doWantCancelReservation":"Do you want to cancel the reservation", + "yourAdVisibletoBuy.":"Your ad reservation will be cancelled and this ad will be again visible to everyone to buy", + "completeDeal":"Complete Deal", + "uploadBankReceipt":"Upload Bank Receipt", + "notesForAdmin":"Notes For Admin", + "extendAd":"Extend Ad", + "updateAdDetails":"Do you want to update the Ad Details", + "durationExtendingAd":"You can change the ad duration and details before extending the ad", + "waitingAdminsResponse":"Waiting for Admins Response", + "cancelledByOwner":"Cancelled by Owner", + "cancelledByAdmin":"Cancelled by Admin", + "reservationTimeOver":"Reservation Time Over", + "paymentVerified":"Payment Verified", + "rejectedFormAdmin":"Rejected form Admin", + "waitingAdminPost":"Waiting for admin to post", + "waitingAdminsApproval":"Waiting for Admins Approval", + "sold":"Sold", + "noAdsShow":"No Ads to show", + "damagePartList":"Damage Part List", + "searchPart":"Search Part", + "addSpecialService":"Add Special Service", + "vehicleVar":"Vehicle", + "detailsVar":"Details", + "damageVar":"Damage", "partsVar": "Parts", - "additional": "Additional", - "review": "Review", + "additional":"Additional", + "review":"Review", "adVar": "Ad", - "updateAd": "Update Ad", - "createAd": "Create Ad", - "next": "Next", - "submitAd": "Submit Ad", - "selectAdType": "Select Ad Type", - "validUntilSubscriptionExpiration": "Valid Until Subscription Expiration", - "adsRemaining ": "Ads Remaining", - "youLeftAdsGivenSubscription": "You have left with 05 out of 50 ads given in the subscription.", - "updateSubscription": "Update Subscription", - "workInProgress": "Work In Progress", - "visitCompleted": "Visit Completed", - "youWantCancelAppointment": "Do you want to cancel this appointment?", - "appointmentCancelledCannotUndoAction": "Your appointment will be cancelled and you cannot undo this action.", - "appointment": "Appointment", - "rescheduleAppointment": "Reschedule Appointment", - "payforAppointment": "Pay for Appointment", - "appointmentsFilter": "Appointments Filter", - "searchByProvider": "Search By Provider", - "selectProvider": "Select Provider", - "searchByBranch": "Search By Branch", - "searchByCategory": "Search By Category", - "selectCategory": "Select Category", - "searchByService": "Search By Service", - "selectServices": "Select Services", + "updateAd":"Update Ad", + "createAd":"Create Ad", + "next":"Next", + "submitAd":"Submit Ad", + "selectAdType":"Select Ad Type", + "validUntilSubscriptionExpiration":"Valid Until Subscription Expiration", + "adsRemainingVar ":"Ads Remaining", + "youLeftAdsGivenSubscription":"You have left with 05 out of 50 ads given in the subscription.", + "updateSubscription":"Update Subscription", + "workInProgress":"Work In Progress", + "visitCompleted":"Visit Completed", + "youWantCancelAppointment":"Do you want to cancel this appointment?", + "appointmentCancelledCannotUndoAction":"Your appointment will be cancelled and you cannot undo this action.", + "appointment":"Appointment", + "rescheduleAppointment":"Reschedule Appointment", + "payforAppointment":"Pay for Appointment", + "appointmentsFilter":"Appointments Filter", + "searchByProvider":"Search By Provider", + "selectProvider":"Select Provider", + "searchByBranch":"Search By Branch", + "searchByCategory":"Search By Category", + "selectCategory":"Select Category", + "searchByService":"Search By Service", + "selectServices":"Select Services", "modifyPackage": "Modify Package", "schedule": "Schedule", "serviceLocation": "Service Location:", @@ -527,13 +527,13 @@ "dateAndTime": "Date and Time", "timeLocation": "Time & Location", "serviceCharges": "Service Charges", - "locationCharges": "Location Charges", + "locationCharges" : "Location Charges", "payableNow": "Payable Now", "remainingAmount": "Remaining Amount", "branchesFilter": "Branches Filter", - "searchByDistance": "Search By Distance", +"searchByDistance": "Search By Distance", "searchByMinimumRatings": "Search By Minimum Ratings", - "chat": "Chat", +"chat": "Chat", "noRequestsShow": "No Requests to show.", "typeMessageHere": "Type your message here..", "reject": "Reject", @@ -561,6 +561,8 @@ "termPrivacy": "Term & Privacy", "inviteFriends": "Invite Friends", "more": "More", + "language" :"Language", + "mySubscriptions": "My Subscription", "subscriptions": "Subscriptions", "defineLicenses": "Define Licenses", "logOut": "Log Out", @@ -570,4 +572,13 @@ "requestAlreadyInProgress": "This request is already in progress.", "acceptOfferConfirmation": "Do you want to accept this offer?", "acceptOfferConfirmationMessage": "This offer will be accepted and you will pay the requested amount to the buyer in given time or else this offer will be cancelled." + "nowVar": "Now", + "whendoyouWanttoUpgrade": "When do you want to upgrade", + "yourSubscriptionUpgradeAffectingFrom": "Your subscription will upgrade now. Affecting from", + "upgradeAfterCurrentExpiry": "Upgrade after current expiry", + "yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom": "Your subscription will upgrade after you current subscription will end. Affecting from", + "upgradeVar": "Upgrade", + "whendoyouWanttoRenew" : "When do you want to renew", + "renewVar" : "Renew", + } \ No newline at end of file diff --git a/lib/config/routes.dart b/lib/config/routes.dart index f3f8475..0441cd8 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -98,6 +98,9 @@ class AppRoutes { static const providerLicensePage = "/providerLicensePage"; + //Provider User Page + static const dealerUser = "/dealerUser"; + //Chat static const String chatView = "/chatView"; diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 95718f0..1bc61ae 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -1161,5 +1161,1167 @@ static const Map en_US = { "acceptOfferConfirmation": "Do you want to accept this offer?", "acceptOfferConfirmationMessage": "This offer will be accepted and you will pay the requested amount to the buyer in given time or else this offer will be cancelled." }; +static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; + static const Map ar_SA = { + "firstTimeLogIn": "تسجيل الدخول لأول مره", + "signUp": "التسجيل", + "changeMobile": "تغيير رقم الجوال", + "notifications": "الاشعارات", + "general": "عام", + "defineLicences": "تحديد الرخص", + "dealershipSettings": "اعدادات البيع", + "changePassword": "تغيير كلمة المرور", + "retrievePassword": "استرجاع كلمة المرور", + "changeEmail": "تغيير الايميل", + "verify": "تحقق", + "verified": "تم التحقق", + "signOut": "تسجيل خروج", + "enterEmail": "ادخل الايميل", + "enterNewEmail": "ادخل ايميل جديد", + "enterCurrentPassword": "كلمة المرور الحاليه", + "enterNewPassword": "كلمة المرور الجديده", + "enterOldPassword": "كلمة المرور القديمه", + "confirm": "تأكيد", + "enterNewPhoneNumber": "رقم جوال جديد", + "completeProfile": "الملف الشخصي", + "continu": "استمرار", + "confirmPassword": "تأكيد كلمة المرور", + "createPassword": "انشاء كلمة مرور جديده", + "email": "ايميل", + "firstName": "الأسم الأول *", + "surname": "اسم العائله *", + "confirmPass": "تأكيد كلمة المرور *", + "createPass": "انشاء كلمة مرور جديده *", + "newPassword": " كلمة مرور جديده", + "forgetPassword": "نسيت كلمة المرور", + "forgetPasswordRecover": "نسيت كلمة المرور؟ استعادة", + "editAccount": "تعديل الحساب", + "change": "تغيير", + "verifyAccount": "التحقق من الحساب", + "login": "تسجيل دخول", + "welcomeMessage": "مرحبا", + "forgetPass": "نسيت كلمة المرور ؟", + "enterPhoneNumber": "رقم جوال ", + "phoneNumberVerified": "تم التحقق من الجوال", + "verifyNewPassword": "التحقق من كلمة المرور", + "EnterPass": "ادخل كلمة المرور", + "alreadySigned": " تم تسجيل الدخول", + "emailChangedSuccessfully": "تم تغيير الايميل بنجاح", + "passwordIsUpdated": "تم تحجيث كلمة المرور", + "passwordShouldContains": "كلمة المرور يجب ان تحتوي على رمز رقم حرف كبير حرف صغير", + " successfullyRegistered": "تم التسجيل بنجاح", + "pleaseEnterSamePassword": "ادخل كلمة مرور مطابقه", + "firstNameMandatory": "ادخل الأسم الأول ", + "surnameNameMandatory": "ادخل اسم العائله", + "passwordNameMandatory": "ادخل كلمة المرور", + "enterValidEmail": "ادخل ايميل صحيح", + "pleaseAcceptTerms": "يجب الموافقه على الشروط", + "emailVerified": "تم التحقق من الايميل بنجاح", + "selectMethod": "اختر", + "emailAddress": "ايميل", + "loginSelection": "اختر", + "selectCountryCode": "اختر رمز الدوله", + "selectProviderRole": "اختر نوع الخدمه", + "addPhoneNo": "اضف الهاتف", + "onlyCustomerApp": "نأسف هذا التطبيق فقط للعملاء", + "imageUploaded": "تم تحميل الصوره", + "fileLarger": "1KB حجم الملف اكبر من", + "account": "الحساب", + "edit": "تعديل", + "imageDeleted": "تم حذف الصوره", + "dashboard": "الصفحه الرئيسيه", + "termsOfService": "من خلال إنشاء حساب فإنك توافق على", + "userInformation": "معلومات المتسخدم", + "faceRecognition": "تحقق مع بصمة الوجه", + "fingerPrint": "تحقق مع بصمة الاصبع", + "whatsapp": "تحقق مع Whatsapp", + "SMS": "رسائل قصيره", + "selectRole": "حدد الدور", + "userRoleOrTitle": "عنوان المستخدم", + "codeSentToEmail": "تم ارسال الرمز للايميل", + "number": "موبايل", + "english": "عربي", + "title": "مرحبًا", + "msg": "Hello {} in the {} world ", + "msg_named": "{} are written in the {lang} language", + "clickMe": "انقر فوق لي", + "profile": { + "reset_password": { + "label": "إعادة تعيين كلمة المرور", + "username": "اسم المستخدم", + "password": "كلمة المرور" + } + }, + "clicked": { + "zero": "You clicked {} times!", + "one": "You clicked {} time!", + "two": "You clicked {} times!", + "few": "You clicked {} times!", + "many": "You clicked {} times!", + "other": "You clicked {} times!" + }, + "amount": { + "zero": "Your amount : {} ", + "one": "Your amount : {} ", + "two": "Your amount : {} ", + "few": "Your amount : {} ", + "many": "Your amount : {} ", + "other": "Your amount : {} " + }, + "gender": { + "male": "Hi man ;) ", + "female": "Hello girl :)", + "with_arg": { + "male": "Hi man ;) {}", + "female": "Hello girl :) {}" + } + }, + "reset_locale": "إعادة ضبط اللغة", + "welcomeDes": "أنت مكان واحد لكل ما تحتاجه سيارتك", + "log_in": "تسجيل الدخول", + "send": "إرسال", + "phoneNumber": "رقم الهاتف", + "forgetPasswordQ": "نسيت كلمة المرور؟", + "recover": "استعادة", + "retrivePassword": "استرجع كلمة المرور بإحدى الطرق التالية", + "retriveOnPhone": "سوف نرسل الاختيار إلى رقم هاتفك المحمول المسجل", + "retriveOnEmail": "سوف نرسل الاختيار إلى عنوان بريدك الإلكتروني المسجل", + "enterPhoneForVerfication": "الرجاء إدخال رقم هاتفك وسنرسل لك رمز التحقق", + "welcomeBack": "مرحبًا بعودتك!!!", + "selectYourCountry": "اختر بلدك", + "chooseCountry": "اختر الدوله", + "terms": "بنود الخدمة وخصوصية السياسة", + "profileMsg": "أدخل التفاصيل أدناه وأكمل معلومات الملف الشخصي", + "save": "حفظ", + "insert_otp_code": "ادخل الرمز", + "type_code": "الرجاء كتابة الرمز الذي أرسلناه إلى", + "resend_code": "أعد إرسال الرمز", + "check_code": "التحقق من الشفرة", + "time_will_expire": "إعادة إرسال الرمز بتنسيق", + "sec": "ثانية", + "providers": "الموفرون", + "appointments": "تعيينات", + "home": "بيت", + "ads": "إعلانات", + "settings": "إعدادات", + "view_all": "مشاهدة الكل", + "my_active_Ads": "إعلاناتي النشطة", + "recommended_ads": "الإعلانات الموصى بها", + "upcoming_appointment": "الموعد القادم", + "my_service_providers": "مزودي الخدمة الجدد", + "appointment_details": "تفاصيل الموعد", + "no_city_available": "لا توجد مدينة متاحة لهذا البلد", + "branch_created": "تم إنشاء الفرع بنجاح", + "branch_updated": "تم تحديث الفرع بنجاح", + "branch_deleted": "تم حذف الفرع بنجاح", + "dashboard_main": "لوحة القيادة / الصفحة الرئيسية", + "logo_brand": "الشعار / العلامة التجارية", + "remove": "إزالة", + "no_branch": "لم يتم إضافة فرع حتى الآن", + "login_once": "الرجاء تسجيل الدخول مرة واحدة", + "defineLicenese": "تحميل التراخيص والشهادات", + "description": "وصف", + "attachFile": "أرفق ملف", + "branchLocation": "معلومات الفرع والموقع", + "tapToEdit": "انقر للتعديل", + "myServiceBranches": "فروع خدمتي", + "enter_licence_detail": "الرجاء إدخال تفاصيل السجلات التجارية وإرفاق صور الترخيص", + "country": "بلد", + "city": "مدينة", + "editServices": "تحرير الخدمات", + "maintenance": "صيانة", + "accessories_modifications": "الملحقات والتعديلات", + "my_recent_providers": "مزودي الخدمة الجدد", + "my_active_ads": "إعلاناتي النشطة", + "recommended_Ads": "الإعلانات الموصى بها", + "location": "موقع", + "address": "عنوان", + "branchName": "اسم الفرع", + "branchDescription": "وصف الفرع", + "branchInfo": "معلومات الفرع", + "defineServices": "تحديد الخدمات", + "defineBranches": "تحديد الفروع", + "defineProviders": "تحديد الموفرين", + "closeAccount": "حساب مغلق", + "selectServiceCategory": "حدد فئة الخدمة", + "selectService": "حدد الخدمة", + "selectBranch": "حدد الفرع", + "createBranch": "إنشاء فرع", + "updateBranch": "تحديث فرع", + "branches": "الفروع", + "requests": "الطلبات", + "noBranchFound": "لم يتم العثور على فرع", + "onlyProviderApp": "نأسف هذا التطبيق فقط لمقدمي الخدمات", + "pickAddress": "اختر العنوان", + "pickLocation": "اختر الموقع", + "chooseCity": "اختر المدينه", + "selectAttachment": "اختيار مرفق", + "somethingWrong": "هناك خطأ ما", + "documentsUploaded": "تم ارفاق الملف بنجاح", + "update": "تحديث", + "profileCompleted": "الملف الشخصي مكتمل", + "selectLocationMap": "اختر الموقع", + "licensesAndCertifications": "الرخص و الشهادات", + "completeProfile1": "اكمل الملف الشخصي 1/3", + "completeProfile2": "اكمل الملف الشخصي 2/3", + "completeProfile3": "اكمل الملف الشخصي 3/3", + "provider": "مزود", + "noRequeststoShow": "لا توجد طلبات للعرض", + "myBranches": "فروعي", + "mergeAppointments": "دمج المواعيد", + "addService": "أضف الخدمة", + "selectServicestoAdd": "حدد الخدمات التي تريد إضافتها", + "noServiceFound": "لم يتم العثور على الخدمة", + "selectItems": "اختيار العناصر", + "noItemSelectedYet": "لم يتم تحديد أي عنصر بعد", + "totalAdditionalAmount": "إجمالي المبلغ الإضافي", + "sar": "ريال سعودي", + "cancel": "يلغي", + "add": "يضيف", + "itemsAddedSuccessfully": "تمت إضافة العناصر بنجاح", + "pleaseSelectItems": "يرجى اختيار العناصر", + "totalAmount": "المبلغ الإجمالي", + "searchItems": "البحث عن العناصر", + "addSelectedItems": "إضافة العناصر المحددة", + "collectMoneyBefore": "هل ترغب في جمع المال قبل تقديم الخدمات؟", + "yes": "نعم", + "no": "لا", + "reason": "السبب", + "typeHere": "اكتب هنا...", + "pleaseSelectReason": "يرجى تحديد السبب", + "noAppointmentFound": "لم يتم العثور على مواعيد", + "slotsOverview": "نظرة عامة على الفتحات", + "empty": "فارغ", + "occupied": "محجوز", + "totalSlots": "إجمالي الفتحات", + "selectAppointments": "اختيار المواعيد", + "appointmentMergeSuccessfully": "دمج المواعيد تم بنجاح", + "updateAppointment": "تحديث الموعد", + "addNewService": "إضافة خدمة جديدة", + "waitingPaymentfromtheCustomer": "في انتظار الدفع من العميل", + "appointmentisCompleted": "تم اكتمال الموعد", + "workStart": "بدء العمل", + "payNow": "ادفع الآن", + "arrived": "وصل", + "payLater": "ادفع لاحقًا", + "complete": "اكتمل", + "makeAnOffer": "قدم عرضًا", + "enterAmount": "أدخل المبلغ", + "submit": "إرسال", + "viewChat": "عرض الدردشة", + "requestDetail": "تفاصيل الطلب", + "sendOffer": "إرسال عرض", + "offer": "عرض", + "sendPriceOffer": "إرسال عرض السعر", + "comment": "تعليق", + "sendOTP": "إرسال رمز OTP", + "noUserAddedYet": "لم يتم إضافة مستخدم بعد", + "assignDealerUser": "تعيين مستخدم تاجر", + "createNewUser": "إنشاء مستخدم جديد", + "dealerUser": "مستخدم تاجر", + "setorEditBranchSchedule": "تعيين أو تحرير جدول الفروع", + "addServices": "إضافة خدمات", + "noServiceAddedYet": "لم تتم إضافة خدمات بعد", + "selectDays": "اختيار الأيام", + "addSelectedDays": "إضافة الأيام المحددة", + "select_Services": "اختيار الخدمات", + "searchService": "البحث عن الخدمة", + "addSelectedServices": "إضافة الخدمات المحددة", + "nameofSchedule": "اسم الجدول الزمني", + "startingDate": "تاريخ البدء", + "endDate": "تاريخ الانتهاء", + "offDays": "أيام الراحة", + "shiftStartTime": "وقت بدء الوردية", + "shiftEndTime": "وقت انتهاء الوردية", + "slotsTime": "وقت الفتحات", + "appointmentPerSlot": "موعد لكل فتحة", + "create": "إنشاء", + "pleaseEnterValidScheduleName": "يرجى إدخال اسم جدول صالح", + "pleaseSelectServices": "يرجى اختيار الخدمات", + "pleaseSelectStartDate": "يرجى تحديد تاريخ البدء", + "pleaseSelectEndDate": "يرجى تحديد تاريخ الانتهاء", + "pleaseSelectOffDays": "يرجى تحديد أيام الراحة", + "pleaseSelectStartTime": "يرجى تحديد وقت بدء الوردية", + "pleaseSelectEndTime": "يرجى تحديد وقت انتهاء الوردية", + "pleaseSelectSlotTime": "يرجى تحديد وقت الفتحة", + "pleaseSelectAppointmentPerSlot": "يرجى تحديد موعد لكل فتحة", + "exploreAds": "استكشاف الإعلانات", + "myAds": "إعلاناتي", + "noAppointmentstoShow": "لا توجد مواعيد لعرضها", + "myRecommendedAds": "الإعلانات الموصى بها لي", + "model": "الموديل", + "chooseImageSource": "اختر مصدر الصورة", + "camera": "الكاميرا", + "gallery": "المعرض", + "imageIsDeleted": "تم حذف الصورة", + "myRequests": "طلباتي", + "branchDetail": "تفاصيل الفرع", + "time": "الوقت", + "openMapLocation": "فتح موقع الخريطة", + "providerProfile": "ملف المزود", + "servicesOffer": "الخدمات المقدمة", + "noServicesAvailable": "لا تتوفر خدمات", + "bookAppointment": "حجز موعد", + "allowingHomeService": "السماح بخدمة منزلية", + "homeServiceRange": "نطاق الخدمة المنزلية", + "chargesPerKM": "الرسوم لكل كيلومتر", + "providerDetails": "تفاصيل المزود", + "someDescriptionExperienceandtheirReputation": "بعض الوصف عن المزود وسنوات خبرتهم وسمعتهم", + "availableforAppointment": "متاح للموعد", + "allowingWorkshopService": "السماح بخدمة ورشة العمل", + "serviceAmount": "مبلغ الخدمة", + "youNeedStoragePermissionFiles": "تحتاج إلى منح إذن التخزين لاختيار الملفات.", + "settingDeniedPermanently": "تم رفض هذا الإذن بشكل دائم، يرجى الذهاب إلى الإعدادات والسماح.", + "openAppSetting": "افتح إعدادات التطبيق", + "adDuration": "مدة الإعلان", + "startDate": "تاريخ البدء", + "contactDetails": "تفاصيل الاتصال", + "showyournumbertoBuyers": "هل تريد إظهار رقمك للمشترين؟", + "isNumberRegisteredWhatsApp": "هل هذا الرقم مسجل على واتساب؟", + "selectSpecialServices": "اختر الخدمات الخاصة", + "vehicleDetails": "تفاصيل المركبة", + "vehicleModel": "طراز المركبة", + "vehicleColor": "لون المركبة", + "vehicleCategory": "فئة المركبة", + "vehicleTransmission": "نقل المركبة", + "vehicleCountry": "بلد المركبة", + "vehicleAmount": "مبلغ المركبة", + "vehicleTitle": "عنوان المركبة", + "financeAvailable": "التمويل متاح", + "vehiclePictures": "صور المركبة", + "vehiclePart": "جزء المركبة", + "damagePartPictures": "صور الأجزاء المتضررة", + "vehicleDamagePart": "جزء المركبة المتضرر", + "duration": ":المدة", + "specialServices": "الخدمات الخاصة", + "specialService": "خدمة خاصة", + "adContactDetails": "تفاصيل الاتصال بالإعلان", + "onWhatsAp": "على واتساب", + "reserveAdPriceInfo": "معلومات سعر الإعلان المحجوز", + "addDamagePart": "إضافة جزء متضرر", + "vehicleType": "نوع المركبة", + "vehicleYear": "سنة المركبة", + "vehicleCondition": "حالة المركبة", + "vehicleMileage": "عدد الأميال للمركبة", + "sellerType": "نوع البائع", + "vehicleCity": "مدينة المركبة", + "vehicleVIN": "رقم تعريف المركبة (VIN)", + "warrantyAvailable": "الضمان متاح", + "years": "سنوات", + "vehicleDetail": "تفاصيل المركبة", + "vehicleBrand": "ماركة المركبة", + "vehicleModelYear": "سنة طراز المركبة", + "vehicleSellerType": "نوع بائع المركبة", + "demandAmount": "المبلغ المطلوب", + "warrantyAvailableYears": "الضمان متاح (عدد السنوات)", + "vehicleDescription": "وصف المركبة", + "attachImage": "إرفاق صورة", + "useFingerPrintFaceID": "يرجى استخدام بصمة الإصبع أو معرف الوجه", + "setupTouchID": "يرجى إعداد معرف اللمس", + "reenableTouchID": "يرجى إعادة تمكين معرف اللمس", + "scanFaceIDAuthenticate": "امسح بصمة الإصبع أو معرف الوجه للتحقق", + "AdDeletedSuccessfully": "تم حذف الإعلان بنجاح!", + "yourReservationCancelled": "تم إلغاء حجزك.", + "adDeactivatedSuccessfully": "تم إلغاء تفعيل الإعلان بنجاح!", + "vehicle": { + "selectVehicleType": "يرجى اختيار نوع السيارة", + "selectVehicleModel": "يرجى اختيار طراز السيارة", + "selectVehicleModelYear": "يرجى اختيار سنة طراز السيارة", + "selectVehicleColor": "يرجى اختيار لون السيارة", + "vehicleCondition": "يرجى اختيار حالة السيارة", + "vehicleCategory": "يرجى اختيار فئة السيارة", + "vehicleMileage": "يرجى اختيار عدد أميال السيارة", + "vehicleTransmission": "يرجى اختيار نوع ناقل الحركة", + "vehicleSellerType": "يرجى اختيار نوع بائع السيارة", + "selectAny": "يرجى اختيار أي خيار", + "vehicleCity": "يرجى اختيار مدينة السيارة", + "vehiclePart": "يرجى اختيار جزء السيارة", + "selectValidVehicleType": "يرجى اختيار نوع سيارة صالح" + }, + "selectAppointmentTimeService": "يجب عليك اختيار وقت الموعد للخدمة.", + "error": "خطأ", + "appointmentBookedSuccessfully": "تم حجز موعدك بنجاح", + "appointmentStatusUpdated": "تم تحديث حالة الموعد", + "paymentStatusUpdated": "تم تحديث حالة الدفع", + "selectOneSubService": "يرجى اختيار خدمة فرعية واحدة على الأقل", + "chargesBreakdown": "تفاصيل الرسوم", + "services": "الخدمات", + "homeLocation": "الموقع المنزلي", + "selectAppointmentTime": "يجب عليك اختيار وقت الموعد لكل موعد في الجدول", + "noAppointmentAvailable": "لا توجد مواعيد متاحة للعناصر المحددة", + "changedMind": "لقد غيرت رأيي", + "veryHighPrice": "السعر مرتفع جداً", + "alreadySold": "تم البيع بالفعل", + "otherVar": "أخرى", + "paymentSuccessful": "تم الدفع بنجاح", + "paymentFailed": "فشل الدفع!", + "requestSuccessfullyCreated": "تم إنشاء الطلب بنجاح", + "selectValidRequestType": "يرجى اختيار نوع طلب صالح", + "selectValidBrand": "يرجى اختيار علامة تجارية صالحة", + "selectValidModel": "يرجى اختيار طراز صالح", + "selectValidYear": "يرجى اختيار سنة صالحة", + "selectValidCountry": "يرجى اختيار بلد صالح", + "selectValidCity": "يرجى اختيار مدينة صالحة", + "addValidPrice": "يرجى إضافة سعر صالح", + "addValidDescription": "يرجى إضافة وصف صالح", + "passwordTooShort": "كلمة المرور الخاصة بك قصيرة جدًا", + "passwordAcceptableStrong": "كلمة المرور الخاصة بك مقبولة ولكنها ليست قوية", + "passwordIsStrong": "كلمة المرور الخاصة بك قوية", + "passwordVeryStrong": "كلمة المرور الخاصة بك قوية جدًا", + "selectDuration": "اختر المدة", + "daysVar": "الأيام", + "adCharges": "رسوم الإعلان", + "select": "اختر", + "deleteAdConfirmation": "هل تريد حذف الإعلان؟", + "deleteAdConfirmationMessage": "سيتم حذف إعلانك نهائيًا ولا يمكنك التراجع عن هذا الإجراء", + "mileage": "المسافة المقطوعة", + "transmission": "ناقل الحركة", + "demand": "الطلب", + "adDurationExpired": "انتهت مدة عرض الإعلان الخاص بك", + "bankDetails": "تفاصيل البنك", + "bankName": "اسم البنك", + "iban": "الرقم الدولي للحساب المصرفي (IBAN)", + "rejectionComments": "تعليقات الرفض", + "editAd": "تعديل الإعلان", + "reserveAd": "حجز الإعلان", + "reservationAmount": "مبلغ الحجز", + "belowAmountPayLater": "المبلغ الذي ستدفعه لاحقًا", + "carPrice": "سعر السيارة", + "vatExcluded": "القيمة المضافة غير مشمولة", + "carInsuranceService": "خدمة التأمين على السيارة", + "toBeDecided": "لم يتم اتخاذ القرار بعد", + "registrationCarPlates": "تسجيل ولوحات السيارة", + "homeDeliveryService": "خدمة التوصيل إلى المنزل", + "specialServicechargesInsuranceDeliveryLocation": "سيتم إضافة رسوم خدمة خاصة بناءً على التأمين المطلوب وموقع التسليم", + "estimated": "مقدر", + "servicesReservingAd": "بعض الخدمات إلزامية أثناء حجز الإعلان", + "completeReservation": "إتمام الحجز", + "contact": "اتصال", + "setDateandTime": "تحديد التاريخ والوقت", + "selectOffice": "اختيار المكتب", + "availableSlots": "المواعيد المتاحة", + "bookAndPay": "الحجز والدفع", + "reservationAmounts": "مبالغ الحجز", + "tax": "الضريبة", + "adsFilter": "تصفية الإعلانات", + "searchByCity": "البحث حسب المدينة", + "selectCity": "اختر المدينة", + "searchByBrandName": "البحث حسب اسم العلامة التجارية", + "selectVehicleBrand": "اختر علامة تجارية للسيارة", + "searchByVehicleYear": "البحث حسب سنة السيارة", + "selectYear": "اختر السنة", + "searchByAdOwner": "البحث حسب مالك الإعلان", + "selectOwner": "اختر المالك", + "search": "بحث", + "clearFilters": "مسح التصفية", + "book": "حجز", + "markAsSold": "وضع علامة تم البيع", + "deactivateAd": "إلغاء تفعيل الإعلان", + "doWantDeactivateAd": "هل تريد إلغاء تفعيل هذا الإعلان؟", + "stoptheBuyers": "سنتوقف عن عرض هذا الإعلان للمشترين", + "cancelReservation": "إلغاء الحجز", + "reasonForCancellation": "سبب الإلغاء", + "doWantCancelReservation": "هل تريد إلغاء الحجز؟", + "yourAdVisibletoBuy": "سيتم إلغاء حجز إعلانك وسيكون هذا الإعلان مرئيًا للجميع مرة أخرى للشراء", + "completeDeal": "إتمام الصفقة", + "uploadBankReceipt": "تحميل إيصال البنك", + "notesForAdmin": "ملاحظات للإدارة", + "extendAd": "تمديد الإعلان", + "updateAdDetails": "هل تريد تحديث تفاصيل الإعلان", + "durationExtendingAd": "يمكنك تغيير مدة الإعلان والتفاصيل قبل تمديد الإعلان", + "waitingAdminsResponse": "في انتظار رد الإدارة", + "cancelledByOwner": "ألغيت من قبل المالك", + "cancelledByAdmin": "ألغيت من قبل الإدارة", + "reservationTimeOver": "انتهى وقت الحجز", + "paymentVerified": "تم التحقق من الدفع", + "rejectedFormAdmin": "تم الرفض من قبل الإدارة", + "waitingAdminPost": "في انتظار الإدارة للنشر", + "waitingAdminsApproval": "في انتظار موافقة الإدارة", + "sold": "تم البيع", + "noAdsShow": "لا توجد إعلانات لعرضها", + "damagePartList": "قائمة الأجزاء المتضررة", + "searchPart": "البحث عن جزء", + "addSpecialService": "إضافة خدمة خاصة", + "vehicleVar": "السيارة", + "detailsVar": "التفاصيل", + "damageVar": "الضرر", + "partsVar": "الأجزاء", + "additional": "إضافي", + "review": "مراجعة", + "adVar": "الإعلان", + "updateAd": "تحديث الإعلان", + "createAd": "إنشاء إعلان", + "next": "التالي", + "submitAd": "إرسال الإعلان", + "selectAdType": "اختر نوع الإعلان", + "validUntilSubscriptionExpiration": "صالح حتى انتهاء الاشتراك", + "adsRemainingVar": "الإعلانات المتبقية", + "youLeftAdsGivenSubscription": "لقد بقي لديك 05 من 50 إعلانًا في الاشتراك.", + "updateSubscription": "تحديث الاشتراك", + "workInProgress": "العمل جارٍ", + "visitCompleted": "تمت الزيارة", + "youWantCancelAppointment": "هل تريد إلغاء هذا الموعد؟", + "appointmentCancelledCannotUndoAction": "سيتم إلغاء موعدك ولا يمكنك التراجع عن هذا الإجراء", + "appointment": "الموعد", + "rescheduleAppointment": "إعادة جدولة الموعد", + "payforAppointment": "دفع ثمن الموعد", + "appointmentsFilter": "تصفية المواعيد", + "searchByProvider": "البحث حسب المزود", + "selectProvider": "اختر المزود", + "searchByBranch": "البحث حسب الفرع", + "searchByCategory": "البحث حسب الفئة", + "selectCategory": "اختر الفئة", + "searchByService": "البحث حسب الخدمة", + "selectServices": "اختر الخدمات", + "modifyPackage": "تعديل الحزمة", + "schedule": "الجدول", + "serviceLocation": "موقع الخدمة:", + "workshop": "ورشة العمل", + "itemsSelected": "العناصر المحددة", + "workshopFullAccessServices": "بعض الخدمات غير متوفرة في الموقع المنزلي. قم بتغيير الموقع إلى ورشة العمل للوصول الكامل إلى الخدمات", + "changeLocationService": "تغيير الموقع أو الخدمة:", + "noItemstoShow": "لا توجد عناصر لعرضها.", + "someDescriptionSubServices": "بعض الوصف عن الخدمات الفرعية", + "selectServicesYouWant": "اختر الخدمات التي تريدها", + "selectServiceType": "اختر نوع الخدمة", + "selectDateAndTime": "اختر التاريخ والوقت", + "reviewAppointment": "مراجعة الموعد", + "carEngineCheck": "فحص محرك السيارة", + "dateAndTime": "التاريخ والوقت", + "timeLocation": "الوقت والموقع", + "serviceCharges": "رسوم الخدمة", + "locationCharges": "رسوم الموقع", + "payableNow": "المبلغ المستحق الآن", + "remainingAmount": "المبلغ المتبقي", + "branchesFilter": "تصفية الفروع", + "searchByDistance": "البحث حسب المسافة", + "searchByMinimumRatings": "البحث حسب التقييمات الأدنى", + "chat": "الدردشة", + "noRequestsShow": "لا توجد طلبات لعرضها.", + "typeMessageHere": "اكتب رسالتك هنا..", + "reject": "رفض", + "newOfferRequired": "مطلوب عرض جديد", + "offerHasBeenAccepted": "تم قبول العرض", + "offerHasBeenRejected": "تم رفض العرض", + "offerHasBeenCancelled": "تم إلغاء العرض", + "paymentMethod": "طريقة الدفع", + "selectPaymentMethod": "اختر طريقة الدفع", + "password": "كلمة المرور", + "customerName": "اسم العميل", + "createRequest": "إنشاء طلب", + "requestType": "نوع الطلب", + "brand": "العلامة التجارية", + "year": "السنة", + "price": "السعر", + "shippingDelivery": "الشحن/التسليم", + "offers": "العروض", + "noOffersShow": "لا توجد عروض لعرضها", + "allDocumentMandatoryDealershipProvider": "جميع المستندات إلزامية لمقدم خدمات الوكالة", + "documentsUploadedSuccessfully": "تم تحميل المستندات بنجاح", + "help": "المساعدة", + "faqs": "الأسئلة الشائعة", + "contactUs": "اتصل بنا", + "termPrivacy": "الشروط والخصوصية", + "inviteFriends": "دعوة الأصدقاء", + "more": "المزيد", + "language": "اللغة", + "mySubscription": "اشتراكاتي", + "subscriptions": "الاشتراكات", + "defineLicenses": "تحديد التراخيص", + "logOut": "تسجيل الخروج", + "customer": "العميل", + "accept": "قبول", + "amountVAR": "كمية", + "nowVar": "الآن", + "whendoyouWanttoUpgrade": "متى تريد الترقية", + "yourSubscriptionUpgradeAffectingFrom": "سيتم ترقية اشتراكك الآن. ساري المفعول من", + "upgradeAfterCurrentExpiry": "الترقية بعد انتهاء الاشتراك الحالي", + "yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom": "سيتم ترقية اشتراكك بعد انتهاء اشتراكك الحالي. ساري المفعول من", + "upgradeVar": "ترقية", + "whendoyouWanttoRenew": "متى تريد التجديد", + "renewVar": "تجديد", + "requestAlreadyInProgress": "هذا الطلب قيد التقدم بالفعل." +}; +static const Map en_US = { + "firstTimeLogIn": "First Time Log In", + "signUp": "Sign Up", + "changeMobile": "Change Mobile", + "notifications": "Notifications", + "general": "General", + "defineLicences": "Define Licences", + "dealershipSettings": "Dealership Settings", + "changePassword": "Change Password", + "retrievePassword": "Retrieve Password", + "changeEmail": "Change Email", + "verify": "Verify", + "verified": "Verified", + "signOut": "Sign Out", + "enterEmail": "Enter Email", + "enterNewEmail": "Enter New Email", + "enterNewPassword": "Enter New Password", + "enterCurrentPassword": "Enter Current Password", + "enterOldPassword": "Enter Old Password", + "confirm": "Confirm", + "completeProfile": "Complete Profile", + "enterNewPhoneNumber": "Enter New Phone Number", + "enterPhoneNumber": "Enter Phone Number", + "continu": "Continue", + "confirmPassword": "Confirm Password", + "createPassword": "Create Password", + "email": "Email", + "firstName": "First Name *", + "surname": "Surname *", + "confirmPass": "Confirm Password *", + "createPass": "Create Password *", + "newPassword": "New Password", + "forgetPassword": "Forget Password", + "forgetPasswordRecover": "Forget Password? Recover", + "editAccount": "Edit Account", + "change": "Change", + "verifyAccount": "Verify Account", + "login": "Log In", + "welcomeMessage": "Welcome Message", + "forgetPass": "Forget Password ?", + "phoneNumberVerified": "Phone Number Verified", + "verifyNewPassword": "Verify New Password", + "EnterPass": "Enter Password ?", + "alreadySigned": " Already Signed Up and Logged In", + "emailChangedSuccessfully": "Email is Changed Successfully", + "passwordIsUpdated": "Password is Updated", + "passwordShouldContains": "Password Should contains Character, Number, Capital and small letters,", + " successfullyRegistered": " Successfully Registered, Please login once,", + "pleaseEnterSamePassword": "Please enter same password", + "firstNameMandatory": "First name is mandatory", + "surnameNameMandatory": "Surname is mandatory", + "passwordNameMandatory": "Password is mandatory", + "enterValidEmail": "Enter Valid Email", + "pleaseAcceptTerms": "Please accept terms", + "emailVerified": "Email is verified successfully", + "selectMethod": "Select Method", + "emailAddress": "Email Address", + "loginSelection": "Login Selection", + "selectCountryCode": "Please select Country Code", + "selectProviderRole": "Please select Provider Role", + "addPhoneNo": "Please add Phone No", + "onlyCustomerApp": "Sorry, Only Customer's can log in this app", + "imageUploaded": "Image is uploaded", + "fileLarger": "File is larger then 1KB", + "account": "Account", + "edit": "EDIT", + "imageDeleted": "Image is Deleted", + "dashboard": "Dashboard/Main Page", + "termsOfService": "By creating an account you agree to our", + "userInformation": "User Information", + "faceRecognition": "Face Recognition", + "fingerPrint": "Finger Print", + "whatsapp": "With Whatsapp", + "SMS": "With SMS", + "selectRole": "Select Role", + "userRoleOrTitle": "User role or title", + "codeSentToEmail": "Code is sent to email", + "number": "Number", + "english": "English", + "title": "Hello", + "msg": "Hello {} in the {} world ", + "msg_named": "{} are written in the {lang} language", + "clickMe": "Click me", + "profile": { + "reset_password": { + "label": "Reset Password", + "username": "Username", + "password": "password" + } + }, + "clicked": { + "zero": "You clicked {} times!", + "one": "You clicked {} time!", + "two": "You clicked {} times!", + "few": "You clicked {} times!", + "many": "You clicked {} times!", + "other": "You clicked {} times!" + }, + "amount": { + "zero": "Your amount : {} ", + "one": "Your amount : {} ", + "two": "Your amount : {} ", + "few": "Your amount : {} ", + "many": "Your amount : {} ", + "other": "Your amount : {} " + }, + "gender": { + "male": "Hi man ;) ", + "female": "Hello girl :)", + "with_arg": { + "male": "Hi man ;) {}", + "female": "Hello girl :) {}" + } + }, + "reset_locale": "Reset Language", + "welcomeDes": "You one stop place all your car needs", + "log_in": "Log In", + "send": "Send", + "phoneNumber": "Phone Number", + "forgetPasswordQ": "Forget Password?", + "recover": "Recover", + "retrivePassword": "Retrive password by one of following method", + "retriveOnPhone": "We will send the opt to your registered mobile number", + "retriveOnEmail": "We will send the opt to your registered email address", + "enterPhoneForVerfication": "Please enter your phone number We will send you the verification code", + "welcomeBack": "Welcome Back!!!", + "selectYourCountry": "Select Your Country", + "chooseCountry": "Choose Country", + "terms": "Terms of Service and Privacy Policy", + "profileMsg": "Enter the details below and complete the profile info", + "save": "Save", + "insert_otp_code": "Enter the code", + "type_code": "Please type the code we sent to", + "resend_code": "Resend Code", + "check_code": "Check Code", + "time_will_expire": "Resend code in", + "sec": "sec", + "providers": "Providers", + "appointments": "Appointments", + "home": "Home", + "ads": "Ads", + "settings": "Settings", + "view_all": "view all", + "my_active_Ads": "My Active Ads", + "recommended_ads": "Recommended Ads", + "upcoming_appointment": "Upcoming Appointment", + "my_service_providers": "My Recent Service Providers", + "appointment_details": "Appointment Details", + "no_city_available": "No City Available for this country", + "branch_created": "Branch is successfully created", + "branch_updated": "Branch is successfully Updated", + "branch_deleted": "Branch is successfully Deleted", + "dashboard_main": "Dashboard/Main Page", + "logo_brand": "Logo/Brand", + "remove": "Remove", + "no_branch": "No Branch Added Yet", + "login_once": "Please login once", + "defineLicenese": "Upload Licenses and Certificates", + "description": "Description", + "attachFile": "Attach File", + "branchLocation": "Branch info and Location", + "tapToEdit": "Tap to edit", + "myServiceBranches": "My Service Branches", + "enter_licence_detail": "Please enter the detail for commercial records and attach the license images", + "country": "Country", + "city": "City", + "editServices": "Edit Services", + "maintenance": "Maintenance", + "accessories_modifications": "Accessories and Modifications", + "my_recent_providers": "My Recent Service Providers", + "my_active_ads": "My Active Ads", + "recommended_Ads": "Recommended Ads", + "select_services": "Select services you want", + "location": "Location", + "address": "Address", + "branchName": "Branch Name", + "branchDescription": "Branch Description", + "branchInfo": "Branch Info", + "defineServices": "Define Services", + "defineBranches": "Define Branches", + "defineProviders": "Define Providers", + "closeAccount": "Close Account", + "selectServiceCategory": "Select Service Category", + "selectService": "Select Service", + "selectBranch": "Select Branch", + "createBranch": "Create Branch", + "updateBranch": "Update Branch", + "branches": "Branches", + "requests": "Requests", + "noBranchFound": "No Branch Found", + "pickAddress": "Pick Address", + "pickLocation": "Pick Location", + "chooseCity": "Select City", + "selectAttachment": "Select Attachment", + "somethingWrong": "Something went wrong", + "documentsUploaded": "Documents uploaded successfully", + "update": "Update", + "profileCompleted": "Profile is Completed", + "selectLocationMap": "Select Location Map", + "licensesAndCertifications": "licenses & certifications", + "completeProfile1": "Complete Profile 1/3", + "completeProfile2": "Complete Profile 2/3", + "completeProfile3": "Complete Profile 3/3", + "provider": "Provider", + "noRequeststoShow": "No Requests to Show", + "myBranches": "My Branches", + "mergeAppointments": "Merge Appointments", + "addService": "Add Service", + "selectServicestoAdd": "Select services you want to add", + "noServiceFound": "No Service Found", + "selectItems": "Select Items", + "noItemSelectedYet": "No Item Selected Yet", + "totalAdditionalAmount": "Total Additional Amount", + "sar": "SAR", + "cancel": "Cancel", + "add": "Add", + "itemsAddedSuccessfully": "Items are added Successfully", + "pleaseSelectItems": "Please select items", + "totalAmount": "Total Amount", + "searchItems": "Search Items", + "addSelectedItems": "Add Selected Items", + "collectMoneyBefore": "Do you want to collect the money before providing services?", + "yes": "Yes", + "no": "No", + "reason": "Reason", + "typeHere": "Type Here...", + "pleaseSelectReason": "Please Select Reason", + "noAppointmentFound": "No Appointment Found", + "slotsOverview": "Slots Overview", + "empty": "Empty", + "occupied": "Occupied", + "totalSlots": "Total Slots", + "selectAppointments": "Select Appointments", + "appointmentMergeSuccessfully": "Appointment Merge is Successfully done", + "updateAppointment": "Update Appointment", + "addNewService": "Add New Service", + "waitingPaymentfromtheCustomer": "Waiting for the payment from the customer", + "appointmentisCompleted": "Appointment is completed", + "workStart": "Work Start", + "payNow": "Pay Now", + "arrived": "Arrived", + "payLater": "Pay Later", + "complete": "Complete", + "makeAnOffer": "Make an offer", + "enterAmount": "Enter amount", + "submit": "Submit", + "viewChat": "View Chat", + "requestDetail": "Request Detail", + "sendOffer": "Send Offer", + "offer": "Offer", + "sendPriceOffer": "Send Price Offer", + "comment": "Comment", + "sendOTP": "Send OTP", + "noUserAddedYet": "No User Added Yet", + "assignDealerUser": "Assign Dealer User", + "createNewUser": "Create New User", + "dealerUser": "Dealer User", + "setorEditBranchSchedule": "Set or Edit Branch Schedule", + "addServices": "Add Services", + "noServiceAddedYet": "No Service Added Yet", + "selectDays": "Select Days", + "addSelectedDays": "Add Selected Days", + "select_Services": "Select Services", + "searchService": "Search Service", + "addSelectedServices": "Add Selected Services", + "nameofSchedule": "Name of Schedule", + "startingDate": "Starting Date", + "endDate": "End Date", + "offDays": "Off Days", + "shiftStartTime": "Shift Start Time", + "shiftEndTime": "Shift End Time", + "slotsTime": "Slots Time", + "appointmentPerSlot": "Appointment Per Slot", + "create": "Create", + "pleaseEnterValidScheduleName": "Please enter valid schedule Name", + "pleaseSelectServices": "Please select Services", + "pleaseSelectStartDate": "Please select start date", + "pleaseSelectEndDate": "Please select end date", + "pleaseSelectOffDays": "Please Select off Days", + "pleaseSelectStartTime": "Please select start time", + "pleaseSelectEndTime": "Please select end time", + "pleaseSelectSlotTime": "Please select slot time", + "pleaseSelectAppointmentPerSlot": "Please select appointment per slot", + "exploreAds": "Explore Ads", + "myAds": "My Ads", + "noAppointmentstoShow": "No Appointments to show", + "myRecommendedAds": "My Recommended Ads", + "model": "Model", + "chooseImageSource": "Choose image source", + "camera": "Camera", + "gallery": "Gallery", + "imageIsDeleted": "Image is Deleted", + "myRequests": "My Requests", + "branchDetail": "Branch Detail", + "time": "Time", + "openMapLocation": "Open Map Location", + "providerProfile": "Provider Profile", + "servicesOffer": "Services Offer", + "noServicesAvailable": "No Services Available", + "bookAppointment": "Book Appointment", + "allowingHomeService": "Allowing home service", + "homeServiceRange": "Home service range", + "chargesPerKM": "Charges per KM", + "providerDetails": "Provider Details", + "someDescriptionExperienceandtheirReputation": "Some description about the provider and their years of experience and their reputation", + "availableforAppointment": "Available for appointment", + "allowingWorkshopService": "Allowing Workshop service", + "serviceAmount": "Service Amount", + "youNeedStoragePermissionFiles.": "You need to give storage permission to select files.", + "settingDeniedPermanently": "This permission was denied permanently, Please go to settings and allow. ", + "openAppSetting": "Open App Setting", + "adDuration": "Ad Duration", + "startDate": "Start Date", + "contactDetails": "Contact Details", + "showyournumbertoBuyers": "Do you want to show your number to the buyers?", + "isNumberRegisteredWhatsApp": "Is this number registered on WhatsApp?", + "selectSpecialServices": "Select Special Services", + "vehicleDetails": "Vehicle Details", + "vehicleModel": "Vehicle Model", + "vehicleColor": "Vehicle Color", + "vehicleCategory": "Vehicle Category", + "vehicleTransmission": "Vehicle Transmission", + "vehicleCountry": "Vehicle Country", + "vehicleAmount": "Vehicle Amount", + "vehicleTitle": "Vehicle Title", + "financeAvailable": "Finance Available", + "vehiclePictures": "Vehicle Pictures", + "vehiclePart": "Vehicle Part", + "damagePartPictures": "Damage Part Pictures", + "vehicleDamagePart": "Vehicle Damage Part", + "duration": "Duration:", + "specialServices": "Special Services", + "specialService": "Special Service", + "adContactDetails": "Ad Contact Details", + "onWhatsAp": "On WhatsAp", + "reserveAdPriceInfo": "Reserve Ad Price Info", + "addDamagePart": "Add Damage Part", + "vehicleType": "Vehicle Type", + "vehicleYear": "Vehicle Year", + "vehicleCondition": "Vehicle Condition", + "vehicleMileage": "Vehicle Mileage", + "sellerType": "Seller Type", + "vehicleCity": "Vehicle City", + "vehicleVIN": "Vehicle VIN", + "warrantyAvailable": "Warranty Available", + "years": "Years", + "vehicleDetail": "Vehicle Detail", + "vehicleBrand": "Vehicle Brand", + "vehicleModelYear": "Vehicle Model Year", + "vehicleSellerType": "Vehicle Seller Type", + "demandAmount": "Demand Amount", + "warrantyAvailableYears": "Warranty Available (No. of Years)", + "vehicleDescription": "Vehicle Description", + "attachImage": "Attach Image", + "useFingerPrintFaceID": "Please use your fingerprint or face ID", + "setupTouchID": "Please set up your Touch ID", + "reenableTouchID": "Please reenable your Touch ID", + "scanFaceIDAuthenticate": "Scan your fingerprint or face ID to authenticate", + "adDeletedSuccessfully": "Ad has been deleted successfully!", + "yourReservationCancelled": "Your reservation has been cancelled.", + "adDeactivatedSuccessfully": "Ad has been deactivated successfully!", + "vehicle": { + "selectVehicleType": "Please select vehicle type", + "selectVehicleModel": "Please select vehicle model", + "selectVehicleModelYear": "Please select vehicle model year", + "selectVehicleColor": "Please select vehicle color", + "vehicleCondition": "Please select vehicle condition", + "vehicleCategory": "Please select vehicle category", + "vehicleMileage": "Please select vehicle Mileage", + "vehicleTransmission": "Please select vehicle transmission", + "vehicleSellerType": "Please select vehicle seller type", + "selectAny": "Please select any", + "vehicleCity": "Please select vehicle city", + "vehiclePart": "Please select vehicle part", + "selectValidVehicleType": "Please select valid Vehicle Type" + }, + "selectAppointmentTimeService": "You must select appointment time the service.", + "error": "Error", + "appointmentBookedSuccessfully": "Your appointment has been booked successfully", + "appointmentStatusUpdated": "Appointment Status Updated", + "paymentStatusUpdated": "Payment Status Updated", + "selectOneSubService": "Please select at least one sub service", + "chargesBreakdown": "Charges Breakdown", + "services": "Services", + "homeLocation": "Home Location", + "selectAppointmentTime": "You must select appointment time for each schedule's appointment", + "noAppointmentAvailable": "There are no available appointments for selected Items", + "changedMind": "I have changed my mind", + "veryHighPrice": "Very High Price", + "alreadySold": "Already Sold", + "otherVar": "Other", + "paymentSuccessful": "Payment Successful", + "paymentFailed": "Payment Failed!", + "requestSuccessfullyCreated": "Request Successfully Created", + "selectValidRequestType": "Please select valid Request Type", + "selectValidBrand": "Please select valid Brand", + "selectValidModel": "Please select valid Model", + "selectValidYear": "Please select valid Year", + "selectValidCountry": "Please select valid Country", + "selectValidCity": "Please select valid City", + "addValidPrice": "Please add valid Price", + "addValidDescription": "Please add valid Description", + "passwordTooShort": "Your password is too short", + "passwordAcceptableStrong": "Your password is acceptable but not strong", + "passwordIsStrong": "Your password is strong", + "passwordVeryStrong": "Your password is very strong", + "onlyProviderApp": "Sorry, Only Providers can log in this app", + "selectDuration": "Select Duration", + "daysVar": "Days", + "adCharges": "Ad Charges", + "select": "Select", + "deleteAdConfirmation": "Do you want to delete the ad?", + "deleteAdConfirmationMessage": "Your ad will be permanently deleted and you cannot undo this action", + "mileage": "mileage", + "transmission": "Transmission", + "demand": "Demand", + "adDurationExpired": "Your Ad Duration time is over", + "bankDetails": "Bank Details", + "bankName": "Bank Name", + "iban": "IBAN", + "rejectionComments": "Rejection Comments", + "editAd": "Edit Ad", + "reserveAd": "Reserve Ad", + "reservationAmount": "Reservation Amount", + "belowAmountPayLater": "Below Amount that you will pay later", + "carPrice": "Car Price", + "vatExcluded": "VAT Excluded", + "carInsuranceService": "Car insurance Service", + "toBeDecided": "To be Decided", + "registrationCarPlates": "Registration & Car Plates", + "homeDeliveryService": "Home Delivery Service", + "specialServicechargesInsuranceDeliveryLocation": "Special service charges will be added based on desired insurance and delivery Location", + "estimated": "Estimated", + "servicesReservingAd": "Some services are mandatory while reserving Ad", + "completeReservation": "Complete Reservation", + "contact": "Contact", + "setDateandTime": "Set Date and Time", + "selectOffice": "Select Office", + "availableSlots": "Available Slots", + "bookAndPay": "Book and Pay", + "reservationAmounts": "Reservation Amounts", + "tax": "Tax", + "adsFilter": "Ads Filter", + "searchByCity": "Search By City", + "selectCity": "Select City", + "searchByBrandName": "Search By Brand Name", + "selectVehicleBrand": "Select Vehicle Brand", + "searchByVehicleYear": "Search By Vehicle Year", + "selectYear": "Select Year", + "searchByAdOwner": "Search By Ad Owner", + "selectOwner": "Select Owner", + "search": "Search", + "clearFilters": "Clear Filters", + "book": "Book", + "markAsSold": "Mark As Sold", + "deactivateAd": "Deactivate Ad", + "doWantDeactivateAd": "Do you want to the Deactivate this Ad?", + "stoptheBuyers": "We will stop showing this ad to the buyers", + "cancelReservation": "Cancel Reservation", + "reasonForCancellation": "Reason for Cancellation", + "doWantCancelReservation": "Do you want to cancel the reservation", + "yourAdVisibletoBuy.": "Your ad reservation will be cancelled and this ad will be again visible to everyone to buy", + "completeDeal": "Complete Deal", + "uploadBankReceipt": "Upload Bank Receipt", + "notesForAdmin": "Notes For Admin", + "extendAd": "Extend Ad", + "updateAdDetails": "Do you want to update the Ad Details", + "durationExtendingAd": "You can change the ad duration and details before extending the ad", + "waitingAdminsResponse": "Waiting for Admins Response", + "cancelledByOwner": "Cancelled by Owner", + "cancelledByAdmin": "Cancelled by Admin", + "reservationTimeOver": "Reservation Time Over", + "paymentVerified": "Payment Verified", + "rejectedFormAdmin": "Rejected form Admin", + "waitingAdminPost": "Waiting for admin to post", + "waitingAdminsApproval": "Waiting for Admins Approval", + "sold": "Sold", + "noAdsShow": "No Ads to show", + "damagePartList": "Damage Part List", + "searchPart": "Search Part", + "addSpecialService": "Add Special Service", + "vehicleVar": "Vehicle", + "detailsVar": "Details", + "damageVar": "Damage", + "partsVar": "Parts", + "additional": "Additional", + "review": "Review", + "adVar": "Ad", + "updateAd": "Update Ad", + "createAd": "Create Ad", + "next": "Next", + "submitAd": "Submit Ad", + "selectAdType": "Select Ad Type", + "validUntilSubscriptionExpiration": "Valid Until Subscription Expiration", + "adsRemainingVar ": "Ads Remaining", + "youLeftAdsGivenSubscription": "You have left with 05 out of 50 ads given in the subscription.", + "updateSubscription": "Update Subscription", + "workInProgress": "Work In Progress", + "visitCompleted": "Visit Completed", + "youWantCancelAppointment": "Do you want to cancel this appointment?", + "appointmentCancelledCannotUndoAction": "Your appointment will be cancelled and you cannot undo this action.", + "appointment": "Appointment", + "rescheduleAppointment": "Reschedule Appointment", + "payforAppointment": "Pay for Appointment", + "appointmentsFilter": "Appointments Filter", + "searchByProvider": "Search By Provider", + "selectProvider": "Select Provider", + "searchByBranch": "Search By Branch", + "searchByCategory": "Search By Category", + "selectCategory": "Select Category", + "searchByService": "Search By Service", + "selectServices": "Select Services", + "modifyPackage": "Modify Package", + "schedule": "Schedule", + "serviceLocation": "Service Location:", + "workshop": "Workshop", + "itemsSelected": "Item(s) Selected", + "workshopFullAccessServices": "Few services are not available on home location. Change the location to workshop to full access the services", + "changeLocationService": "Change location or service:", + "noItemstoShow": "No Items to show.", + "someDescriptionSubServices": "Some description about the sub-services", + "selectServicesYouWant": "Select services you want", + "selectServiceType": "Select service type", + "selectDateAndTime": "Select date and time", + "reviewAppointment": "Review Appointment", + "carEngineCheck": "Car Engine Check", + "dateAndTime": "Date and Time", + "timeLocation": "Time & Location", + "serviceCharges": "Service Charges", + "locationCharges": "Location Charges", + "payableNow": "Payable Now", + "remainingAmount": "Remaining Amount", + "branchesFilter": "Branches Filter", + "searchByDistance": "Search By Distance", + "searchByMinimumRatings": "Search By Minimum Ratings", + "chat": "Chat", + "noRequestsShow": "No Requests to show.", + "typeMessageHere": "Type your message here..", + "reject": "Reject", + "newOfferRequired": "New Offer Required", + "offerHasBeenAccepted": "Offer has been accepted", + "offerHasBeenRejected": "Offer has been rejected", + "offerHasBeenCancelled": "Offer has been cancelled", + "paymentMethod": "Payment Method", + "selectPaymentMethod": "Select Payment Method", + "password": "Password", + "customerName": "Customer Name", + "createRequest": "Create Request", + "requestType": "Request Type", + "brand": "Brand", + "year": "Year", + "price": "Price", + "shippingDelivery": "Shipping/Delivery", + "offers": "Offers", + "noOffersShow": "No Offers to show", + "allDocumentMandatoryDealershipProvider": "All document's are mandatory for Dealership Provider", + "documentsUploadedSuccessfully": "Documents uploaded successfully", + "help": "Help", + "faqs": "FAQs", + "contactUs": "Contact Us", + "termPrivacy": "Term & Privacy", + "inviteFriends": "Invite Friends", + "more": "More", + "language": "Language", + "mySubscriptions": "My Subscription", + "subscriptions": "Subscriptions", + "defineLicenses": "Define Licenses", + "logOut": "Log Out", + "customer": "Customer", + "accept": "Accept", + "amountVAR": "Amount", + "nowVar": "Now", + "whendoyouWanttoUpgrade": "When do you want to upgrade", + "yourSubscriptionUpgradeAffectingFrom": "Your subscription will upgrade now. Affecting from", + "upgradeAfterCurrentExpiry": "Upgrade after current expiry", + "yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom": "Your subscription will upgrade after you current subscription will end. Affecting from", + "upgradeVar": "Upgrade", + "whendoyouWanttoRenew": "When do you want to renew", + "renewVar": "Renew", + "requestAlreadyInProgress": "This request is already in progress." +}; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index ef84d47..a9cc138 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -547,6 +547,14 @@ abstract class LocaleKeys { static const customer = 'customer'; static const amountVAR = 'amountVAR'; static const accept = 'accept'; + static const nowVar = 'nowVar'; + static const whendoyouWanttoUpgrade = 'whendoyouWanttoUpgrade'; + static const yourSubscriptionUpgradeAffectingFrom = 'yourSubscriptionUpgradeAffectingFrom'; + static const upgradeAfterCurrentExpiry = 'upgradeAfterCurrentExpiry'; + static const yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom = 'yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom'; + static const upgradeVar = 'upgradeVar'; + static const whendoyouWanttoRenew = 'whendoyouWanttoRenew'; + static const renewVar = 'renewVar'; static const requestAlreadyInProgress = 'requestAlreadyInProgress'; static const acceptOfferConfirmation = 'acceptOfferConfirmation'; static const acceptOfferConfirmationMessage = 'acceptOfferConfirmationMessage'; diff --git a/lib/main.dart b/lib/main.dart index 1049c48..1eae988 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -10,52 +10,87 @@ import 'package:provider/single_child_widget.dart'; import 'package:sizer/sizer.dart'; //testing push +final navigatorKey = GlobalKey(); Logger logger = Logger( - // printer: PrettyPrinter(lineLength: 0, methodCount: 0,), + printer: PrettyPrinter(printEmojis: false, colors: true,printTime: false), +); + +class MyHttpOverrides extends HttpOverrides { + @override + HttpClient createHttpClient(SecurityContext? context) { + return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true; + } +} + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + await EasyLocalization.ensureInitialized(); + // AppState().setPostParamsInitConfig(); + HttpOverrides.global = MyHttpOverrides(); + + runApp( + EasyLocalization( + supportedLocales: const [ + Locale('en', 'US'), + Locale('ar', 'SA'), + ], + path: 'resources', + // assetLoader: const CodegenLoader(), + child: MultiProvider( + providers: const [ + // ChangeNotifierProvider( + // create: (_) => LoginProviderModel(), + // ), + ], + child: const MyApp(), + ), + ), + ); +} + +// todo terminal command to genertate translation files +// flutter pub run easy_localization:generate --source-dir ./assets/langs +// todo terminal command to genertate translation keys +// flutter pub run easy_localization:generate --source-dir ./assets/langs -f keys -o locale_keys.g.dart +// command to generate languages data from json + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return LayoutBuilder(builder: (context, constraints) { + return Sizer( + builder: ( + BuildContext context, + Orientation orientation, + DeviceType deviceType, + ) { + List> delegates = context.localizationDelegates; + // AppState().setPostParamsModel( + // PostParamsModel( + // languageID: EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2, + // ), + // ); + return MaterialApp( + // key: navigatorKey, + navigatorKey: navigatorKey, + theme: AppTheme.getTheme( + isArabic: EasyLocalization.of(context)?.locale.languageCode == "ar", + ), + debugShowCheckedModeBanner: false, + localizationsDelegates: delegates, + supportedLocales: context.supportedLocales, + locale: context.locale, + ); + }, + ); + }); + } +} - ); -// -// class MyHttpOverrides extends HttpOverrides { -// @override -// HttpClient createHttpClient(SecurityContext? context) { -// return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true; -// } -// } -// -// Future main() async { -// WidgetsFlutterBinding.ensureInitialized(); -// -// await EasyLocalization.ensureInitialized(); -// // AppState().setPostParamsInitConfig(); -// HttpOverrides.global = MyHttpOverrides(); -// -// runApp( -// EasyLocalization( -// supportedLocales: const [ -// Locale('en', 'US'), -// Locale('ar', 'SA'), -// ], -// path: 'resources', -// // assetLoader: const CodegenLoader(), -// child: MultiProvider( -// providers: const [ -// // ChangeNotifierProvider( -// // create: (_) => LoginProviderModel(), -// // ), -// ], -// child: const MyApp(), -// ), -// ), -// ); -// } -// -// // todo terminal command to genertate translation files -// // flutter pub run easy_localization:generate --source-dir ./assets/langs -// // todo terminal command to genertate translation keys -// // flutter pub run easy_localization:generate --source-dir ./assets/langs -f keys -o locale_keys.g.dart -// // command to generate languages data from json -// // class MyApp extends StatelessWidget { // const MyApp({super.key}); // diff --git a/lib/models/user_models/user.dart b/lib/models/user_models/user.dart index 27e38c0..049ca47 100644 --- a/lib/models/user_models/user.dart +++ b/lib/models/user_models/user.dart @@ -117,6 +117,8 @@ class UserInfo { AppState().userType = UserType.providerDealer; } else if (json["roleID"] == 6) { AppState().userType = UserType.providerIndividual; + } else if (json["roleID"] == 7) { + AppState().userType = UserType.providerIndividual; } else { AppState().userType = UserType.customer; } diff --git a/lib/utils/enums.dart b/lib/utils/enums.dart index b2b0cbe..47c23e0 100644 --- a/lib/utils/enums.dart +++ b/lib/utils/enums.dart @@ -202,3 +202,9 @@ enum SubscriptionTypeEnum { upgrade, downgrade, } + +enum SubscriptionActionTypeEnum { + ads, + users, + branches, +} diff --git a/lib/view_models/payment_view_model.dart b/lib/view_models/payment_view_model.dart index 44049d3..f873c03 100644 --- a/lib/view_models/payment_view_model.dart +++ b/lib/view_models/payment_view_model.dart @@ -53,75 +53,62 @@ class PaymentVM extends ChangeNotifier { notifyListeners(); } - Future onContinuePressed(BuildContext context, - {required PaymentTypes paymentType}) async { + Future onContinuePressed(BuildContext context, {required PaymentTypes paymentType}) async { switch (selectedPaymentMethod) { case PaymentMethods.mada: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentMethods.visa: await onVisaCardSelected(context, paymentType); break; case PaymentMethods.applePay: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentMethods.masterCard: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentMethods.tamara: - // TODO: Handle this case. + // TODO: Handle this case. break; } return; } - Future onAdsPaymentSuccess( - {required BuildContext context, - required int currentAdId, - required int paymentTypeId}) async { + Future onAdsPaymentSuccess({required BuildContext context, required int currentAdId, required int paymentTypeId}) async { Utils.showLoading(context); - PayOrderDetailRespModel payOrderDetailRespModel = await paymentRepo - .getPayOrderDetails(paymentId: paymentTypeId, adId: currentAdId); + PayOrderDetailRespModel payOrderDetailRespModel = await paymentRepo.getPayOrderDetails(paymentId: paymentTypeId, adId: currentAdId); await Future.delayed(const Duration(seconds: 2)); Utils.hideLoading(context); log("payOrderDetailRespModel: ${payOrderDetailRespModel.toString()}"); - if (payOrderDetailRespModel.isPaid == null || - !payOrderDetailRespModel.isPaid!) { + if (payOrderDetailRespModel.isPaid == null || !payOrderDetailRespModel.isPaid!) { Utils.showToast(LocaleKeys.paymentFailed.tr()); return; } - if (payOrderDetailRespModel.isPaid != null && - payOrderDetailRespModel.isPaid!) { + if (payOrderDetailRespModel.isPaid != null && payOrderDetailRespModel.isPaid!) { Utils.showToast(LocaleKeys.paymentSuccessful.tr()); navigateReplaceWithNameUntilRoute(context, AppRoutes.dashboard); } } - Future onAppointmentPaymentSuccess( - {required BuildContext context, - required int currentAdId, - required int paymentTypeId}) async { + Future onAppointmentPaymentSuccess({required BuildContext context, required int currentAdId, required int paymentTypeId}) async { Utils.showLoading(context); //TODO: CONFIRM FROM ZAHOOR THAT WILL THIS METHOD WORK FOR APPOINTMENT - PayOrderDetailRespModel payOrderDetailRespModel = await paymentRepo - .getPayOrderDetails(paymentId: paymentTypeId, adId: currentAdId); + PayOrderDetailRespModel payOrderDetailRespModel = await paymentRepo.getPayOrderDetails(paymentId: paymentTypeId, adId: currentAdId); await Future.delayed(const Duration(seconds: 2)); Utils.hideLoading(context); log("payOrderDetailRespModel: ${payOrderDetailRespModel.toString()}"); - if (payOrderDetailRespModel.isPaid == null || - !payOrderDetailRespModel.isPaid!) { + if (payOrderDetailRespModel.isPaid == null || !payOrderDetailRespModel.isPaid!) { Utils.showToast(LocaleKeys.paymentFailed.tr()); return; } - if (payOrderDetailRespModel.isPaid != null && - payOrderDetailRespModel.isPaid!) { + if (payOrderDetailRespModel.isPaid != null && payOrderDetailRespModel.isPaid!) { Utils.showToast(LocaleKeys.paymentSuccessful.tr()); navigateReplaceWithNameUntilRoute(context, AppRoutes.dashboard); } @@ -143,9 +130,7 @@ class PaymentVM extends ChangeNotifier { } } - Future placeThePayment( - {required PaymentTypes paymentTypeEnum, - required BuildContext context}) async { + Future placeThePayment({required PaymentTypes paymentTypeEnum, required BuildContext context}) async { await paymentService.placePayment( // This will be request ID for request payment || ad ID for Ad Related Payment || OrderProviderSubscriptionID for SubscriptionPayment id: getIdTypeByPaymentType(paymentTypeEnum), @@ -155,23 +140,23 @@ class PaymentVM extends ChangeNotifier { Utils.showToast(LocaleKeys.paymentFailed.tr()); switch (paymentTypeEnum) { case PaymentTypes.subscription: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentTypes.appointment: - // TODO: Handle this case. + // TODO: Handle this case. log("Appointment Payment has been Failed!!"); break; case PaymentTypes.adReserve: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentTypes.ads: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentTypes.request: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentTypes.extendAds: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentTypes.partialAppointment: log("Partial Appointment Payment has been Failed!!"); @@ -193,10 +178,7 @@ class PaymentVM extends ChangeNotifier { case PaymentTypes.adReserve: case PaymentTypes.ads: case PaymentTypes.extendAds: - await onAdsPaymentSuccess( - context: context, - paymentTypeId: paymentTypeEnum.getIdFromPaymentTypesEnum(), - currentAdId: currentAdId); + await onAdsPaymentSuccess(context: context, paymentTypeId: paymentTypeEnum.getIdFromPaymentTypesEnum(), currentAdId: currentAdId); break; case PaymentTypes.partialAppointment: log("Partial Appointment Payment has been Succeeded"); @@ -207,15 +189,19 @@ class PaymentVM extends ChangeNotifier { } onSubscriptionSuccess(BuildContext context) { - pop(context); - pop(context); - pop(context); - context.read().getMySubscriptions( - AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); + // pop(context); + // pop(context); + // pop(context); + + // context.read().getMySubscriptions(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); + context + .read() + .mySubscriptionsBySp = []; + context.read().getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); + navigateReplaceWithNameUntilRoute(context, AppRoutes.mySubscriptionsPage); } - Future onVisaCardSelected( - BuildContext context, PaymentTypes paymentType) async { + Future onVisaCardSelected(BuildContext context, PaymentTypes paymentType) async { currentPaymentType = paymentType; switch (currentPaymentType) { case PaymentTypes.appointment: @@ -224,7 +210,7 @@ class PaymentVM extends ChangeNotifier { await placeThePayment(context: context, paymentTypeEnum: paymentType); break; case PaymentTypes.request: - // TODO: Handle this case. + // TODO: Handle this case. break; case PaymentTypes.subscription: await placeThePayment(context: context, paymentTypeEnum: paymentType); diff --git a/lib/view_models/user_view_model.dart b/lib/view_models/user_view_model.dart index 6e95508..b488d3f 100644 --- a/lib/view_models/user_view_model.dart +++ b/lib/view_models/user_view_model.dart @@ -352,7 +352,7 @@ class UserVM extends BaseVM { if (verifiedUser.messageStatus == 1) { User user = User.fromJson(jsonDecode(response2.body)); if (appType == AppType.provider) { - if (user.data!.userInfo!.roleId == 5 || user.data!.userInfo!.roleId == 6) { + if (user.data!.userInfo!.roleId == 5 || user.data!.userInfo!.roleId == 6 || user.data!.userInfo!.roleId == 7) { AppState().setUser = user; SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); @@ -393,7 +393,7 @@ class UserVM extends BaseVM { if (verifiedUser.messageStatus == 1) { User user = User.fromJson(jsonDecode(response2.body)); if (appType == AppType.provider) { - if (user.data!.userInfo!.roleId == 5 || user.data!.userInfo!.roleId == 6) { + if (user.data!.userInfo!.roleId == 5 || user.data!.userInfo!.roleId == 6 || user.data!.userInfo!.roleId == 7 ) { AppState().setUser = user; SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); diff --git a/lib/views/payments/payment_methods_view.dart b/lib/views/payments/payment_methods_view.dart index 08d3bf1..7b7c1f5 100644 --- a/lib/views/payments/payment_methods_view.dart +++ b/lib/views/payments/payment_methods_view.dart @@ -16,9 +16,7 @@ class PaymentMethodsView extends StatelessWidget { final PaymentTypes paymentType; final Function? onTempContinue; - const PaymentMethodsView( - {Key? key, required this.paymentType, this.onTempContinue}) - : super(key: key); + const PaymentMethodsView({Key? key, required this.paymentType, this.onTempContinue}) : super(key: key); @override Widget build(BuildContext context) { @@ -36,46 +34,29 @@ class PaymentMethodsView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ 20.height, - LocaleKeys.selectPaymentMethod - .tr() - .toText(fontSize: 18, isBold: true), + LocaleKeys.selectPaymentMethod.tr().toText(fontSize: 18, isBold: true), 15.height, Consumer( - builder: - (BuildContext context, PaymentVM paymentVm, Widget? child) { + builder: (BuildContext context, PaymentVM paymentVm, Widget? child) { return Expanded( child: ListView( shrinkWrap: true, children: [ PaymentMethodContainer( - isSelected: paymentVm.selectedPaymentMethod == - PaymentMethods.mada, - onTap: () => paymentVm - .updateSelectedPaymentMethod(PaymentMethods.mada), - cardAsset: MyAssets.madaPng), + isSelected: paymentVm.selectedPaymentMethod == PaymentMethods.mada, onTap: () => paymentVm.updateSelectedPaymentMethod(PaymentMethods.mada), cardAsset: MyAssets.madaPng), PaymentMethodContainer( - isSelected: paymentVm.selectedPaymentMethod == - PaymentMethods.visa, - onTap: () => paymentVm - .updateSelectedPaymentMethod(PaymentMethods.visa), - cardAsset: MyAssets.visaPng), + isSelected: paymentVm.selectedPaymentMethod == PaymentMethods.visa, onTap: () => paymentVm.updateSelectedPaymentMethod(PaymentMethods.visa), cardAsset: MyAssets.visaPng), PaymentMethodContainer( - isSelected: paymentVm.selectedPaymentMethod == - PaymentMethods.applePay, - onTap: () => paymentVm.updateSelectedPaymentMethod( - PaymentMethods.applePay), + isSelected: paymentVm.selectedPaymentMethod == PaymentMethods.applePay, + onTap: () => paymentVm.updateSelectedPaymentMethod(PaymentMethods.applePay), cardAsset: MyAssets.applePayPng), PaymentMethodContainer( - isSelected: paymentVm.selectedPaymentMethod == - PaymentMethods.masterCard, - onTap: () => paymentVm.updateSelectedPaymentMethod( - PaymentMethods.masterCard), + isSelected: paymentVm.selectedPaymentMethod == PaymentMethods.masterCard, + onTap: () => paymentVm.updateSelectedPaymentMethod(PaymentMethods.masterCard), cardAsset: MyAssets.mastercardPng), PaymentMethodContainer( - isSelected: paymentVm.selectedPaymentMethod == - PaymentMethods.tamara, - onTap: () => paymentVm.updateSelectedPaymentMethod( - PaymentMethods.tamara), + isSelected: paymentVm.selectedPaymentMethod == PaymentMethods.tamara, + onTap: () => paymentVm.updateSelectedPaymentMethod(PaymentMethods.tamara), cardAsset: MyAssets.tamaraEngPng), ], ), @@ -93,10 +74,7 @@ class PaymentMethodsView extends StatelessWidget { isNeedToCallPayment = await onTempContinue!(); } if (isNeedToCallPayment) { - context.read().onContinuePressed( - context, - paymentType: paymentType, - ); + context.read().onContinuePressed(context, paymentType: paymentType); } }, backgroundColor: MyColors.darkPrimaryColor, @@ -114,12 +92,7 @@ class PaymentMethodContainer extends StatelessWidget { final String cardAsset; final Function() onTap; - const PaymentMethodContainer( - {Key? key, - required this.isSelected, - required this.cardAsset, - required this.onTap}) - : super(key: key); + const PaymentMethodContainer({Key? key, required this.isSelected, required this.cardAsset, required this.onTap}) : super(key: key); @override Widget build(BuildContext context) { @@ -132,9 +105,7 @@ class PaymentMethodContainer extends StatelessWidget { decoration: BoxDecoration( color: MyColors.white, borderRadius: BorderRadius.circular(10), - border: Border.all( - color: isSelected ? Colors.green : Colors.transparent, - width: isSelected ? 2.0 : 0.0), + border: Border.all(color: isSelected ? Colors.green : Colors.transparent, width: isSelected ? 2.0 : 0.0), ), child: Padding( padding: const EdgeInsets.all(12), @@ -143,11 +114,7 @@ class PaymentMethodContainer extends StatelessWidget { Container( width: 24, height: 24, - decoration: Utils.containerColorRadiusBorderWidth( - isSelected ? MyColors.primaryColor : Colors.transparent, - 100, - Colors.grey, - 0.5), + decoration: Utils.containerColorRadiusBorderWidth(isSelected ? MyColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), ), 12.width, Container( @@ -157,12 +124,7 @@ class PaymentMethodContainer extends StatelessWidget { child: Image.asset(cardAsset), ), Utils.mFlex(1), - isSelected - ? Utils.statusContainerChip( - text: "Selected", - padding: - EdgeInsets.symmetric(vertical: 6, horizontal: 10)) - : SizedBox(), + isSelected ? Utils.statusContainerChip(text: "Selected", padding: EdgeInsets.symmetric(vertical: 6, horizontal: 10)) : SizedBox(), ], ), ), diff --git a/lib/views/setting_options/setting_options_language.dart b/lib/views/setting_options/setting_options_language.dart index 22bf940..43fd943 100644 --- a/lib/views/setting_options/setting_options_language.dart +++ b/lib/views/setting_options/setting_options_language.dart @@ -35,122 +35,139 @@ class SettingOptionsLanguage extends StatelessWidget { // ? Expanded( child: ListView( - shrinkWrap: true, - padding: EdgeInsets.zero, - children: [ - Column( + shrinkWrap: true, + padding: EdgeInsets.zero, children: [ + Column( + children: [ + CustomSettingOptionsTile( + leadingWidget: const Icon(Icons.quickreply_outlined, size: 20), + titleText: LocaleKeys.requests.tr(), + needBorderBelow: true, + onTap: () { + context.read().onNavbarTapped(4); + Navigator.pop(context); + }), + CustomSettingOptionsTile( + leadingWidget: const Icon(Icons.settings, size: 20), + titleText: LocaleKeys.settings.tr(), + needBorderBelow: true, + onTap: () {}, + //navigateWithName(context, AppRoutes.settingOptionsInviteFriends), + ), + CustomSettingOptionsTile( + leadingWidget: const Icon(Icons.question_mark_outlined, size: 20), + titleText: LocaleKeys.help.tr(), + needBorderBelow: true, + onTap: () => navigateWithName(context, AppRoutes.settingOptionsHelp), + ), + CustomSettingOptionsTile( + leadingWidget: const Icon(Icons.person, size: 20), + titleText: LocaleKeys.account.tr(), + needBorderBelow: false, + onTap: () { + navigateWithName(context, AppRoutes.profileView); + // context.read().onNavbarTapped(4); + // Navigator.pop(context); + }), + ], + ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), + 10.height, CustomSettingOptionsTile( - leadingWidget: const Icon(Icons.quickreply_outlined, size: 20), - titleText: LocaleKeys.requests.tr(), - needBorderBelow: true, - onTap: () { - context.read().onNavbarTapped(4); - Navigator.pop(context); - }), - CustomSettingOptionsTile( - leadingWidget: const Icon(Icons.settings, size: 20), - titleText: LocaleKeys.settings.tr(), - needBorderBelow: true, - onTap: () {}, - //navigateWithName(context, AppRoutes.settingOptionsInviteFriends), - ), - CustomSettingOptionsTile( - leadingWidget: const Icon(Icons.question_mark_outlined, size: 20), - titleText: LocaleKeys.help.tr(), - needBorderBelow: true, - onTap: () => navigateWithName(context, AppRoutes.settingOptionsHelp), - ), - CustomSettingOptionsTile( - leadingWidget: const Icon(Icons.person, size: 20), - titleText: LocaleKeys.account.tr(), - needBorderBelow: false, - onTap: () { - navigateWithName(context, AppRoutes.profileView); - // context.read().onNavbarTapped(4); - // Navigator.pop(context); - }), - ], - ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), - 10.height, - CustomSettingOptionsTile( - leadingWidget: const Icon(Icons.translate, size: 20), - titleText: LocaleKeys.language.tr(), - isForLanguage: true, - onTap: () { - // if (EasyLocalization.of(context) - // ?.currentLocale - // ?.countryCode == - // "SA") { - // context.setLocale(const Locale("en", "US")); - // } else { - // context.setLocale(const Locale('ar', 'SA')); - // } + leadingWidget: const Icon(Icons.translate, size: 20), + titleText: LocaleKeys.language.tr(), + isForLanguage: true, + onTap: () { + // if (EasyLocalization.of(context) + // ?.currentLocale + // ?.countryCode == + // "SA") { + // context.setLocale(const Locale("en", "US")); + // } else { + // context.setLocale(const Locale('ar', 'SA')); + // } - context.read().changeLanguage(context); - }, - ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), - 10.height, - (AppState().currentAppType == AppType.provider) - ? Column( - children: [ - CustomSettingOptionsTile( - leadingWidget: SizedBox( - width: 16, - height: 16, - child: SvgPicture.asset( - MyAssets.icStar, - color: MyColors.primaryColor, - ), + context.read().changeLanguage(context); + }, + ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), + 10.height, + (AppState().currentAppType == AppType.provider) + ? Column( + children: [ + CustomSettingOptionsTile( + leadingWidget: SizedBox( + width: 16, + height: 16, + child: SvgPicture.asset( + MyAssets.icStar, + color: MyColors.primaryColor, ), - titleText: LocaleKeys.mySubscription.tr(), - subTitle: AppState().getproviderSubscription.first.subscriptionName ?? "Silver", - isForLanguage: false, - needBorderBelow: true, - onTap: () { - navigateWithName(context, AppRoutes.mySubscriptionsPage); - }, ), - CustomSettingOptionsTile( - leadingWidget: SizedBox( - width: 16, - height: 16, - child: SvgPicture.asset( - MyAssets.icGroupStar, - // color: MyColors.primaryColor, - ), + titleText: LocaleKeys.mySubscription.tr(), + subTitle: AppState().getproviderSubscription.first.subscriptionName ?? "Silver", + isForLanguage: false, + needBorderBelow: true, + onTap: () { + navigateWithName(context, AppRoutes.mySubscriptionsPage); + }, + ), + CustomSettingOptionsTile( + leadingWidget: SizedBox( + width: 16, + height: 16, + child: SvgPicture.asset( + MyAssets.icGroupStar, + // color: MyColors.primaryColor, ), - titleText: LocaleKeys.subscriptions.tr(), - subTitle: null, - isForLanguage: false, - needBorderBelow: true, - onTap: () { - navigateWithName(context, AppRoutes.subscriptionsPage); - }, ), - CustomSettingOptionsTile( - leadingWidget: SizedBox( - width: 16, - height: 16, - child: SvgPicture.asset( - MyAssets.icGroupStar, - // color: MyColors.primaryColor, - ), + titleText: LocaleKeys.subscriptions.tr(), + subTitle: null, + isForLanguage: false, + needBorderBelow: true, + onTap: () { + navigateWithName(context, AppRoutes.subscriptionsPage); + }, + ), + CustomSettingOptionsTile( + leadingWidget: SizedBox( + width: 16, + height: 16, + child: SvgPicture.asset( + MyAssets.icGroupStar, + // color: MyColors.primaryColor, ), - titleText: LocaleKeys.defineLicenses.tr(), - subTitle: null, - isForLanguage: false, - needBorderBelow: false, - onTap: () { - navigateWithName(context, AppRoutes.providerLicensePage); - }, - ) - ], - ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0) - : SizedBox(), - (AppState().currentAppType == AppType.provider) ? 10.height : SizedBox(), - ], - )), + ), + titleText: LocaleKeys.defineLicenses.tr(), + subTitle: null, + isForLanguage: false, + needBorderBelow: false, + onTap: () { + navigateWithName(context, AppRoutes.providerLicensePage); + }, + ), + // CustomSettingOptionsTile( + // leadingWidget: SizedBox( + // width: 16, + // height: 16, + // child: SvgPicture.asset( + // MyAssets.providersIcon, + // // color: MyColors.primaryColor, + // ), + // ), + // titleText: "Users", + // subTitle: null, + // isForLanguage: false, + // needBorderBelow: false, + // onTap: () { + // navigateWithName(context, AppRoutes.dealerUser, arguments: AppState().getUser.data!.userInfo!.id.toString()); + // }, + // ) + ], + ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0) + : SizedBox(), + (AppState().currentAppType == AppType.provider) ? 10.height : SizedBox(), + ], + )), // : Expanded( // child: ListView( // children: [ diff --git a/lib/views/user/login_with_password_page.dart b/lib/views/user/login_with_password_page.dart index e7f2658..2e0ccf6 100644 --- a/lib/views/user/login_with_password_page.dart +++ b/lib/views/user/login_with_password_page.dart @@ -51,6 +51,17 @@ class _LoginWithPasswordState extends State { if (AppState().currentAppType == AppType.provider) { phoneNum = "966530896018"; password = "Amir@1234"; + + // phoneNum = "966569755630"; + // password = "Amir12345@"; //AAmir Sal + + // phoneNum = "966598646795"; + // password = "Zahoor@123"; + + // User Details + // phoneNum = "966554870506"; + // password = "Sikander123@"; // "lastName": "sik", + // "email": "sikander@gmail.com", // phoneNum = "966569755630"; // password = "Amir12345@"; }