Compare commits

..

No commits in common. 'master' and 'models_removal' have entirely different histories.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="9.688" viewBox="0 0 13 9.688">
<g id="Group" transform="translate(6 17.688) rotate(180)">
<path id="Vector" d="M13,4.844a.781.781,0,0,1-.781.781H2.674L5.414,8.352a.781.781,0,0,1-1.1,1.108L.23,5.4h0a.782.782,0,0,1,0-1.106h0L4.312.227a.781.781,0,0,1,1.1,1.108L2.674,4.062h9.545A.781.781,0,0,1,13,4.844Z" transform="translate(-7 8)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 411 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

@ -76,16 +76,16 @@
"userRoleOrTitle": "عنوان المستخدم",
"codeSentToEmail": "تم ارسال الرمز للايميل",
"number": "موبايل",
"english": "عربي",
"title": "مرحبًا",
"english": "English",
"title": "Hello",
"msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language",
"clickMe": "انقر فوق لي",
"clickMe": "Click me",
"profile": {
"reset_password": {
"label": "إعادة تعيين كلمة المرور",
"username": "اسم المستخدم",
"password": "كلمة المرور"
"label": "Reset Password",
"username": "Username",
"password": "password"
}
},
"clicked": {
@ -112,7 +112,7 @@
"female": "Hello girl :) {}"
}
},
"reset_locale": "إعادة ضبط اللغة",
"reset_locale": "Reset Language",
"welcomeDes": "أنت مكان واحد لكل ما تحتاجه سيارتك",
"log_in": "تسجيل الدخول",
"send": "إرسال",
@ -182,637 +182,8 @@
"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": "قدم عرضًا",
"provideOffer": "تقديم العرض",
"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": "صالح حتى انتهاء الاشتراك",
"youLeftAdsGivenSubscription": "لقد تركت مع إعلانات محدودة الواردة في الاشتراك.",
"updateSubscription": "تحديث الاشتراك",
"workInProgress": "العمل جارٍ",
"visitCompleted": "تمت الزيارة",
"youWantCancelAppointment": "هل تريد إلغاء هذا الموعد؟",
"appointmentCancelledCannotUndoAction": "سيتم إلغاء موعدك ولا يمكنك التراجع عن هذا الإجراء",
"appointment": "الموعد",
"rescheduleAppointment": "إعادة جدولة الموعد",
"payforAppointment": "دفع ثمن الموعد",
"appointmentsFilter": "تصفية المواعيد",
"searchByProvider": "البحث حسب المزود",
"selectProvider": "اختر المزود",
"searchByBranch": "البحث حسب الفرع",
"searchByCategory": "البحث حسب الفئة",
"selectCategory": "اختر الفئة",
"searchByService": "البحث حسب الخدمة",
"selectServices": "اختر الخدمات",
"modifyPackage": "تعديل الحزمة",
"schedule": "الجدول",
"serviceLocation": "موقع الخدمة:",
"workshop": "ورشة العمل",
"itemsSelected": "العناصر المحددة",
"workshopFullAccessServices": "بعض الخدمات غير متوفرة في الموقع المنزلي. قم بتغيير الموقع إلى ورشة العمل للوصول الكامل إلى الخدمات",
"changeLocationService": "تغيير الموقع أو الخدمة:",
"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": "العميل",
"amountVAR": "كمية",
"accept": "قبول",
"nowVar": "الآن",
"whendoyouWanttoUpgrade": "متى تريد الترقية",
"yourSubscriptionUpgradeAffectingFrom": "سيتم ترقية اشتراكك الآن. ساري المفعول من",
"upgradeAfterCurrentExpiry": "الترقية بعد انتهاء الاشتراك الحالي",
"yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom": "سيتم ترقية اشتراكك بعد انتهاء اشتراكك الحالي. ساري المفعول من",
"upgradeVar": "ترقية",
"whendoyouWanttoRenew": "متى تريد التجديد",
"renewVar": "تجديد",
"requestAlreadyInProgress": "هذا الطلب قيد التقدم بالفعل.",
"acceptOfferConfirmation": "هل تريد قبول هذا العرض؟",
"acceptOfferConfirmationMessage": "سيتم قبول هذا العرض وستدفع المبلغ المطلوب للمشتري في وقت معين وإلا سيتم إلغاء هذا العرض.",
"noUpcomingAppointments": "لا مواعيد قادم..",
"addNewAppointment": "إضافة موعد جديد",
"myNearbyBranches": "فروعي القريبة",
"myRecentBranches": "فروعي الأخيرة",
"favoriteList": "قائمة المفضلة",
"noReviewsBranch": "هذا الفرع لا يوجد لديه تعليقات.",
"readLess": "اقرأ أقل",
"readMoreReviews": "اقرأ المزيد من التقييمات",
"noProvidersInFav": "ليس لديك أي مقدمي خدمات في المفضلة.",
"providerHasNoBranches": "هذا المزود ليس لديه فروع حتى الآن.",
"totalBranches": "إجمالي الفروع",
"memberSince": "عضو منذ",
"reserved": "محجوز",
"delete": "يمسح",
"deleteBranchConfirmation": "هل تريد حذف الفرع؟",
"deleteBranchConfirmationMessage": "سيتم حذف فرعك بشكل دائم ولن تتمكن من التراجع عن هذا الإجراء",
"reviewAndPayment": "المراجعة والدفع",
"awaitingPaymentFromCustomer": "في انتظار الدفع من العميل",
"awaitingResponseFromProvider": "في انتظار الرد من المزود",
"offerNoLongerAvailable": "العرض لم يعد متاحاً",
"doYouWantToCompleteThisDeal": "هل تريد إكمال هذه الصفقة؟",
"customerCompletingDealMeansThat": "إكمال هذه الصفقة يعني أن الطلب الذي قمت بنشره قد تم استلامه بنجاح ولا يمكن التراجع عن هذا الإجراء.",
"providerCompletingDealMeansThat": "إكمال هذه الصفقة يعني أنك قد قدمت الخدمة للعميل بنجاح وفقاً لطلبه ولا يمكن التراجع عن هذا الإجراء.",
"offerSummary": "ملخص العرض",
"personalInformation": "المعلومات الشخصية",
"name": "الاسم",
"phone": "الهاتف",
"serviceInformation": "معلومات الخدمة",
"locationInformation": "معلومات الموقع",
"additionalAddressDetails": "تفاصيل العنوان الإضافية",
"serviceName": "اسم الخدمة",
"serviceCategory": "فئة الخدمة",
"offerPrice": "سعر العرض",
"totalPrice": "السعر الإجمالي",
"providerName": "اسم المزود",
"createdOn": "تم الإنشاء في",
"manufacturedBy": "صُنع بواسطة",
"manufacturedOn": "تاريخ الصنع",
"shipping": "الشحن",
"delivery": "التسليم",
"selectDeliveryType": "اختر نوع التسليم",
"shippingManagementInstruction": "يرجى الذهاب إلى الإعدادات > شاشة إدارة الشحن لإدارة عناصر الشحن/التسليم بشكل أكبر.",
"withdrawOffer": "سحب العرض",
"manufacturer": "الصانع",
"priceRange": "نطاق السعر",
"cancelOffer": "إلغاء العرض",
"pleaseSpecify": "يرجى التحديد",
"customerNotResponding": "العميل غير متجاوب",
"cancelRequestPrompt": "هل تريد إلغاء هذا الطلب؟",
"requestPermanentlyCancelled": "سيتم إلغاء طلبك بشكل نهائي. لا يمكنك التراجع عن هذا الإجراء.",
"awaitingResponseFromCustomer": "في انتظار الرد من العميل",
"acknowledgePaymentToMowater": "أقر بأنه عند إكمال هذه الصفقة، سأدفع 2٪ من إجمالي هذه الصفقة لشركة مواتر مقابل خدماتهم.",
"requestsFilter": "تصفية الطلبات",
"searchByCondition": "البحث حسب الحالة",
"selectCondition": "حدد الحالة",
"searchByRequestType": "البحث حسب نوع الطلب",
"searchByCustomerName": "البحث حسب اسم العميل",
"searchByProviderName": "البحث حسب اسم المزود",
"searchByRequestStatus": "البحث حسب حالة الطلب",
"selectRequestType": "اختر نوع الطلب",
"selectRequestStatus": "اختر حالة الطلب",
"searchByRequestedDate": "البحث حسب تاريخ الطلب",
"selectDate": "اختر التاريخ",
"searchByVehicleModel": "البحث حسب طراز المركبة",
"customerCarePrompt": "هل لديك أي استفسار؟ نحن هنا لخدمتك. انقر هنا للتحدث مع خدمة العملاء لدينا الآن.",
"callNow": "اتصل الآن",
"condition": "الحالة",
"servicesNotAvailableHomeLocation": "بعض الخدمات غير متوفرة في الموقع المنزلي.",
"additionalChargesNotice": "هذه الرسوم إضافية على رسوم الخدمة الفعلية. قد تختلف الرسوم للعناصر الثقيلة.",
"selectServiceLocation": "اختر موقع الخدمة",
"apptOn": "التعيين في",
"merged": "مُدمج",
"date": "التاريخ",
"selectAll": "اختر الكل",
"unselectAll": "إلغاء اختيار الكل",
"copySelectedServices": "نسخ الخدمات المحددة",
"pictures": "الصور",
"noChatMessage": "لا توجد رسائل بعد. أرسل رسالة لبدء المحادثة!",
"shippingManagement": "إدارة الشحن",
"appointmentCancelled": "تم إلغاء الموعد",
"appointmentsPerSlot": "المواعيد لكل فترة زمنية",
"createSchedule": "إنشاء الجدول الزمني",
"addItems": "إضافة عناصر",
"itemName": "اسم العنصر",
"itemDescription": "وصف العنصر",
"itemPrice": "سعر العنصر",
"bookAppointmentForServices": "سيسمح هذا الخيار للعميل بحجز موعد لهذه الخدمات.",
"showServiceAvailability": "سيظهر هذا الخيار للعميل ما إذا كان بإمكانه الحصول على هذه الخدمة في الورشة أم لا.",
"bookAppointmentAtLocation": "سيسمح هذا الخيار للعميل بحجز موعد في الموقع الذي يرغب فيه.",
"appointmentBookingOption": "سيسمح هذا الخيار للعميل بحجز موعد لهذه الخدمات.",
"workshopAvailabilityOption": "سيظهر هذا الخيار للعميل إذا كان يمكنه الحصول على هذه الخدمة في الورشة أم لا.",
"appointmentLocationOption": "سيسمح هذا الخيار للعميل بحجز موعد في الموقع الذي يختاره.",
"deleteScheduleConfirmation": "هل أنت متأكد أنك تريد حذف هذا الجدول؟",
"deleteScheduleAdConfirmationMessage": "سيتم إزالة جميع فترات المواعيد ولن يتمكن العملاء من حجز مواعيد لهذا الجدول.",
"branchSchedules": "جداول الفرع",
"noSchedulesFound": "لم تقم بإضافة أي جدول لهذا الفرع.",
"inviteFriendsBySMS": "دعوة الأصدقاء عبر الرسائل القصيرة",
"inviteFriendsByWhatsApp": "دعوة الأصدقاء عبر واتساب",
"inviteFriendsByEmail": "دعوة الأصدقاء عبر البريد الإلكتروني",
"noFAQsToShow": "لا توجد أسئلة شائعة في الوقت الحالي. يرجى الاتصال بنا إذا كان لديك أي استفسار.",
"appInfo": "معلومات التطبيق",
"users": "المستخدمين",
"adsRemaining": "الإعلانات المتبقية",
"attachPDF": "إرفاق PDF",
"noItemsToShow": "لا توجد عناصر لعرضها.",
"serviceItem": "عنصر الخدمة",
"createdBy": "تم الإنشاء بواسطة",
"createGroupServices": "إنشاء خدمات المجموعة",
"logoutConfirmation": "هل أنت متأكد أنك تريد تسجيل الخروج؟",
"logoutConfirmationMessage": "سيتم تسجيل خروجك من التطبيق وسيتعين عليك إضافة اسم المستخدم وكلمة المرور مرة أخرى لتسجيل الدخول.",
"addToFavoritesOn": "تمت الإضافة إلى المفضلة في:",
"subscriptionDate": "تاريخ الاشتراك",
"expiresOn": "تنتهي صلاحيته",
"expired": "منتهي الصلاحية",
"upgradeBranches": "قم بترقية اشتراكك لإضافة المزيد من الفروع.",
"upgradeAds": "قم بترقية اشتراكك لإضافة المزيد من الإعلانات.",
"upgradeSubUsers": "قم بترقية اشتراكك لإضافة المزيد من المستخدمين الفرعيين.",
"explore": "استكشاف",
"manageRequests": "إدارة الطلبات",
"serviceNotAvailableAtHomeLocation": "الخدمة المختارة غير متوفرة في الموقع المحدد.",
"wantToRescheduleAppointment": "أرغب في إعادة جدولة الموعد.",
"noNeedForService": "لا أحتاج هذه الخدمة بعد الآن.",
"testTheService": "اختبر الخدمة.",
"companyLocation": "موقع الشركة",
"customerLocation": "موقع العميل",
"deliveryAvailable": "التوصيل متاح",
"viewed": "تم المشاهدة",
"updateUserDetails": "تحديث تفاصيل المستخدم",
"enterNewFirstName": "أدخل الاسم الأول",
"enterNewLastName": "أدخل الاسم الأخير",
"userDetailsUpdated": "يتم تحديث تفاصيل المستخدم",
"itemNoLongerAvailable": "لم يعد هذا العنصر متاحًا.",
"reactivateAd": "إعادة تنشيط الإعلان",
"dealOutsideApp": "تمت الصفقة خارج التطبيق مع عميل آخر.",
"noAgreementCustomer": "لا يوجد اتفاق من جانب العميل.",
"dealNotCompleted": "لم تكتمل الصفقة",
"changedDesireToSell": "غيرت رغبتي في بيع المركبة.",
"vehicleDealOutsideApp": "تمت صفقة المركبة خارج التطبيق.",
"markAdAsSoldDesc": "سيتم وضع علامة 'تم البيع' على هذا الإعلان، ولن يتمكن المستخدمون الآخرون من التواصل معك.",
"ownerInformation": "معلومات المالك",
"acceptedRequests": "الطلبات المقبولة",
"specialRequestChat": "دردشة الطلب الخاص",
"companyName": "اسم الشركة",
"noAvailableItems": "لا توجد عناصر متاحة.",
"serviceDeliveryType": "نوع تقديم الخدمة",
"noImagesToShow": "لا توجد صور للعرض",
"updateGroupServices": "تحديث خدمات المجموعة",
"addCommentsHere": "أضف التعليقات هنا",
"waitForBranchVerification": "يرجى الانتظار حتى يتم التحقق من الفرع.",
"reportComplaint": "تقديم شكوى",
"descriptionCannotBeEmpty": "وصف لا يمكن أن يكون فارغًا.",
"adMarkedAsSold": "تم وسم الإعلان كـ 'مباع' بنجاح!",
"chargesAndServiceRangeGreaterThanZero": "يجب أن تكون الرسوم ونطاق الخدمة أكبر من الصفر.",
"cannotSelectAllDaysAsOff": "لا يمكنك اختيار جميع الأيام كأيام عطلة.",
"endDateAfterStartDate": "يجب أن تكون تاريخ النهاية بعد تاريخ البدء.",
"pleaseEnterStartDateFirst": "من فضلك أدخل تاريخ البدء أولاً.",
"endTimeAfterStartTime": "يجب أن يكون وقت الانتهاء بعد وقت البدء.",
"pickedLocationNotice": "سيتم استخدام هذا الموقع لجميع الخدمات المنزلية في هذه الموعد",
"serviceNotProvided": "لسوء الحظ، هذه الخدمة غير متوفرة في الفرع الذي اخترته في هذا الموقع المحدد",
"pleaseSelectService": "يرجى اختيار خدمة واحدة على الأقل",
"operationalIssue": "مشكلة تشغيلية",
"materialIssue": "مشكلة في المواد",
"selectReasonBeforeCancel": "يرجى اختيار سبب قبل إلغاء هذا الموعد. لا يمكن التراجع عن هذا الإجراء.",
"blockedByAdmin": "تم حظرها من قبل المسؤول",
"active": "نشط",
"paymentType": "نوع الدفع",
"searchByCreatedDate": "البحث حسب تاريخ الإنشاء",
"cityNameMandatory": "المدينة إلزامية",
"genderMandatory": "الجنس إلزامي",
"updateCity": "تحديث المدينة",
"userGender": "جنس",
"userMale": "ذكر",
"userFemale": "أنثى",
"maxFileSelection": "يمكنك تحديد الحد الأقصى لملفات 7",
"maxFileSize": "يجب أن يكون حجم كل ملف أقل من 2 ميغابايت",
"onlyJPGandPNG": "يُسمح فقط بملفات JPG وPNG",
"expiryDate": "تاريخ انتهاء الصلاحية",
"dealCompleted": "تم إتمام الصفقة",
"theDealNotCompleted": "لم تكتمل الصفقة",
"cancelRequest": "أريد إلغاء الطلب.",
"highPrice": "سعر مرتفع",
"offerNotMatched": "العرض لم يتطابق مع الطلب.",
"offerRejected": "تم رفض العرض.",
"offerAccepted": "تم قبول العرض.",
"you": "أنتم",
"youCannotDeactivateThisServiceRightNow": "لا يمكنك تعطيل هذه الخدمة الآن لأن لديك مواعيد معلقة لهذه الخدمة. تفاصيل آخر موعد هي:",
"done": "تم",
"notice": "إشعار",
"serviceDeactivated": "تم تعطيل الخدمة",
"totalNumberOfServices": "عدد الخدمات:",
"noAvailableOfficesInCity": "لا توجد مكاتب متاحة في مدينتك لخدمتك.",
"searchByItem": "البحث حسب العنصر",
"selectBranchToCopyServices": "حدد الفرع لنسخ العناصر الخاصة بهم إلى هذا الفرع. يمكنك تعديل الاختيار في أي وقت.",
"tapToSeeItems": "اضغط لرؤية العناصر",
"tapToSelect": "اضغط للاختيار",
"noteCopyItemsExplanation": "ملاحظة: ستتمكن من نسخ العناصر من خدمة إلى أخرى في الفئة المحددة. يجب عليك إنشاء الخدمات أولاً ويجب أن تكون معتمدة. ثم ستتمكن من الحصول على الخدمات المتاحة التي يمكنك نسخ جميع العناصر منها أو تحديد العناصر التي تريد نسخها.",
"requestCreatedOn": "تم إنشاء الطلب في",
"online": "عبر الإنترنت",
"deliveryStatus": "حالة توصيلك / الشحن هي:",
"markAsCompleted": "ضع علامة كمكتمل",
"searchByServiceDelivery": "البحث حسب خدمة التوصيل",
"searchByMobileNumber": "البحث بواسطة رقم الجوال",
"enterMobileNumber": "أدخل رقم الجوال",
"enterCustomerName": "أدخل اسم العميل",
"tapToView": "انقر لعرض",
"noServicesAvailableToCopy": "لا توجد خدمات متاحة في هذا الفرع لنسخها.",
"copySelectedItems": "نسخ العناصر المحددة",
"noOfInvites": "عدد الدعوات",
"noSpecialServicesAvailable": "لا توجد خدمات خاصة متاحة للمنطقة المحددة.",
"customService": "الخدمة المخصصة",
"selectServiceDetails": "اختر تفاصيل الخدمة",
"addServiceDetails": "أضف تفاصيل الخدمة",
"companyNameMandatory": "اسم الشركة إلزامي",
"connectionProblem": "مشكلة في الاتصال",
"pleaseCheckConnection": "يرجى التحقق من اتصالك بالإنترنت والمحاولة مرة أخرى",
"ok": "نعم",
"continueAsGuest": "الاستمرار كضيف",
"loginToViewAppointments": "الرجاء تسجيل الدخول لعرض المواعيد",
"itemType": "غرض",
"upgradeSubscription": "قم بترقية اشتراكك",
"searchByAdID": "البحث برقم الإعلان",
"enterAdID": "أدخل رقم الإعلان",
"searchByDemandPrice": "البحث حسب سعر الطلب",
"enterStartPrice": "أدخل سعر البداية",
"enterEndPrice": "أدخل سعر النهاية",
"searchByVehicleType": "البحث حسب نوع المركبة",
"selectVehicleType": "اختر نوع المركبة",
"specialRequestsChats": "دردشات الطلبات الخاصة",
"selectDeliveryOption": "اختر خيار التوصيل",
"deliveryOptions": "خيارات التوصيل",
"selfPickup": "الالتقاط الذاتي",
"updateYourLocationInfo": "قم بتحديث معلومات موقعك",
"initiateSelfPickup": "بدء الاستلام الذاتي",
"selfPickupStatus": "حالة الالتقاط الذاتي",
"myDraftAds": "مسودتي للإعلانات",
"scheduleDeletedSuccessfully": "تم حذف الجدول بنجاح",
"addValidAddress": "رجى إضافة عنوان صالح"
"createBranch": "Create Branch",
"updateBranch": "Update Branch",
"branches": "Branches",
"requests": "Requests"
}

@ -40,7 +40,7 @@
"forgetPass": "Forget Password ?",
"phoneNumberVerified": "Phone Number Verified",
"verifyNewPassword": "Verify New Password",
"EnterPass": "Enter Password",
"EnterPass": "Enter Password ?",
"alreadySigned": " Already Signed Up and Logged In",
"emailChangedSuccessfully": "Email is Changed Successfully",
"passwordIsUpdated": "Password is Updated",
@ -76,7 +76,7 @@
"userRoleOrTitle": "User role or title",
"codeSentToEmail": "Code is sent to email",
"number": "Number",
"english": "English",
"english": "عربي",
"title": "Hello",
"msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language",
@ -186,631 +186,5 @@
"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",
"provideOffer": "Provide 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",
"youLeftAdsGivenSubscription": "You have left with limited 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:",
"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",
"mySubscription": "My Subscription",
"subscriptions": "Subscriptions",
"defineLicenses": "Define Licenses",
"logOut": "Log Out",
"customer": "Customer",
"accept": "Accept",
"amountVAR": "Amount",
"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",
"noUpcomingAppointments": "No Upcoming Appointments.",
"addNewAppointment": "Add New Appointment",
"myNearbyBranches": "My Nearby Branches",
"myRecentBranches": "My Recent Branches",
"favoriteList": "Favorite List",
"noReviewsBranch": "This branch has no reviews.",
"readLess": "Read Less",
"readMoreReviews": "Read More Reviews",
"noProvidersInFav": "You have no providers in Favorites.",
"providerHasNoBranches": "This Provider has no branches yet.",
"totalBranches": "Total Branches",
"memberSince": "Member Since",
"reserved": "Reserved",
"delete": "Delete",
"deleteBranchConfirmation": "Do you want to delete the Branch?",
"deleteBranchConfirmationMessage": "Your branch will be permanently deleted and you cannot undo this action",
"reviewAndPayment": "Review & Payment",
"awaitingPaymentFromCustomer": "Awaiting Payment from Customer",
"awaitingResponseFromProvider": "Awaiting Response From Provider",
"offerNoLongerAvailable": "Offer is No Longer Available",
"doYouWantToCompleteThisDeal": "Do you want to complete this deal?",
"customerCompletingDealMeansThat": "Completing this deal means that the you request that you have posted has been successfully received and this action cannot be undone.",
"providerCompletingDealMeansThat": "Completing this deal means that you have successfully provided the customer according to his request and this action cannot be undone.",
"offerSummary": "Offer Summary",
"personalInformation": "Personal Information",
"name": "Name",
"phone": "Phone",
"locationInformation": "Location Information",
"serviceInformation": "Service Information",
"additionalAddressDetails": "Additional Address Details",
"serviceName": "Service Name",
"serviceCategory": "Service Category",
"offerPrice": "Offer Price",
"totalPrice": "Total Price",
"providerName": "Provider Name",
"createdOn": "Created On",
"manufacturedBy": "Manufactured By",
"manufacturedOn": "Manufactured On",
"shipping": "Shipping",
"delivery": "Delivery",
"selectDeliveryType": "Select Delivery Type",
"shippingManagementInstruction": "Please go to Settings > Shipping Management screen to manage shipping/delivery items further.",
"withdrawOffer": "Withdraw Offer",
"manufacturer": "Manufacturer",
"priceRange": "Price Range",
"cancelOffer": "Cancel Offer",
"pleaseSpecify": "Please Specify",
"customerNotResponding": "The customer is not responding.",
"cancelRequestPrompt": "Do you want to cancel this request?",
"requestPermanentlyCancelled": "Your request will be permanently cancelled. You cannot undo this action.",
"awaitingResponseFromCustomer": "Awaiting Response From Customer",
"acknowledgePaymentToMowater": "I acknowledge that upon completion of this deal, I will pay 2% of this total deal to the Mowater company for their service.",
"requestsFilter": "Requests Filter",
"searchByCondition": "Search By Condition",
"selectCondition": "Select Condition",
"searchByRequestType": "Search By Request Type",
"searchByCustomerName": "Search By Customer Name",
"searchByProviderName": "Search By Provider Name",
"searchByRequestStatus": "Search By Request Status",
"selectRequestStatus": "Select Request Status",
"selectRequestType": "Select Request Type",
"searchByRequestedDate": "Search by Requested Date",
"selectDate": "Select Date",
"searchByVehicleModel": "Search By Vehicle Model",
"customerCarePrompt": "Got any question? We are here to service. Click here to talk to our customer care right now.",
"callNow": "Call Now",
"condition": "Condition",
"servicesNotAvailableHomeLocation": "This location will be same for all services",
"additionalChargesNotice": "These charges are additional to the actual service charges. For heavy items the charges may vary.",
"selectServiceLocation": "Select Service Location",
"apptOn": "Appt On",
"merged": "Merged",
"date": "Date",
"selectAll": "Select All",
"unselectAll": "Unselect All",
"copySelectedServices": "Copy Selected Services",
"pictures": "Pictures",
"noChatMessage": "No messages yet. Send a message to start the conversation!",
"shippingManagement": "Shipping Management",
"appointmentCancelled": "Appointment Cancelled",
"appointmentsPerSlot": "Appointments Per Slot",
"createSchedule": "Create Schedule",
"addItems": "Add Items",
"itemName": "Item Name",
"itemDescription": "Item Description",
"itemPrice": "Item Price",
"bookAppointmentForServices": "This option will allow customer to book appointment for these services.",
"showServiceAvailability": "This option will show to customer that you can avail this service on workshop or not.",
"bookAppointmentAtLocation": "This option will allow customer to book appointment at their desired location.",
"deleteScheduleConfirmation": " Are you sure you want to delete this Schedule?",
"deleteScheduleAdConfirmationMessage": "All the appointment slots will be removed and customers will no longer be able to book appointments for this schedule.",
"branchSchedules": "Branch Schedules",
"noSchedulesFound": "You have not added any schedule for this branch.",
"inviteFriendsBySMS": "Invite Friends By SMS",
"inviteFriendsByWhatsApp": "Invite Friends By WhatsApp",
"inviteFriendsByEmail": "Invite Friends By Email",
"noFAQsToShow": "There are no Frequently asked Questions Right now. Please contact us if you have any query.",
"appInfo": "App Info",
"users": "Users",
"adsRemaining": "Ads Remaining",
"attachPDF": "Attach PDF",
"serviceItem": "Service Item",
"createdBy": "Created By",
"createGroupServices": "Create Group Services",
"logoutConfirmation": "Are you sure you want want to Logout?",
"logoutConfirmationMessage": "You will be logged out of the application and you have to add your username and password again to login",
"addToFavoritesOn": "Added to Favorites on:",
"subscriptionDate": "Subscription Date",
"expiresOn": "Expires On",
"expired": "Expired",
"upgradeBranches": "Upgrade your subscription to add more Branches.",
"upgradeSubscription": "Upgrade your subscription",
"upgradeAds": "Upgrade your subscription to add more Ads.",
"upgradeSubUsers": "Upgrade your subscription to add more Sub Users.",
"explore": "Explore",
"manageRequests": "Manage Requests",
"serviceNotAvailableAtHomeLocation": "The Selected Service is not available at Home Location.",
"wantToRescheduleAppointment": "I want to reschedule the appointment.",
"noNeedForService": "I do not need this service anymore.",
"testTheService": "Test the service.",
"companyLocation": "Company Location",
"customerLocation": "Customer Location",
"deliveryAvailable": "Delivery Available",
"viewed": "Viewed",
"itemNoLongerAvailable": "This item is no longer available.",
"reactivateAd": "Reactivate Ad",
"dealOutsideApp": "The deal was done outside the app with another customer.",
"noAgreementCustomer": "There is no agreement from the customer side.",
"dealNotCompleted": "Deal not completed",
"changedDesireToSell": "I changed my desire to sell the vehicle.",
"vehicleDealOutsideApp": "The vehicle deal was done outside the app.",
"markAdAsSoldDesc": "This ad will be marked as sold, and other users will no longer be able to contact you.",
"ownerInformation": "Owner Information",
"noItemsToShow": "There are no Items no show.",
"acceptedRequests": "Accepted Requests",
"specialRequestChat": "Special Request Chat",
"companyName": "Company Name",
"noAvailableItems": "There are no available items.",
"serviceDeliveryType": "Service Delivery Type",
"noImagesToShow": "No Images to Show",
"updateGroupServices": "Update Group Services",
"addCommentsHere": "Add comments here",
"waitForBranchVerification": "Please wait for the branch verification.",
"reportComplaint": "Report a complaint",
"descriptionCannotBeEmpty": "Description cannot be empty.",
"adMarkedAsSold": "Ad has been marked as sold successfully!",
"chargesAndServiceRangeGreaterThanZero": "Charges and Service range should be greater than zero.",
"cannotSelectAllDaysAsOff": "You cannot select all days as Off days.",
"endDateAfterStartDate": "End Date should be after start date.",
"pleaseEnterStartDateFirst": "Please enter start date first.",
"endTimeAfterStartTime": "End Time should be after start time.",
"pickedLocationNotice": "This picked location will be used for all home-based services in this appointment",
"serviceNotProvided": "Unfortunately, this service is not provided by your selected branch in this picked location.",
"pleaseSelectService": "Please select at least one service.",
"operationalIssue": "Operational Issue",
"materialIssue": "Material Issue",
"selectReasonBeforeCancel": "Please select a reason before cancelling this appointment. This action cannot be undone.",
"blockedByAdmin": "Blocked by admin",
"active": "Active",
"paymentType": "Payment Type",
"dealCompleted": "The Deal Completed",
"theDealNotCompleted": "The Deal Not Completed",
"cancelRequest": "I want to cancel the request.",
"highPrice": "High Price",
"offerNotMatched": "The offer did not match the request.",
"offerRejected": "Offer has been Rejected.",
"offerAccepted": "Offer has been Accepted.",
"you": "You",
"youCannotDeactivateThisServiceRightNow": "You cannot deactivate this service right now because you have pending appointments for this service. The last appointment details are:",
"done": "Done",
"notice": "Notice",
"serviceDeactivated": "Service Deactivated",
"totalNumberOfServices": "Number of services:",
"noAvailableOfficesInCity": "There are no available offices in your city for your service.",
"searchByItem": "Search By Item",
"selectBranchToCopyServices": "Select the branch to copy their items to this branch. You can modify the selection at any time.",
"tapToSelect": "Tap to select",
"tapToSeeItems": "Tap to see items",
"noteCopyItemsExplanation": "Note: You will be able to copy items from one service to another in a selected category. You must create the services first and they should be approved. Then you will be able to get the available services from which you can copy all or selected items.",
"requestCreatedOn": "Request created on",
"online": "Online",
"searchByCreatedDate": "Search By Created Date",
"updateUserDetails": "Update User Details",
"enterNewFirstName": "Enter First Name",
"enterNewLastName": "Enter Last Name",
"userDetailsUpdated": "User Details is Updated",
"cityNameMandatory": "City is mandatory",
"genderMandatory": "Gender is mandatory",
"updateCity": "Update City",
"userGender": "Gender",
"userMale": "Male",
"userFemale": "Female",
"maxFileSelection": "You can select a maximum of 7 files",
"maxFileSize": "Each file size must be less than 2 MB",
"onlyJPGandPNG": "Only JPG and PNG files are allowed",
"expiryDate": "Expiry Date",
"deliveryStatus": "Your Delivery / Shipping Status is:",
"markAsCompleted": "Mark as Completed",
"searchByServiceDelivery": "Search by Service Delivery",
"searchByMobileNumber": "Search by Mobile Number",
"enterMobileNumber": "Enter Mobile Number",
"enterCustomerName": "Enter Customer Name",
"tapToView": "Tap to view",
"noServicesAvailableToCopy": "There are no services available in this branch to copy.",
"copySelectedItems": "Copy Selected Items",
"companyNameMandatory": "Company Name is mandatory",
"noOfInvites": "No of invites",
"noSpecialServicesAvailable": "There are no special services available for the selected region.",
"customService": "Custom Service",
"selectServiceDetails": "Select service details",
"addServiceDetails": "Add service details",
"connectionProblem": "Connection Problem",
"pleaseCheckConnection": "Please check your internet connection and try again.",
"ok": "Ok",
"continueAsGuest": "Continue as a guest",
"loginToViewAppointments": "Please Login to View Appointments",
"itemType": "Item Type",
"searchByAdID": "Search by Ad ID",
"enterAdID": "Enter Ad ID",
"searchByDemandPrice": "Search by demand price",
"enterStartPrice": "Enter start price",
"enterEndPrice": "Enter end price",
"searchByVehicleType": "Search by vehicle type",
"selectVehicleType": "Select vehicle type",
"specialRequestsChats": "Special Requests Chats",
"selectDeliveryOption": "Select Delivery Option",
"deliveryOptions": "Delivery Options",
"selfPickup": "Self Pickup",
"updateYourLocationInfo": "Update your location information",
"initiateSelfPickup": "Initiate Self Pickup",
"selfPickupStatus": "Self Pickup Status",
"myDraftAds": "My Draft Ads",
"scheduleDeletedSuccessfully": "The schedule has been deleted successfully",
"addValidAddress": "Please add a valid address"
"requests": "Requests"
}

@ -4,18 +4,15 @@ import 'dart:developer';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:http/io_client.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/exceptions/api_exception.dart';
import 'package:mc_common_app/main.dart';
import 'package:mc_common_app/models/user_models/refresh_token.dart';
import 'package:mc_common_app/models/user_models/user.dart';
import 'package:mc_common_app/models/user/refresh_token.dart';
import 'package:mc_common_app/models/user/user.dart';
import 'package:mc_common_app/utils/shared_prefrence.dart';
import 'package:mc_common_app/utils/utils.dart';
typedef FactoryConstructor<U> = U Function(dynamic);
@ -77,7 +74,10 @@ class ApiClientImp implements ApiClient {
if (headers != null && headers.isNotEmpty) {
headers0.addAll(headers);
}
if (!kReleaseMode) {
log("Url:$url");
log("body:$jsonObject");
}
var response = await postJsonForResponse(url, jsonObject, token: token, queryParameters: queryParameters, headers: headers0, retryTimes: retryTimes);
try {
if (!kReleaseMode) {
@ -129,17 +129,15 @@ class ApiClientImp implements ApiClient {
var queryString = Uri(queryParameters: queryParameters).query;
url = '$url?$queryString';
}
Response response;
response = await _post(Uri.parse(url), body: requestBody, headers: headers0).timeout(const Duration(seconds: 100));
if (!kReleaseMode) {
logger.d("------URL------");
logger.i(url);
logger.d("------Payload------");
logger.i(jsonDecode(requestBody));
logger.d("------Response------");
logger.i(jsonDecode(response.body));
log("Url:$url");
log("body:$requestBody");
log("res: ${response.body}");
}
if (response.statusCode >= 200 && response.statusCode < 500) {
var jsonData = jsonDecode(response.body);
@ -168,10 +166,6 @@ class ApiClientImp implements ApiClient {
throw APIException(APIException.OTHER, arguments: e);
}
} on TimeoutException catch (e) {
BuildContext? context = navigatorKey.currentContext;
if (context != null) {
NoInternetDialog.show(context);
}
throw APIException(APIException.TIMEOUT, arguments: e);
} on ClientException catch (e) {
if (retryTimes > 0) {
@ -246,13 +240,14 @@ class ApiClientImp implements ApiClient {
}
if (!kReleaseMode) {
logger.i(url);
logger.i("$queryParameters");
log("Url:$url");
log("queryParameters:$queryParameters");
}
var response = await _get(Uri.parse(url), headers: headers0).timeout(const Duration(seconds: 60));
if (!kReleaseMode) {
logger.i(jsonDecode(response.body));
log("res: ${response.body}");
log("resCode: ${response.statusCode}");
}
if (response.statusCode >= 200 && response.statusCode < 500) {
var jsonData = jsonDecode(response.body);
@ -282,10 +277,6 @@ class ApiClientImp implements ApiClient {
throw APIException(APIException.OTHER, arguments: e);
}
} on TimeoutException catch (e) {
final context = navigatorKey.currentContext;
if (context != null) {
NoInternetDialog.show(context);
}
throw APIException(APIException.TIMEOUT, arguments: e);
} on ClientException catch (e) {
if (retryTimes > 0) {
@ -313,7 +304,7 @@ class ApiClientImp implements ApiClient {
Future<RefreshToken> refreshTokenAPI(String token, String refreshToken) async {
var postParams = {"token": token, "refreshToken": refreshToken};
// String t = AppState().getUser.data!.accessToken ?? "";
return await postJsonForObject((json) => RefreshToken.fromJson(json), ApiConsts.refreshToken, postParams);
return await postJsonForObject((json) => RefreshToken.fromJson(json), ApiConsts.RefreshToken, postParams);
}
Future<String> updateUserToken() async {
@ -324,9 +315,9 @@ class ApiClientImp implements ApiClient {
SharedPrefManager.setRefreshToken(refresh.data!.refreshToken ?? "");
String mdata = await SharedPrefManager.getData();
UserInfo info = UserInfo.fromJson(jsonDecode(mdata));
User user = User();
user.data = UserData(accessToken: refresh.data!.accessToken ?? "", refreshToken: refresh.data!.refreshToken ?? "", userInfo: info);
User user = User();
user.data = UserData(accessToken: refresh.data!.accessToken ?? "", refreshToken: refresh.data!.refreshToken ?? "", userInfo: info);
AppState().setUser = user;
return refresh.data!.accessToken ?? "";
return refresh.data!.accessToken??"";
}
}

@ -1,10 +1,7 @@
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:mc_common_app/models/general_models/post_params_model.dart';
import 'package:mc_common_app/models/subscriptions_models/provider_subscription_model.dart';
import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
import 'package:mc_common_app/models/user_models/user.dart';
import 'package:mc_common_app/models/general/post_params_model.dart';
import 'package:mc_common_app/models/user/user.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
class AppState {
static final AppState _instance = AppState._internal();
@ -19,22 +16,6 @@ class AppState {
bool? get getIsLogged => isLogged;
String? _deviceToken;
String? get getDeviceToken => _deviceToken;
set setDeviceToken(String value) {
_deviceToken = value;
}
String? _deviceType;
String? get getDeviceType => _deviceType;
set setDeviceType(String value) {
_deviceType = value;
}
AppType currentAppType = AppType.provider;
UserType userType = UserType.customer;
@ -42,7 +23,7 @@ class AppState {
currentAppType = appType;
}
User? _user;
User? _user = null;
set setUser(v) => _user = v;
@ -63,30 +44,4 @@ class AppState {
set setCurrentLocation(v) => currentLocation = v;
LatLng get getCurrentLocation => currentLocation;
List<Subscription>? _providerSubscription;
List<Subscription> get getproviderSubscription => _providerSubscription ?? [Subscription(name: "")];
set setproviderSubscription(List<Subscription>? value) {
_providerSubscription = value;
}
DropValue? _userRegisterCountrySelection;
DropValue get getUserRegisterCountrySelection => _userRegisterCountrySelection!;
set setUserRegisterCountrySelection(DropValue value) {
_userRegisterCountrySelection = value;
}
bool _isViewOnly = false;
bool get getIsViewOnly => _isViewOnly;
set setIsViewOnly(bool value) {
_isViewOnly = value;
}
}

@ -1,92 +1,63 @@
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/generated/codegen_loader.g.dart';
import 'package:mc_common_app/models/user_models/user.dart';
import 'package:mc_common_app/utils/enums.dart';
class ApiConsts {
// static String baseUrl = "http://10.200.204.20:2801/"; // Local server
static String baseUrl = "https://ms.hmg.com/"; // production server
static String baseUrlServices = baseUrl; // production server
static String basicOTP = "${baseUrlServices}api/Register/BasicOTP";
static String basicVerify = "${baseUrlServices}api/Register/BasicVerify";
static String basicComplete = "${baseUrlServices}api/Register/BasicComplete";
static String refreshToken = "${baseUrlServices}api/Account/RefreshToken";
static String signalRUrl = "${baseUrl}McHub";
static String baseUrlServices = "$baseUrl"; // production server
static String BasicOTP = "${baseUrlServices}api/Register/BasicOTP";
static String BasicVerify = "${baseUrlServices}api/Register/BasicVerify";
static String BasicComplete = "${baseUrlServices}api/Register/BasicComplete";
static String RefreshToken = "${baseUrlServices}api/Account/RefreshToken";
//User
static String loginV1 = "${baseUrlServices}api/Account/Login_V1";
static String loginV2OTP = "${baseUrlServices}api/Account/Login_V2_OTP";
static String loginV2OTPVerify = "${baseUrlServices}api/Account/Login_V2_OTPVerify";
static String Login_V1 = "${baseUrlServices}api/Account/Login_V1";
static String Login_V2_OTP = "${baseUrlServices}api/Account/Login_V2_OTP";
static String Login_V2_OTPVerify = "${baseUrlServices}api/Account/Login_V2_OTPVerify";
static String user = "${baseUrlServices}api/User/";
static String getAllCountry = "${baseUrlServices}api/Master/Country_Get";
static String getProviderRoles = "${baseUrlServices}api/Master/RoleServiceProvider_Get";
static String getAllCities = "${baseUrlServices}api/Master/City_Get";
static String forgetPasswordOTPRequest = "${baseUrlServices}api/Account/ForgetPasswordOTPRequest";
static String forgetPasswordOTPCompare = "${baseUrlServices}api/Account/ForgetPasswordOTPCompare";
static String forgetPassword = "${baseUrlServices}api/Account/ForgetPassword";
static String loginEmailOTP = "${baseUrlServices}api/Account/EmailVerify";
static String loginEmailOTPVerify = "${baseUrlServices}api/Account/EmailVerifyOTPVerify";
static String changePassword = "${baseUrlServices}api/Account/ChangePassword";
static String changeMobileNoOTPRequest = "${baseUrlServices}api/Account/ChangeMobileNoOTPRequest";
static String changeMobileNo = "${baseUrlServices}api/Account/ChangeMobileNo";
static String changeEmailOTPRequest = "${baseUrlServices}api/Account/ChangeEmailOTPRequest";
static String changeEmail = "${baseUrlServices}api/Account/ChangeEmail";
static String emailVerify = "${baseUrlServices}api/Account/EmailVerify";
static String emailVerifyOTPVerify = "${baseUrlServices}api/Account/EmailVerifyOTPVerify";
static String logoutUser = "${baseUrlServices}api/Account/Logout";
static String updateUserImage = "${baseUrlServices}api/User_UpdateProfileImage";
static String getUserImage = "${baseUrlServices}api/ProfileImage";
static String userUpdate = "${baseUrlServices}api/User_Update";
static String providerComplaintCreate = "${baseUrlServices}api/ServiceProviders/ProviderComplaint_Create";
static String provideContactInfoGet = "${baseUrlServices}api/ServiceProviders/ServiceProviderContact_Get";
static String GetAllCountry = "${baseUrlServices}api/Master/Country_Get";
static String GetProviderRoles = "${baseUrlServices}api/Master/RoleServiceProvider_Get";
static String GetAllCities = "${baseUrlServices}api/Master/City_Get";
static String ForgetPasswordOTPRequest = "${baseUrlServices}api/Account/ForgetPasswordOTPRequest";
static String ForgetPasswordOTPCompare = "${baseUrlServices}api/Account/ForgetPasswordOTPCompare";
static String ForgetPassword = "${baseUrlServices}api/Account/ForgetPassword";
static String Login_Email_OTP = "${baseUrlServices}api/Account/EmailVerify";
static String Login_Email_OTPVerify = "${baseUrlServices}api/Account/EmailVerifyOTPVerify";
static String ChangePassword = "${baseUrlServices}api/Account/ChangePassword";
static String ChangeMobileNoOTPRequest = "${baseUrlServices}api/Account/ChangeMobileNoOTPRequest";
static String ChangeMobileNo = "${baseUrlServices}api/Account/ChangeMobileNo";
static String ChangeEmailOTPRequest = "${baseUrlServices}api/Account/ChangeEmailOTPRequest";
static String ChangeEmail = "${baseUrlServices}api/Account/ChangeEmail";
static String EmailVerify = "${baseUrlServices}api/Account/EmailVerify";
static String EmailVerifyOTPVerify = "${baseUrlServices}api/Account/EmailVerifyOTPVerify";
static String UpdateUserImage = "${baseUrlServices}api/User_UpdateProfileImage";
static String GetUserImage = "${baseUrlServices}api/ProfileImage";
//Profile
static String fetProviderDocument = "${baseUrlServices}api/ServiceProviders/ServiceProviderDocument_Get";
static String serviceProviderDocumentUpdate = "${baseUrlServices}api/ServiceProviders/ServiceProviderDocument_Update";
static String GetProviderDocument = "${baseUrlServices}api/ServiceProviders/ServiceProviderDocument_Get";
static String ServiceProviderDocument_Update = "${baseUrlServices}api/ServiceProviders/ServiceProviderDocument_Update";
//Branch
static String getProviderBranch = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranch_Get";
static String createProviderBranch = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranch_Create";
static String updateProviderBranch = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranch_Update";
static String deleteProviderBranch = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranch_Delete";
static String serviceProviderBranchGet = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranch_Get";
static String serviceCategoryGet = "${baseUrlServices}api/Master/ServiceCategory_Get";
static String servicesGet = "${baseUrlServices}api/ServiceProviders/Services_Get";
static String serviceProviderServiceCreate = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Create";
static String serviceProviderServiceUpdate = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Update";
static String serviceProviderServiceStatusUpdate = "${baseUrlServices}api/ServiceProviders/CategoryAndService_ActivateDeactivateBySP";
static String getProviderServices = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Get";
static String setScheduleInactive = "${baseUrlServices}api/ServiceProviders/BranchAppointmentSchedule_IsActiveUpdate";
static String serviceProviderAppointmentGetByCategoryOrService = "${baseUrlServices}api/ServiceProviders/ServiceProviderAppointment_GetByCategoryOrService";
static String serviceProviderServiceGet = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Get";
static String branchesAndServices = "${baseUrlServices}api/ServiceProviders/ServiceProviderDetail_Get";
static String serviceProviderDDLGet = "${baseUrlServices}api/ServiceProviders/ServiceProviderDDL_Get";
static String getAllNearBranches = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranchDetail_Get";
static String getMyRecentBranches = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranchRecent_Get";
static String getBranchRatings = "${baseUrlServices}api/ServiceProviders/BranchRating_Get";
static String createBranchRatings = "${baseUrlServices}api/ServiceProviders/BranchRating_Create";
static String favouriteServiceProviderCreate = "${baseUrlServices}api/ServiceProviders/FavouriteServiceProvider_Create";
static String unFavouriteServiceProvider = "${baseUrlServices}api/ServiceProviders/UnFavouriteServiceProvider";
static String favouriteServiceProviderGet = "${baseUrlServices}api/ServiceProviders/FavouriteServiceProvider_Get";
static String ServiceProviderBranchGet = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranch_Get";
static String ServiceCategory_Get = "${baseUrlServices}api/Master/ServiceCategory_Get";
static String Services_Get = "${baseUrlServices}api/ServiceProviders/Services_Get";
static String ServiceProviderService_Create = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Create";
static String ServiceProviderService_Update = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Update";
static String ServiceProviderService_Get = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Get";
static String BranchesAndServices = "${baseUrlServices}api/ServiceProviders/ServiceProviderDetail_Get";
static String GetAllNearBranches = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranchDetail_Get";
//Appointment APIs
static String serviceProvidersAppointmentGet = "${baseUrlServices}api/ServiceProviders/ServiceProvidersAppointment_Get";
static String customersAppointmentGetByFilters = "${baseUrlServices}api/ServiceProviders/ServiceProvidersAppointmentSearchFiltersByCustomer_Get";
static String serviceCategoryGet = "${baseUrlServices}api/Master/ServiceCategory_Get";
static String serviceItemsGet = "${baseUrlServices}api/ServiceProviders/ServiceItem_Get";
static String getServiceItemAppointmentScheduleSlots = "${baseUrlServices}api/ServiceProviders/ServiceItemAppointmentScheduleSlots_GetByAppointmentType";
static String serviceProvidersAppointmentCreate = "${baseUrlServices}api/ServiceProviders/ServiceProvidersAppointmentList_Create";
static String serviceProviderAppointmentRescheduleCancelAppointment = "${baseUrlServices}api/ServiceProviders/ServiceProviderAppointment_RescheduleCancelAppointment";
static String addNewServicesInAppointment = "${baseUrlServices}api/ServiceProviders/ServiceProviderAppointment_ServiceItemAdd";
static String getAppointmentSlots = "${baseUrlServices}api/ServiceProviders/ScheduleSlotsInfo_Get";
static String updateAppointmentStatus = "${baseUrlServices}api/ServiceProviders/ServiceProvidersAppointmentStatus_Update";
static String updateAppointmentPaymentStatus = "${baseUrlServices}api/ServiceProviders/ServiceProviderAppointmentServiceItemPaymentStatus_Update";
static String createMergeAppointment = "${baseUrlServices}api/ServiceProviders/ServiceProviderMergeAppointment_Create";
static String GetServiceItemAppointmentScheduleSlots = "${baseUrlServices}api/ServiceProviders/ServiceItemAppointmentScheduleSlots_GetByAppointmentType";
static String ServiceProvidersAppointmentCreate = "${baseUrlServices}api/ServiceProviders/ServiceProvidersAppointmentList_Create";
static String ServiceProviderAppointmentRescheduleCancelAppointment = "${baseUrlServices}api/ServiceProviders/ServiceProviderAppointment_RescheduleCancelAppointment";
//ServiceProvidersServiceID as params
// static String servicesGet = "${baseUrlServices}api/ServiceProviders/Services_Get";
@ -104,7 +75,6 @@ class ApiConsts {
static String updateSchedule = "${baseUrlServices}api/ServiceProviders/BranchAppointmentSchedule_Update";
static String createGroup = "${baseUrlServices}api/ServiceProviders/BranchScheduleGroupService_Create";
static String updateGroup = "${baseUrlServices}api/ServiceProviders/BranchScheduleGroupService_Update";
static String checkGroupServiceInBranchSchedule = "${baseUrlServices}api/ServiceProviders/BranchScheduleGroupService_Check";
//Advertisement APIs
static String vehicleTypeGet = "${baseUrlServices}api/ServiceProviders/VehicleType_Get";
@ -124,8 +94,6 @@ class ApiConsts {
static String vehicleAdsDurationGet = "${baseUrlServices}api/Advertisement/AdsDuration_Get";
static String vehicleAdsSpecialServicesGet = "${baseUrlServices}api/Common/SpecialService_Get";
static String vehicleAdsSingleStepCreate = "${baseUrlServices}api/Advertisement/AdsSingleStep_Create";
static String vehicleAdsSingleStepUpdate = "${baseUrlServices}api/Advertisement/AdsSingleStep_Update";
static String vehicleAdsSingleStepUpdateExtend = "${baseUrlServices}api/Advertisement/AdsSingleStep_Update_Extend";
static String vehicleAdsGet = "${baseUrlServices}api/Advertisement/Ads_Get";
static String myAdsReserveGet = "${baseUrlServices}api/Advertisement/AdsReserve_Get";
static String reserveAdsBankDetailsGet = "${baseUrlServices}api/Advertisement/MCBankAccountAd_Get";
@ -135,32 +103,24 @@ class ApiConsts {
static String adsPhotoOfficeAppointmentScheduleSlotGet = "${baseUrlServices}api/Advertisement/PhotoOfficeAppointmentScheduleSlot_Get";
static String adsPhotoOfficeAppointmentCreate = "${baseUrlServices}api/Advertisement/PhotoOfficeAppointment_Create";
static String adsMCBankAccountAdGet = "${baseUrlServices}api/Advertisement/MCBankAccountAd_Get";
static String adsReserveCreate = "${baseUrlServices}api/Advertisement/AdsReserve_Create";
static String reserveAdPaymentOnDealDoneCreate = "${baseUrlServices}api/Advertisement/ReserveAdPaymentOnDealDone_Create";
static String adsExtendDurationCreate = "${baseUrlServices}api/Advertisement/Ads_ExtendDuration_Create";
static String adsSingleStepDraftCreate = "${baseUrlServices}api/Advertisement/AdsSingleStepDraft_Create";
static String adsSingleStepDraftUpdate = "${baseUrlServices}api/Advertisement/AdsSingleStepDraft_Update";
static String getMyDraftAds = "${baseUrlServices}api/Advertisement/AdsDraft_Get";
//Subscription
static String getMySubscriptions = "${baseUrlServices}api/ServiceProviders/ProviderSubscription_Get";
static String getAllSubscriptions = "${baseUrlServices}api/Common/Subscription_Get";
static String getSubscriptionBySP = "${baseUrlServices}api/Common/SubscriptionBySP_Get";
static String calculationUpgradePrice = "${baseUrlServices}api/ServiceProviders/CalculationUpgradePrice";
static String payFortOrderProviderSubscriptionCreate = "${baseUrlServices}api/Payment/PayFortOrder_ProviderSubscription_Create";
static String getSPBranchUserGet = "${baseUrlServices}api/ServiceProviders/SPBranchUser_Get";
// Payment
static String paymentWebViewUrl = "https://ms.hmg.com/pay/PaymentHome";
static String payForOrderDetailGet = "${baseUrlServices}api/Payment/PayFortOrderDetail_Get";
static String payForOrderIsPaidGet = "${baseUrlServices}api/Payment/PayFortOrderIsPaid_Get";
//Duplicate Services
static String getMatchedServices = "${baseUrlServices}api/ServiceProviders/ServiceProviderBranchServicesMapping_Get";
static String duplicateItems = "${baseUrlServices}api/ServiceProviders/ServiceItemCopy_Create";
//Branch Users
static String getAllProviderDealers = "${baseUrlServices}api/ServiceProviders/DealershipUserBranchWise_Get";
// /api/ServiceProviders/BranchUser_Get
//DealershipUserBranchWise_Get
static String getBranchUser = "${baseUrlServices}api/ServiceProviders/BranchUser_Get";
static String assignDealerToBranch = "${baseUrlServices}api/ServiceProviders/BranchUser_Create";
static String removeDealerFromBranch = "${baseUrlServices}api/ServiceProviders/BranchUser_Update";
@ -172,58 +132,14 @@ class ApiConsts {
static String createRequest = "${baseUrlServices}api/RequestManagement/Request_Create";
static String getRequest = "${baseUrlServices}api/RequestManagement/Request_Get";
static String getRequestOffers = "${baseUrlServices}api/RequestManagement/ReqOffer_Get";
static String updateRequestOfferStatus = "${baseUrlServices}api/RequestManagement/RequestOffer_UpdateStatus";
static String updateRequestOffer = "${baseUrlServices}api/RequestManagement/ReqOffer_Update";
static String updateRequestCustomer = "${baseUrlServices}api/RequestManagement/Request_StatusUpdate_Customer";
static String updateRequestProvider = "${baseUrlServices}api/RequestManagement/Request_StatusUpdate_Provider";
static String requestOffersSpsGet = "${baseUrlServices}api/RequestManagement/Request_OfferSPs_Get";
static String getServiceRequestsForProvider = "${baseUrlServices}api/RequestManagement/Request_ServiceProvider";
static String requestOfferUpdateDeliveryOptionByCustomer = "${baseUrlServices}api/RequestManagement/RequestOffer_UpdateDeliveryByCustomer";
static String requestUpdateAdditionalAddress = "${baseUrlServices}api/RequestManagement/Request_UpdateAdditionalAddress";
//Shipping
static String shippingRequestStatusUpdate = "${baseUrlServices}api/RequestManagement/ShippingRequestStatus_Update";
static String shippingRequestStatusGet = "${baseUrlServices}api/RequestManagement/ShippingRequestStatus_Get";
static String selfPickupRequestStatusGet = "${baseUrlServices}api/RequestManagement/SelfPickUpRequestStatus_Get";
static String selfPickupRequestStatusUpdate = "${baseUrlServices}api/RequestManagement/SelfPickUpRequestStatus_Update";
//Chat
static String chatHubUrl = "$baseUrlServices/McHub";
static String messageIsReadUpdateForRequests = "${baseUrlServices}api/RequestManagement/ReqOfferChatIsRead_Update";
static String messageIsReadUpdateForAds = "${baseUrlServices}api/Advertisement/AdsChatIsRead_Update";
static String getChatMessagesForRequests = "${baseUrlServices}api/RequestManagement/ReqOfferChat_Get";
static String getChatMessagesForAds = "${baseUrlServices}api/Advertisement/AdsChat_Get";
static String getChatBuyersForAds = "${baseUrlServices}api/Advertisement/AdsChatBuyer_Get";
static String reqChatUnreadGet = "${baseUrlServices}api/RequestManagement/Req_ChatCount_Get";
//Settings Options
static String getAllFAQs = "${baseUrlServices}api/Common/FAQ_Get";
static String createAppInvitation = "${baseUrlServices}api/Common/AppInvitation_Create";
static String getContactInfo = "${baseUrlServices}api/Master/ContactInfo_Get";
static String getAppInfo = "${baseUrlServices}api/Master/AppInfo_Get";
static String getTermsAndConditions = "${baseUrlServices}api/Master/TermAndCondition_Get";
static String getAppInvitationHistory = "${baseUrlServices}api/Common/AppInvitation_Get";
static List<String> closingUrls = ["PayFortResponse"];
}
class GlobalConsts {
static String appNameCustomer = "MOWATER Customer";
static String appNameProvider = "MOWATER Provider";
//Android
static String appPackageNameCustomerAndroid = "com.cloud.solutions.mowater.ksa.customer";
static String appPackageNameProviderAndroid = "com.cloud.solutions.mowater.ksa.provider";
static String appPlayStoreLinkCustomerAndroid = "https://play.google.com/store/apps/details?id=$appPackageNameCustomerAndroid";
static String appPlayStoreLinkProviderAndroid = "https://play.google.com/store/apps/details?id=$appPackageNameProviderAndroid";
//IOS
static String appIDCustomerIOS = "";
static String appIDProviderIOS = "";
static String appAppStoreStoreLinkCustomerIos = "https://apps.apple.com/us/app/$appIDCustomerIOS";
static String appAppStoreStoreLinkProviderIos = "https://apps.apple.com/us/app/$appIDProviderIOS";
static String isRememberMe = "remember_me";
static String email = "email";
static String password = "password";
@ -232,10 +148,7 @@ class GlobalConsts {
static String welcomeVideoUrl = "welcomeVideoUrl";
static String doNotShowWelcomeVideo = "doNotShowWelcomeVideo";
static String demandAmountError = "Amount Cannot be Empty";
static String deliveryOptionSelectionError = "At least one delivery option should be selected.";
static String reservationCancelError = "Cancellation Reason Cannot be Empty";
static String descriptionError = "Description should be more than 5 letters.";
static String acceptingThisOffer = "I am accepting this offer.";
static String descriptionError = "Description Cannot be Empty";
static String vehicleVinError = "Vehicle VIN Cannot be Empty";
static String vehicleTitleError = "Vehicle Title Cannot be Empty";
static String warrantyError = "Warranty Duration Cannot be Empty";
@ -246,43 +159,8 @@ class GlobalConsts {
static String adDurationPhoneNumberError = "Phone number cannot be empty";
static String adReservablePriceErrorConst = "Ad Reservable price cannot be empty";
static String homeLocationEmptyError = "Home location cannot be empty";
static String fillAllFields = "Please fill out all the fields.";
static String requestTypeCannotBeEmpty = "Request type cannot be empty.";
static String serviceNameError = "Service name cannot be empty.";
static String priceError = "Price cannot be empty.";
static String taxError = "Tax cannot be empty.";
static String reserveAdPriceInfo =
"Some dummy description to explain the following concept. This price will be for 24 hours and if a user cancels the reservations before 24 hours then the amount will be automatically refunded to the buyer.";
static String appInvitationMessageEn = "🚗 Hey , check out MOWATER to book car services, buy/sell vehicles, and more—join here! [Invite Link]";
static String getAppInvitationLink() {
String appInvitationMessageEn = "";
if (Platform.isAndroid) {
if (AppState().currentAppType == AppType.customer) {
appInvitationMessageEn = "🚗 Hey , check out $appNameCustomer to book car services, buy/sell vehicles, and more—join here! \n\n $appPlayStoreLinkCustomerAndroid";
} else {
appInvitationMessageEn = "🚗 Hey , check out $appNameProvider to book car services, buy/sell vehicles, and more—join here! \n\n $appPlayStoreLinkProviderAndroid";
}
} else if (Platform.isIOS) {
if (AppState().currentAppType == AppType.customer) {
appInvitationMessageEn = "🚗 Hey , check out $appNameCustomer to book car services, buy/sell vehicles, and more—join here! \n\n $appPlayStoreLinkCustomerAndroid";
} else {
appInvitationMessageEn = "🚗 Hey , check out $appNameProvider to book car services, buy/sell vehicles, and more—join here! \n\n $appPlayStoreLinkProviderAndroid";
}
}
return appInvitationMessageEn;
}
// Attachment Values
static int maxFileCount = 7;
static int maxFileSizeInBytes = 2 * 1024 * 1024;
static String allowedFileExtensions = "jpg,jpeg,png - 2MB/file";
static String allowedFileExtensionsPDF = "PDF 2MB/file";
static int providerDealerRoleTypeId = 6;
static int providerIndividualRoleTypeId = 5;
}
class MyAssets {
@ -373,10 +251,6 @@ class MyAssets {
static String tamaraArPng = "${assetPath}icons/payments/tamara_ar.png";
static String tamaraEngPng = "${assetPath}icons/payments/tamara_en.png";
static String visaPng = "${assetPath}icons/payments/visa.png";
static String whatsAppIcon = "${assetPath}icons/whatsapp_icon.svg";
static const String arrowRight = "${assetPath}icons/ic_arrow_right.svg";
static const String brokenImage = "${assetPath}images/broken_image.png";
}
RegExp numReg = RegExp(r".*[0-9].*");
@ -392,79 +266,5 @@ class MyLocales {
}
class MyFonts {
static const poppinsFont = 'packages/mc_common_app/Poppins';
static const gessTwoFont = 'packages/mc_common_app/GessTwo';
static const FontWeight Thin = FontWeight.w100;
static const FontWeight ExtraLight = FontWeight.w200;
static const FontWeight Light = FontWeight.w300;
static const FontWeight Regular = FontWeight.w400;
static const FontWeight Medium = FontWeight.w500;
static const FontWeight SemiBold = FontWeight.w600;
static const FontWeight Bold = FontWeight.w700;
static const FontWeight ExtraBold = FontWeight.w800;
static const FontWeight Black = FontWeight.w900;
static const FontWeight ItalicRegular = FontWeight.w400;
static const FontWeight ItalicMedium = FontWeight.w500;
static const FontWeight ItalicSemiBold = FontWeight.w600;
static const FontWeight ItalicBold = FontWeight.w700;
static const FontWeight ItalicExtraBold = FontWeight.w800;
static const FontWeight ItalicBlack = FontWeight.w900;
}
class SignalrConsts {
// Requests
static String receiveMessageRequestOffer = "ReceiveMessageRequestOffer";
static String sendMessageRequestOffer = "SendMessageRequestOffer";
// Ads
static String sendMessageAds = "SendMessageAds";
static String receiveMessageAds = "ReceiveMessageAds";
// General
static String sendMessageGeneral = "SendMessageGeneral";
static String receiveMessageGeneral = "ReceiveMessageGeneral";
}
class GuestConsts {
UserInfo userInfo = UserInfo.fromJson(
{
"id": -1,
"userID": null,
"firstName": "Guest",
"lastName": "User",
"companyName": null,
"accountStatus": "2",
"activityStatus": "Offline",
"accountStatusText": null,
"subscriptionDate": null,
"mobileNo": "966123456789",
"email": "mowatter@gmail.com",
"userImageUrl": "https://ms.hmg.com/api/ProfileImage?imageName=User_Default.png",
"roleID": 4,
"roleName": "Customer",
"isEmailVerified": false,
"serviceProviderBranch": [],
"isVerified": true,
"userRoles": [],
"isProviderDealership": false,
"isProviderIndividual": false,
"isProvider": false,
"providerID": null,
"isCustomer": true,
"customerID": 25,
"countryID": 1,
"countryName": "Saudi Arabia",
"cityID": 1,
"cityName": "Riyadh",
"dealershipUserID": null,
"serviceProviderBranchID": null,
"createdOn": "2024-12-24T09:20:47.6733333",
"genderID": 1,
"genderName": "Male",
"serviceProviderPayment": [],
"deviceType": "1",
"deviceToken": null,
},
);
static const poppinsFont = "packages/mc_common_app/Poppins";
}

@ -1,24 +1,18 @@
// import 'package:firebase_crashlytics/firebase_crashlytics.dart';
// import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:injector/injector.dart';
import 'package:mc_common_app/api/api_client.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/repositories/ads_repo.dart';
import 'package:mc_common_app/repositories/appointment_repo.dart';
import 'package:mc_common_app/repositories/branch_repo.dart';
import 'package:mc_common_app/repositories/chat_repo.dart';
import 'package:mc_common_app/repositories/common_repo.dart';
import 'package:mc_common_app/repositories/payments_repo.dart';
import 'package:mc_common_app/repositories/setting_options_repo.dart';
import 'package:mc_common_app/repositories/shipping_repo.dart';
import 'package:mc_common_app/repositories/provider_repo.dart';
import 'package:mc_common_app/repositories/user_repo.dart';
import 'package:mc_common_app/services/common_services.dart';
import 'package:mc_common_app/services/firebase_service.dart';
import 'package:mc_common_app/services/payments_service.dart';
import 'package:mc_common_app/utils/location/Location.dart';
import '../repositories/request_repo.dart';
@ -31,11 +25,6 @@ class AppDependencies {
injector.registerSingleton<ApiClient>(() => ApiClientImp());
injector.registerSingleton<CommonAppServices>(() => CommonServicesImp());
injector.registerSingleton<PaymentService>(() => PaymentServiceImp());
injector.registerSingleton<Location>(() => LocationService());
injector.registerSingleton<FirebaseMessagingService>(() => FirebaseMessagingServiceImp(
firebaseMessaging: FirebaseMessaging.instance,
flutterLocalNotifications: FlutterLocalNotificationsPlugin(),
));
//repos
injector.registerSingleton<UserRepo>(() => UserRepoImp());
@ -43,12 +32,8 @@ class AppDependencies {
injector.registerSingleton<AdsRepo>(() => AdsRepoImp());
injector.registerSingleton<PaymentsRepo>(() => PaymentsRepoImp());
injector.registerSingleton<RequestRepo>(() => RequestRepoImp());
injector.registerSingleton<ProviderRepo>(() => ProviderRepoImp());
injector.registerSingleton<AppointmentRepo>(() => AppointmentRepoImp());
injector.registerSingleton<ChatRepo>(() => ChatRepoImp());
injector.registerSingleton<BranchRepo>(() => BranchRepoImp());
injector.registerSingleton<ShippingRepo>(() => ShippingRepoImp());
injector.registerSingleton<SettingOptionsRepo>(() => SettingOptionsRepoImp());
//
}
}

@ -1,35 +1,5 @@
import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart';
import 'package:mc_common_app/models/chat_models/buyers_chat_for_ads_model.dart';
import 'package:mc_common_app/models/chat_models/chat_message_model.dart';
import 'package:mc_common_app/models/requests_models/provider_offers_model.dart';
import 'package:mc_common_app/models/requests_models/request_model.dart';
import 'package:mc_common_app/models/user_models/register_user.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/views/advertisement/ads_buyer_chats_view.dart';
import 'package:mc_common_app/views/advertisement/ads_detail_view/ads_detail_view.dart';
import 'package:mc_common_app/views/advertisement/ads_filter_view.dart';
import 'package:mc_common_app/views/advertisement/create_ad_view.dart';
import 'package:mc_common_app/views/advertisement/my_draft_ads_view.dart';
import 'package:mc_common_app/views/advertisement/select_ad_type_view.dart';
import 'package:mc_common_app/views/chat/chat_view.dart';
import 'package:mc_common_app/views/payments/payment_methods_view.dart';
import 'package:mc_common_app/views/profile/profile_view.dart';
import 'package:mc_common_app/views/requests/create_request_page.dart';
import 'package:mc_common_app/views/requests/offer_list_page.dart';
import 'package:mc_common_app/views/requests/providers_chat_list_page.dart';
import 'package:mc_common_app/views/requests/request_detail_page.dart';
import 'package:mc_common_app/views/requests/requests_filter_view.dart';
import 'package:mc_common_app/views/requests/review_request_offer.dart';
import 'package:mc_common_app/views/setting_options/provider_accepted_requests_view.dart';
import 'package:mc_common_app/views/setting_options/provider_license_page.dart';
import 'package:mc_common_app/views/setting_options/setting_option_help.dart';
import 'package:mc_common_app/views/setting_options/setting_options_app_info.dart';
import 'package:mc_common_app/views/setting_options/setting_options_contact_us.dart';
import 'package:mc_common_app/views/setting_options/setting_options_faqs.dart';
import 'package:mc_common_app/views/setting_options/setting_options_invite_friends.dart';
import 'package:mc_common_app/views/setting_options/setting_options_more.dart';
import 'package:mc_common_app/views/setting_options/setting_options_terms_and_conditions.dart';
import 'package:mc_common_app/views/shipping_management/shipping_management_view.dart';
import 'package:mc_common_app/models/user/register_user.dart';
import 'package:mc_common_app/views/user/change_email_page.dart';
import 'package:mc_common_app/views/user/change_mobile_page.dart';
import 'package:mc_common_app/views/user/change_password_page.dart';
@ -46,13 +16,8 @@ import 'package:mc_common_app/views/user/register_page.dart';
import 'package:mc_common_app/views/user/register_provider_page.dart';
import 'package:mc_common_app/views/user/register_selection_page.dart';
import 'package:mc_common_app/views/splash/splash_page.dart';
import 'package:mc_common_app/views/user/update_user_city_country.dart';
import 'package:mc_common_app/views/user/update_user_details.dart';
import 'package:mc_common_app/views/user/vertify_password_page.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/widgets/image_viewer/image_viewer_screen.dart';
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
class AppRoutes {
//User
@ -77,107 +42,47 @@ class AppRoutes {
static const String changeEmailPage = "/changeEmailPage";
static const String editAccountPage = "/editAccoundPage";
// Provider App Routes
//settings
static const defineLicense = "/defineLicese";
static const String dealershipSetting = "/dealershipSetting";
static const String branchList = "/branchList";
static const String branchDetail = "/branchDetail";
static const String defineBranch = "/defineBranch";
//Appointments
static const String appointment = "/appointment";
static const String appointmentDetailList = "/appointmentDetailList";
static const String updateAppointmentPage = "/updateAppointmentPage";
static const String addServiceInAppointment = "/addServiceInAppointment";
static const String mergeAppointments = "/mergeAppointments";
//Services
static const String dealerUser = "/dealerUser";
static const String servicesList = "/servicesList";
static const String itemsList = "/itemsList";
static const String createItem = "/createItem";
static const String createServices = "/createServices";
static const String createServices2 = "/createServices2";
static const String createServices3 = "/createServices3";
//Schedules
static const String schedulesList = "/schedulesList";
static const String addSchedule = "/addSchedule";
// Subscriptions
static const String mySubscriptionsPage = "/mySubscriptionsPage";
static const String subscriptionsPage = "/subscriptionsPage";
//Bracnh Duplication
static const String matchServices = "/matchServices";
static const String userSettings = "/userSettings";
static const String dashboard = "/dashboard";
static const String bookProviderAppView = "/bookProviderAppView";
// Appointments
static const String appointmentDetailView = "/appointmentDetailView";
static const String bookAppointmenServicesView = "/bookAppointmenServicesView";
static const String bookAppointmenSchedulesView = "/bookAppointmenSchedulesView";
static const String bookAppointmentsItemView = "/bookAppointmentsItemView";
static const String reviewAppointmentView = "/reviewAppointmentView";
static const String appoinmentSearchFilterPage = "/appoinmentSearchFilterPage";
//Advertisement
static const String selectAdTypeView = "/selectAdTypeView";
static const String adsDetailView = "/adsDetailView";
static const String createAdView = "/createAdView";
static const String adsFilterView = "/adsFilterView";
static const String adsBuyerChatsListView = "/adsBuyersChatListView";
static const String myDraftAdsView = "/myDraftAdsView";
// Payments
static const String paymentMethodsView = "/paymentMethodsView";
//Shipping
static const shippingManagementView = "/shippingManagementView";
//Customer APP: Provider & Services
static const String branchDetailView = "/branchDetailPage";
static const String branchSearchFilterPage = "/branchSearchFilterPage";
static const String providerProfileView = "/providerProfilePage";
static const String favoriteListView = "/favoriteListView";
static const String branchDetailPage = "/branchDetailPage";
static const String providerProfilePage = "/providerProfilePage";
// Subscriptions
static const String mySubscriptionsPage = "/mySubscriptionsPage";
static const String subscriptionsPage = "/subscriptionsPage";
//Requests
static const String requestsDetailPage = "/requestsDetailPage";
static const String sendOfferPage = "/sendOfferPage";
static const String myRequestsPage = "/myRequestsPage";
static const String requestsFilterView = "/requestsFilterView";
static const String createRequestPage = "/createRequestPage";
static const String offersListPage = "/offersListPage";
static const String reviewRequestOffer = "/reviewRequestOffer";
static const String providerAcceptedRequestsView = "/providerAcceptedRequestsView";
static const String providersChatListPage = "/providersChatListPage";
static const String requestsDetailPage = "/requestsDetailPage";
static const String sendOfferPage = "/sendOfferPage";
//Setting Options
static const String settingOptionsFaqs = "/settingOptionsFaqs";
static const String settingOptionsContactUs = "/settingOptionsContactUs";
static const String settingOptionsAppInfo = "/settingOptionsAppInfo";
static const String settingOptionsTermsAndConditions = "/settingOptionsTermsAndConditions";
static const String settingOptionsMore = "/settingOptionsLanguages";
static const String settingOptionsLanguages = "/settingOptionsLanguages";
static const String settingOptionsInviteFriends = "/settingOptionsInviteFriends";
static const String settingOptionsHelp = "/settingOptionsHelp";
//MediaViewer
static const String mediaViewerScreen = "/mediaViewer";
//Profile Screen
static const String profileView = "/profileView";
static const providerLicensePage = "/providerLicensePage";
static const String generalChatsListForProvider = "/generalChatsListForProvider";
//Chat
static const String chatView = "/chatView";
static const String updateUserDetails = "/updateUserDetails";
static const String updateUserCity = "/updateUserCity";
static const String initialRoute = splash;
static final Map<String, WidgetBuilder> routes = {
@ -189,105 +94,15 @@ class AppRoutes {
registerProvider: (context) => const RegisterProviderPage(),
forgetPassword: (context) => const ForgetPasswordPage(),
loginVerification: (context) => const LoginVerificationPage(),
loginWithPassword: (context) => LoginWithPassword(isRemoveBackButton: (ModalRoute.of(context)!.settings.arguments ?? true) as bool),
loginWithPassword: (context) => const LoginWithPassword(),
loginMethodSelection: (context) => LoginMethodSelectionPage(ModalRoute.of(context)!.settings.arguments as String),
completeProfile: (context) => CompleteProfilePage(ModalRoute.of(context)!.settings.arguments as RegisterUserRespModel),
verifyPassword: (context) => VerifyPasswordPage(),
confirmNewPasswordPage: (context) => ConfirmNewPasswordPage(ModalRoute.of(context)!.settings.arguments as String),
changePassword: (context) => const ChangePasswordPage(),
forgetPasswordMethodPage: (context) => ForgetPasswordMethodPage(ModalRoute.of(context)!.settings.arguments as String),
changeMobilePage: (context) => ChangeMobilePage(),
changeEmailPage: (context) => const ChangeEmailPage(),
updateUserDetails: (context) => const UpdateUserDetails(),
updateUserCity: (context) => const UpdateUserCityCountry(),
changePassword: (context) => const ChangePasswordPage(),
editAccountPage: (context) => const EditAccountPage(),
profileView: (context) => const ProfileScreen(),
settingOptionsMore: (context) => const SettingOptionsMore(),
settingOptionsHelp: (context) => const SettingOptionsHelp(),
providerLicensePage: (context) => const ProviderLicensePage(),
// common pages
AppRoutes.adsDetailView: (context) => AdsDetailView(adDetails: ModalRoute.of(context)!.settings.arguments as AdDetailsModel),
AppRoutes.createAdView: (context) => const CreateAdView(),
AppRoutes.adsFilterView: (context) => const AdsFilterView(),
AppRoutes.myDraftAdsView: (context) => const MyDraftAdsView(),
AppRoutes.selectAdTypeView: (context) => SelectAdTypeView(arguments: ModalRoute.of(context)!.settings.arguments as List<dynamic>),
AppRoutes.chatView: (context) => ChatView(chatViewArguments: ModalRoute.of(context)!.settings.arguments as ChatViewArguments),
AppRoutes.adsBuyerChatsListView: (context) => AdsBuyerChatsView(buyersListViewArguments: ModalRoute.of(context)!.settings.arguments as List<BuyersChatForAdsModel>),
AppRoutes.settingOptionsFaqs: (context) => const SettingOptionsFAQs(),
AppRoutes.settingOptionsContactUs: (context) => const SettingOptionsContactUs(),
AppRoutes.settingOptionsAppInfo: (context) => const SettingOptionsAppInfo(),
AppRoutes.settingOptionsTermsAndConditions: (context) => const SettingOptionsTermsAndConditions(),
AppRoutes.settingOptionsInviteFriends: (context) => const SettingOptionsInviteFriends(),
AppRoutes.paymentMethodsView: (context) => PaymentMethodsView(paymentType: ModalRoute.of(context)!.settings.arguments as PaymentTypes),
//Requests
AppRoutes.requestsDetailPage: (context) => RequestDetailPage(requestDetailPageArguments: ModalRoute.of(context)!.settings.arguments as RequestDetailPageArguments),
AppRoutes.createRequestPage: (context) => const CreateRequestPage(),
AppRoutes.offersListPage: (context) => OfferListPage(requestId: ModalRoute.of(context)!.settings.arguments as int),
AppRoutes.reviewRequestOffer: (context) => const ReviewRequestOffer(),
AppRoutes.requestsFilterView: (context) => const RequestsFilterView(),
AppRoutes.providersChatListPage: (context) => const ProvidersChatListPage(),
//MediaViewer
AppRoutes.mediaViewerScreen: (context) => MediaViewerScreen(images: ModalRoute.of(context)!.settings.arguments as List<MessageImageModel>),
// ChatsList Provider
AppRoutes.generalChatsListForProvider: (context) => OfferListPage(requestId: ModalRoute.of(context)!.settings.arguments as int),
//Shipping
AppRoutes.shippingManagementView: (context) => const ShippingManagementView(),
};
}
class ChatViewArgumentsForRequest {
final int? requestId;
final ChatTypeEnum chatTypeEnum;
final String senderId;
final String receiverId;
final int providerIndex;
final int requestIndex;
final RequestModel? requestModel;
ChatViewArgumentsForRequest({
required this.chatTypeEnum,
this.requestId,
required this.senderId,
required this.receiverId,
required this.providerIndex,
required this.requestIndex,
this.requestModel,
});
}
class ChatViewArgumentsForAd {
final String? receiverUserID;
final int? adsID;
ChatViewArgumentsForAd({required this.receiverUserID, required this.adsID});
}
class ChatViewArguments {
final ChatViewArgumentsForAd? chatViewArgumentsForAd;
final ChatViewArgumentsForRequest? chatViewArgumentsForRequest;
final ChatTypeEnum chatTypeEnum;
ChatViewArguments({
this.chatViewArgumentsForAd,
this.chatViewArgumentsForRequest,
required this.chatTypeEnum,
});
}
class OfferListPageArguments {
final List<ServiceProvidersOffers> serviceProviderOffers;
final int? requestId;
OfferListPageArguments({required this.serviceProviderOffers, this.requestId});
}
class RequestDetailPageArguments {
final int requestIndex;
final RequestModel requestModel;
RequestDetailPageArguments({required this.requestIndex, required this.requestModel});
}

@ -1,49 +1,37 @@
import 'dart:developer';
import 'package:auto_size_text/auto_size_text.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/date_helper.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/enums.dart';
extension EmailValidator on String {
Widget toText(
{Color? color,
bool isBold = false,
double? fontSize,
bool isUnderLine = false,
bool isItalic = false,
TextDecoration? textDecoration,
double letterSpacing = 0,
TextAlign? textAlign,
FontWeight? fontWeight,
double? height,
Color? decorationColor,
TextOverflow? overflow,
bool isUpperCase = false,
int? maxLines}) {
bool isArabic = AppState().postParamsObject!.languageID == 1; // arabic -> 1 , English -> 2
return AutoSizeText(
isUpperCase ? toUpperCase() : this,
textAlign: textAlign,
maxLines: maxLines,
style: TextStyle(
overflow: overflow,
fontStyle: isItalic ? FontStyle.italic : null,
height: height,
decoration: isUnderLine ? TextDecoration.underline : textDecoration ?? TextDecoration.none,
decorationColor: decorationColor ?? color ?? MyColors.darkTextColor,
fontSize: fontSize ?? 10,
fontFamily: isArabic ? MyFonts.gessTwoFont : MyFonts.poppinsFont,
fontWeight: isBold ? FontWeight.bold : fontWeight ?? MyFonts.SemiBold,
color: color ?? MyColors.darkTextColor,
letterSpacing: letterSpacing,
),
);
}
{Color? color,
bool isBold = false,
double? fontSize,
bool isUnderLine = false,
bool isItalic = false,
TextDecoration? textDecoration,
double letterSpacing = -0.4,
TextAlign? textAlign,
FontWeight? fontWeight,
double? height,
int? maxLines}) =>
AutoSizeText(
this,
textAlign: textAlign,
maxLines: maxLines,
style: TextStyle(
fontStyle: isItalic ? FontStyle.italic : null,
height: height,
decoration: isUnderLine ? TextDecoration.underline : textDecoration ?? TextDecoration.none,
fontSize: fontSize ?? 10,
fontWeight: isBold ? FontWeight.bold : fontWeight ?? FontWeight.w600,
color: color ?? MyColors.darkTextColor,
letterSpacing: letterSpacing,
),
);
bool isValidEmail() {
return RegExp(r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$').hasMatch(this);
@ -165,57 +153,23 @@ extension FormatDate on String {
}
extension RequestEnum on int {
RequestStatusEnum toRequestStatusEnum() {
RequestStatus toRequestStatusEnum() {
if (this == 1) {
return RequestStatusEnum.submitted;
return RequestStatus.submitted;
} else if (this == 2) {
return RequestStatusEnum.inProgress;
return RequestStatus.inProgress;
} else if (this == 3) {
return RequestStatusEnum.completed;
return RequestStatus.completed;
} else if (this == 4) {
return RequestStatusEnum.cancelled;
return RequestStatus.cancelled;
} else if (this == 5) {
return RequestStatusEnum.paid;
return RequestStatus.paid;
} else if (this == 6) {
return RequestStatusEnum.expired;
return RequestStatus.expired;
} else if (this == 7) {
return RequestStatusEnum.shipping;
} else if (this == 8) {
return RequestStatusEnum.delivery;
} else if (this == 9) {
return RequestStatusEnum.selfPickup;
return RequestStatus.shipping;
} else {
return RequestStatusEnum.pending;
}
}
}
extension RequestStatusEnumToInt on RequestStatusEnum {
int getIdFromRequestStatusEnum() {
switch (this) {
case RequestStatusEnum.submitted:
return 1;
case RequestStatusEnum.inProgress:
return 2;
case RequestStatusEnum.completed:
return 3;
case RequestStatusEnum.cancelled:
return 4;
case RequestStatusEnum.paid:
return 5;
case RequestStatusEnum.expired:
return 6;
case RequestStatusEnum.shipping:
return 7;
case RequestStatusEnum.delivery:
return 8;
case RequestStatusEnum.selfPickup:
return 9;
case RequestStatusEnum.pending:
return 0;
default:
return 0;
return RequestStatus.pending;
}
}
}
@ -244,10 +198,6 @@ extension AdPostEnum on int {
return AdPostStatus.buyingService;
} else if (this == 11) {
return AdPostStatus.reserveCancel;
} else if (this == 12) {
return AdPostStatus.deActive;
} else if (this == 13) {
return AdPostStatus.pendingForActive;
} else if (this == 0) {
return AdPostStatus.allAds;
} else {
@ -256,112 +206,6 @@ extension AdPostEnum on int {
}
}
extension AppointmentStatusToInt on AppointmentStatusEnum {
int getIdFromAppointmentStatusEnum() {
switch (this) {
case AppointmentStatusEnum.booked:
return 1;
case AppointmentStatusEnum.confirmed:
return 2;
case AppointmentStatusEnum.arrived:
return 3;
case AppointmentStatusEnum.cancelled:
return 4;
case AppointmentStatusEnum.rescheduled:
return 5;
case AppointmentStatusEnum.workStarted:
return 7;
case AppointmentStatusEnum.visitCompleted:
return 8;
case AppointmentStatusEnum.today:
return 9;
case AppointmentStatusEnum.past:
return 10;
case AppointmentStatusEnum.upcoming:
return 11;
case AppointmentStatusEnum.allAppointments:
return 0;
default:
return 0;
}
}
}
extension AppointmentTypeEnumExt on int {
AppointmentTypeEnum toAppointmentTypeEnum() {
if (this == 1) {
return AppointmentTypeEnum.workshop;
} else if (this == 2) {
return AppointmentTypeEnum.home;
} else {
return AppointmentTypeEnum.workshop;
}
}
}
extension AppointmentTypeEnumExtString on AppointmentTypeEnum {
int getIdFromAppointmentTypeEnum() {
switch (this) {
case AppointmentTypeEnum.workshop:
return 1;
case AppointmentTypeEnum.home:
return 2;
default:
return 1;
}
}
}
extension AppointmentStatusToString on AppointmentStatusEnum {
String getAppointmentNameFromEnum() {
switch (this) {
case AppointmentStatusEnum.booked:
return "Booked";
case AppointmentStatusEnum.confirmed:
return "Confirmed";
case AppointmentStatusEnum.arrived:
return "Arrived";
case AppointmentStatusEnum.cancelled:
return "Canceled";
case AppointmentStatusEnum.rescheduled:
return "Rescheduled";
case AppointmentStatusEnum.upcoming:
return "Upcoming";
case AppointmentStatusEnum.workStarted:
return "Work Started";
case AppointmentStatusEnum.visitCompleted:
return "Visit Completed";
case AppointmentStatusEnum.past:
return "Past";
case AppointmentStatusEnum.today:
return "Today";
default:
return "Booked";
}
}
}
extension AppointmentEnum on int {
AppointmentStatusEnum toAppointmentStatusEnum() {
if (this == 1) {
@ -374,66 +218,14 @@ extension AppointmentEnum on int {
return AppointmentStatusEnum.cancelled;
} else if (this == 5) {
return AppointmentStatusEnum.rescheduled;
} else if (this == 7) {
return AppointmentStatusEnum.workStarted;
} else if (this == 8) {
return AppointmentStatusEnum.visitCompleted;
} else if (this == 9) {
return AppointmentStatusEnum.today;
} else if (this == 10) {
return AppointmentStatusEnum.past;
} else if (this == 11) {
return AppointmentStatusEnum.upcoming;
} else {
return AppointmentStatusEnum.allAppointments;
}
}
}
extension AppointmentPaymentStatusToInt on AppointmentPaymentStatusEnum {
int getIdFromAppointmentPaymentStatusEnum() {
switch (this) {
case AppointmentPaymentStatusEnum.defaultStatus:
return 1;
case AppointmentPaymentStatusEnum.payNow:
return 2;
case AppointmentPaymentStatusEnum.paid:
return 3;
case AppointmentPaymentStatusEnum.payLater:
return 4;
case AppointmentPaymentStatusEnum.payPartial:
return 5;
default:
return 1;
}
}
}
extension AppointmentPaymentEnum on int {
AppointmentPaymentStatusEnum toAppointmentPaymentStatusEnum() {
if (this == 1) {
return AppointmentPaymentStatusEnum.defaultStatus;
} else if (this == 2) {
return AppointmentPaymentStatusEnum.payNow;
} else if (this == 3) {
return AppointmentPaymentStatusEnum.paid;
} else if (this == 4) {
return AppointmentPaymentStatusEnum.payLater;
} else if (this == 5) {
return AppointmentPaymentStatusEnum.payPartial;
} else {
return AppointmentPaymentStatusEnum.defaultStatus;
}
}
}
extension RequestTypeTypEnum on int {
RequestsTypeEnum toRequestTypeEnum() {
extension RequestTypeTypeEnum on int {
RequestsTypeEnum toRequestTypeStatusEnum() {
if (this == 1) {
return RequestsTypeEnum.specialCarRequest;
} else if (this == 2) {
@ -444,7 +236,7 @@ extension RequestTypeTypEnum on int {
}
extension RequestTypeStatusToInt on RequestsTypeEnum {
int getIdFromRequestTypeEnum() {
int getIdFromRequestTypeStatusEnum() {
switch (this) {
case RequestsTypeEnum.specialCarRequest:
return 1;
@ -463,7 +255,6 @@ extension AdPostStatusToInt on AdPostStatus {
switch (this) {
case AdPostStatus.pendingForReview:
return 1;
case AdPostStatus.pendingForPayment:
return 2;
@ -493,13 +284,6 @@ extension AdPostStatusToInt on AdPostStatus {
case AdPostStatus.reserveCancel:
return 11;
case AdPostStatus.deActive:
return 12;
case AdPostStatus.pendingForActive:
return 13;
default:
return 0;
}
@ -511,18 +295,18 @@ extension PaymentTypesToInt on PaymentTypes {
switch (this) {
case PaymentTypes.subscription:
return 1;
case PaymentTypes.appointment:
return 2;
case PaymentTypes.adReserve:
return 4;
case PaymentTypes.ads:
return 3;
case PaymentTypes.request:
return 5;
case PaymentTypes.extendAds:
return 6;
case PaymentTypes.partialAppointment:
return 7;
default:
return 0;
@ -530,26 +314,26 @@ extension PaymentTypesToInt on PaymentTypes {
}
}
extension PaymentIdToPaymentTypes on int {
PaymentTypes getPaymentTypeFromId() {
extension AppointmentStatusToInt on AppointmentStatusEnum {
int getIdFromAppointmentStatusEnum() {
switch (this) {
case 1:
return PaymentTypes.subscription;
case 2:
return PaymentTypes.appointment;
case 4:
return PaymentTypes.adReserve;
case 3:
return PaymentTypes.ads;
case 5:
return PaymentTypes.request;
case 6:
return PaymentTypes.extendAds;
case 7:
return PaymentTypes.partialAppointment;
case AppointmentStatusEnum.booked:
return 1;
case AppointmentStatusEnum.confirmed:
return 2;
case AppointmentStatusEnum.arrived:
return 3;
case AppointmentStatusEnum.cancelled:
return 4;
case AppointmentStatusEnum.rescheduled:
return 5;
default:
return PaymentTypes.ads;
return 0;
}
}
}
@ -581,12 +365,6 @@ extension AdReserveStatusEnum on int {
return AdReserveStatus.cancelledByOwner;
} else if (this == 3) {
return AdReserveStatus.cancelledByAdmin;
} else if (this == 4) {
return AdReserveStatus.timeOver;
} else if (this == 5) {
return AdReserveStatus.dealDone;
} else if (this == 6) {
return AdReserveStatus.fullPaymentVerified;
} else {
return AdReserveStatus.defaultStatus;
}
@ -648,40 +426,12 @@ extension ServiceEnum on int {
}
}
extension BranchServiceEnumStatusToInt on ServiceStatusEnum {
int getIdFromServiceStatusEnum() {
switch (this) {
case ServiceStatusEnum.pending:
return 1;
case ServiceStatusEnum.review:
return 2;
case ServiceStatusEnum.approvedOrActive:
return 3;
case ServiceStatusEnum.rejected:
return 4;
case ServiceStatusEnum.blocked:
return 5;
case ServiceStatusEnum.deactivated:
return 6;
default:
return 1;
}
}
}
extension DateTimeConversions on DateTime {
String getTimeAgo({bool numericDates = true}) {
final date2 = DateTime.now();
final difference = date2.difference(this);
if ((difference.inDays / 7).floor() >= 2) {
return DateHelper.formatAsDayMonthYear(this);
} else if ((difference.inDays / 7).floor() >= 1) {
if ((difference.inDays / 7).floor() >= 1) {
return (numericDates) ? '1 week ago' : 'Last week';
} else if (difference.inDays >= 2) {
return '${difference.inDays} days ago';
@ -692,11 +442,11 @@ extension DateTimeConversions on DateTime {
} else if (difference.inHours >= 1) {
return (numericDates) ? '1 hour ago' : 'An hour ago';
} else if (difference.inMinutes >= 2) {
return '${difference.inMinutes} min ago';
return '${difference.inMinutes} minutes ago';
} else if (difference.inMinutes >= 1) {
return (numericDates) ? '1 min ago' : 'A min ago';
return (numericDates) ? '1 minute ago' : 'A minute ago';
} else if (difference.inSeconds >= 3) {
return '${difference.inSeconds} sec ago';
return '${difference.inSeconds} seconds ago';
} else {
return 'Just now';
}
@ -799,40 +549,12 @@ extension FormatMonthByNumber on String {
}
}
extension NameExtensions on String {
String getInitials() {
final name = trim();
String initials = "";
if (name.isEmpty) {
return initials;
}
final list = name.split(' ');
if (list.length > 1) {
initials = list[0][0].toUpperCase() + list[1][0].toUpperCase();
}
return initials;
}
}
extension ChatMessageTypeEnumExt on int {
//FreeText = 1,
// Image = 2,
// Audio = 3,
// Video = 4,
// Offer = 5
ChatMessageTypeEnum toChatMessageTypeEnum() {
if (this == 1) {
return ChatMessageTypeEnum.freeText;
} else if (this == 2) {
return ChatMessageTypeEnum.image;
} else if (this == 3) {
return ChatMessageTypeEnum.audio;
} else if (this == 4) {
return ChatMessageTypeEnum.video;
} else if (this == 5) {
return ChatMessageTypeEnum.offer;
return ChatMessageTypeEnum.freeText;
}
return ChatMessageTypeEnum.freeText;
}
@ -843,23 +565,18 @@ extension ChatMessageTypeToInt on ChatMessageTypeEnum {
switch (this) {
case ChatMessageTypeEnum.freeText:
return 1;
case ChatMessageTypeEnum.image:
return 2;
case ChatMessageTypeEnum.audio:
return 3;
case ChatMessageTypeEnum.video:
return 4;
case ChatMessageTypeEnum.offer:
return 5;
return 2;
default:
return 1;
return 0;
}
}
}
extension RequestOfferStatusEnumExt on int {
RequestOfferStatusEnum toRequestOfferStatusEnum() {
RequestOfferStatusEnum toChatMessageTypeEnum() {
if (this == 1) {
return RequestOfferStatusEnum.offer;
} else if (this == 2) {
@ -894,266 +611,3 @@ extension RequestOfferStatusEnumToInt on RequestOfferStatusEnum {
}
}
}
extension ChatTypeEnumExt on int {
ChatTypeEnum toChatTypeEnum() {
if (this == 1) {
return ChatTypeEnum.general;
} else if (this == 2) {
return ChatTypeEnum.ads;
} else if (this == 3) {
return ChatTypeEnum.requestOffer;
}
return ChatTypeEnum.general;
}
}
extension ChatTypeEnumToInt on ChatTypeEnum {
int getIdFromChatTypeEnum() {
switch (this) {
case ChatTypeEnum.general:
return 1;
case ChatTypeEnum.ads:
return 2;
case ChatTypeEnum.requestOffer:
return 3;
default:
return 1;
}
}
}
extension SubscriptionTypeEnumExt on int {
SubscriptionTypeEnum toSubscriptionTypeEnum() {
if (this == 2) {
return SubscriptionTypeEnum.upgrade;
} else if (this == 3) {
return SubscriptionTypeEnum.downgrade;
}
return SubscriptionTypeEnum.current;
}
}
extension SubscriptionTypeEnumToInt on SubscriptionTypeEnum {
int getIdSubscriptionTypeEnum() {
switch (this) {
case SubscriptionTypeEnum.current:
return 1;
case SubscriptionTypeEnum.upgrade:
return 2;
case SubscriptionTypeEnum.downgrade:
return 3;
default:
return 1;
}
}
}
extension SubscriptionTypeEnumToString on SubscriptionTypeEnum {
String getStringSubscriptionTypeEnum() {
switch (this) {
case SubscriptionTypeEnum.current:
return "Current";
case SubscriptionTypeEnum.upgrade:
return "Upgrade";
case SubscriptionTypeEnum.downgrade:
return "Downgrade";
default:
return "Current";
}
}
}
extension ShippingStatusEnumExt on int {
ShippingRequestStatusEnum toShippingStatusEnum() {
if (this == -1) {
return ShippingRequestStatusEnum.allRequests;
} else if (this == 0) {
return ShippingRequestStatusEnum.pending;
} else if (this == 1) {
return ShippingRequestStatusEnum.initiated;
} else if (this == 2) {
return ShippingRequestStatusEnum.inTransit;
} else if (this == 3) {
return ShippingRequestStatusEnum.outForDelivery;
} else if (this == 4) {
return ShippingRequestStatusEnum.delivered;
}
return ShippingRequestStatusEnum.pending;
}
}
extension ShippingStatusEnumToInt on ShippingRequestStatusEnum {
int getIdFromShippingStatusEnum() {
switch (this) {
case ShippingRequestStatusEnum.pending:
return 0;
case ShippingRequestStatusEnum.initiated:
return 1;
case ShippingRequestStatusEnum.inTransit:
return 2;
case ShippingRequestStatusEnum.outForDelivery:
return 3;
case ShippingRequestStatusEnum.delivered:
return 4;
case ShippingRequestStatusEnum.allRequests:
return -1;
default:
return -1;
}
}
}
extension SelfPickupStatusEnumExt on int {
SelfPickupRequestStatusEnum toSelfPickupStatusEnum() {
if (this == -1) {
return SelfPickupRequestStatusEnum.allRequests;
} else if (this == 0) {
return SelfPickupRequestStatusEnum.pending;
} else if (this == 1) {
return SelfPickupRequestStatusEnum.preparingToCollect;
} else if (this == 2) {
return SelfPickupRequestStatusEnum.readyToCollect;
} else if (this == 3) {
return SelfPickupRequestStatusEnum.collected;
}
return SelfPickupRequestStatusEnum.allRequests;
}
}
extension SelfPickupStatusEnumToInt on SelfPickupRequestStatusEnum {
int getIdFromSelfPickupStatusEnum() {
switch (this) {
case SelfPickupRequestStatusEnum.allRequests:
return -1;
case SelfPickupRequestStatusEnum.pending:
return 0;
case SelfPickupRequestStatusEnum.preparingToCollect:
return 1;
case SelfPickupRequestStatusEnum.readyToCollect:
return 2;
case SelfPickupRequestStatusEnum.collected:
return 3;
default:
return -1;
}
}
}
extension RequestDeliveryOptionEnumExt on int {
RequestDeliveryOptionEnum toRequestDeliveryOptionEnum() {
if (this == 1) {
return RequestDeliveryOptionEnum.delivery;
} else if (this == 2) {
return RequestDeliveryOptionEnum.selfPickup;
} else if (this == 3) {
return RequestDeliveryOptionEnum.both;
}
return RequestDeliveryOptionEnum.none;
}
}
extension RequestDeliveryOptionEnumToIntExt on RequestDeliveryOptionEnum {
int getIdRequestDeliveryOptionEnum() {
switch (this) {
case RequestDeliveryOptionEnum.delivery:
return 1;
case RequestDeliveryOptionEnum.selfPickup:
return 2;
case RequestDeliveryOptionEnum.both:
return 3;
default:
return 0;
}
}
}
extension RequestDeliveryOptionEnumTosTRINGExt on RequestDeliveryOptionEnum {
String getStringFromRequestDeliveryOptionEnum() {
switch (this) {
case RequestDeliveryOptionEnum.delivery:
return "Delivery";
case RequestDeliveryOptionEnum.selfPickup:
return "Self Pickup";
case RequestDeliveryOptionEnum.both:
return "Delivery, Self Pickup";
default:
return "Self Pickup";
}
}
}
extension CapitalizeFirstLetter on String {
String capitalizeFirstLetter() {
if (isEmpty) {
return this; // Return the string as-is if it's empty
}
return this[0].toUpperCase() + substring(1).toLowerCase();
}
}
// Extension to convert InviteType to corresponding integer
extension InviteTypeToInt on InviteTypeEnum {
int toIntFromEnum() {
switch (this) {
case InviteTypeEnum.whatsapp:
return 1;
case InviteTypeEnum.sms:
return 2;
case InviteTypeEnum.email:
return 3;
}
}
}
// Extension to convert integer to corresponding InviteType
extension IntToInviteType on int {
InviteTypeEnum get toInviteTypeFromInt {
switch (this) {
case 1:
return InviteTypeEnum.whatsapp;
case 2:
return InviteTypeEnum.sms;
case 3:
return InviteTypeEnum.email;
default:
throw ArgumentError('Invalid integer value: $this');
}
}
}
extension AdCreationStepsToInt on AdCreationStepsEnum {
int toIntFromStepsEnum() {
switch (this) {
case AdCreationStepsEnum.vehicleDetails:
return 1;
case AdCreationStepsEnum.damageParts:
return 2;
case AdCreationStepsEnum.adDuration:
return 3;
case AdCreationStepsEnum.reviewAd:
return 4;
}
}
}
extension AdCreationStepsFromInt on int {
AdCreationStepsEnum toAdCreationStepsEnumFromInt() {
switch (this) {
case 0:
return AdCreationStepsEnum.vehicleDetails;
case 1:
return AdCreationStepsEnum.vehicleDetails;
case 2:
return AdCreationStepsEnum.damageParts;
case 3:
return AdCreationStepsEnum.adDuration;
case 4:
return AdCreationStepsEnum.reviewAd;
}
return AdCreationStepsEnum.vehicleDetails;
}
}

File diff suppressed because it is too large Load Diff

@ -166,633 +166,5 @@ abstract class LocaleKeys {
static const updateBranch = 'updateBranch';
static const branches = 'branches';
static const requests = 'requests';
static const noBranchFound = 'noBranchFound';
static const onlyProviderApp = 'onlyProviderApp';
static const pickAddress = 'pickAddress';
static const pickLocation = 'pickLocation';
static const chooseCity = 'chooseCity';
static const selectAttachment = 'selectAttachment';
static const somethingWrong = 'somethingWrong';
static const documentsUploaded = 'documentsUploaded';
static const update = 'update';
static const profileCompleted = 'profileCompleted';
static const selectLocationMap = 'selectLocationMap';
static const licensesAndCertifications = 'licensesAndCertifications';
static const completeProfile1 = 'completeProfile1';
static const completeProfile2 = 'completeProfile2';
static const completeProfile3 = 'completeProfile3';
static const provider = 'provider';
static const noRequeststoShow = 'noRequeststoShow';
static const myBranches = 'myBranches';
static const mergeAppointments = 'mergeAppointments';
static const addService = 'addService';
static const selectServicestoAdd = 'selectServicestoAdd';
static const noServiceFound = 'noServiceFound';
static const selectItems = 'selectItems';
static const noItemSelectedYet = 'noItemSelectedYet';
static const totalAdditionalAmount = 'totalAdditionalAmount';
static const sar = 'sar';
static const cancel = 'cancel';
static const add = 'add';
static const itemsAddedSuccessfully = 'itemsAddedSuccessfully';
static const pleaseSelectItems = 'pleaseSelectItems';
static const totalAmount = 'totalAmount';
static const searchItems = 'searchItems';
static const addSelectedItems = 'addSelectedItems';
static const collectMoneyBefore = 'collectMoneyBefore';
static const yes = 'yes';
static const no = 'no';
static const reason = 'reason';
static const typeHere = 'typeHere';
static const pleaseSelectReason = 'pleaseSelectReason';
static const noAppointmentFound = 'noAppointmentFound';
static const slotsOverview = 'slotsOverview';
static const empty = 'empty';
static const occupied = 'occupied';
static const totalSlots = 'totalSlots';
static const selectAppointments = 'selectAppointments';
static const appointmentMergeSuccessfully = 'appointmentMergeSuccessfully';
static const updateAppointment = 'updateAppointment';
static const addNewService = 'addNewService';
static const waitingPaymentfromtheCustomer = 'waitingPaymentfromtheCustomer';
static const appointmentisCompleted = 'appointmentisCompleted';
static const workStart = 'workStart';
static const payNow = 'payNow';
static const arrived = 'arrived';
static const payLater = 'payLater';
static const complete = 'complete';
static const makeAnOffer = 'makeAnOffer';
static const provideOffer = 'provideOffer';
static const enterAmount = 'enterAmount';
static const submit = 'submit';
static const viewChat = 'viewChat';
static const requestDetail = 'requestDetail';
static const sendOffer = 'sendOffer';
static const offer = 'offer';
static const sendPriceOffer = 'sendPriceOffer';
static const comment = 'comment';
static const sendOTP = 'sendOTP';
static const noUserAddedYet = 'noUserAddedYet';
static const assignDealerUser = 'assignDealerUser';
static const createNewUser = 'createNewUser';
static const dealerUser = 'dealerUser';
static const setorEditBranchSchedule = 'setorEditBranchSchedule';
static const addServices = 'addServices';
static const noServiceAddedYet = 'noServiceAddedYet';
static const selectDays = 'selectDays';
static const addSelectedDays = 'addSelectedDays';
static const select_Services = 'select_Services';
static const searchService = 'searchService';
static const addSelectedServices = 'addSelectedServices';
static const nameofSchedule = 'nameofSchedule';
static const startingDate = 'startingDate';
static const endDate = 'endDate';
static const offDays = 'offDays';
static const shiftStartTime = 'shiftStartTime';
static const shiftEndTime = 'shiftEndTime';
static const slotsTime = 'slotsTime';
static const appointmentPerSlot = 'appointmentPerSlot';
static const create = 'create';
static const pleaseEnterValidScheduleName = 'pleaseEnterValidScheduleName';
static const pleaseSelectServices = 'pleaseSelectServices';
static const pleaseSelectStartDate = 'pleaseSelectStartDate';
static const pleaseSelectEndDate = 'pleaseSelectEndDate';
static const pleaseSelectOffDays = 'pleaseSelectOffDays';
static const pleaseSelectStartTime = 'pleaseSelectStartTime';
static const pleaseSelectEndTime = 'pleaseSelectEndTime';
static const pleaseSelectSlotTime = 'pleaseSelectSlotTime';
static const pleaseSelectAppointmentPerSlot = 'pleaseSelectAppointmentPerSlot';
static const exploreAds = 'exploreAds';
static const myAds = 'myAds';
static const noAppointmentstoShow = 'noAppointmentstoShow';
static const myRecommendedAds = 'myRecommendedAds';
static const model = 'model';
static const chooseImageSource = 'chooseImageSource';
static const camera = 'camera';
static const gallery = 'gallery';
static const imageIsDeleted = 'imageIsDeleted';
static const myRequests = 'myRequests';
static const branchDetail = 'branchDetail';
static const time = 'time';
static const openMapLocation = 'openMapLocation';
static const providerProfile = 'providerProfile';
static const servicesOffer = 'servicesOffer';
static const noServicesAvailable = 'noServicesAvailable';
static const bookAppointment = 'bookAppointment';
static const allowingHomeService = 'allowingHomeService';
static const homeServiceRange = 'homeServiceRange';
static const chargesPerKM = 'chargesPerKM';
static const providerDetails = 'providerDetails';
static const someDescriptionExperienceandtheirReputation = 'someDescriptionExperienceandtheirReputation';
static const availableforAppointment = 'availableforAppointment';
static const allowingWorkshopService = 'allowingWorkshopService';
static const serviceAmount = 'serviceAmount';
static const youNeedStoragePermissionFiles = 'youNeedStoragePermissionFiles';
static const settingDeniedPermanently = 'settingDeniedPermanently';
static const openAppSetting = 'openAppSetting';
static const adDuration = 'adDuration';
static const startDate = 'startDate';
static const contactDetails = 'contactDetails';
static const showyournumbertoBuyers = 'showyournumbertoBuyers';
static const isNumberRegisteredWhatsApp = 'isNumberRegisteredWhatsApp';
static const selectSpecialServices = 'selectSpecialServices';
static const vehicleDetails = 'vehicleDetails';
static const vehicleModel = 'vehicleModel';
static const vehicleColor = 'vehicleColor';
static const vehicleCategory = 'vehicleCategory';
static const vehicleTransmission = 'vehicleTransmission';
static const vehicleCountry = 'vehicleCountry';
static const vehicleAmount = 'vehicleAmount';
static const vehicleTitle = 'vehicleTitle';
static const financeAvailable = 'financeAvailable';
static const vehiclePictures = 'vehiclePictures';
static const vehiclePart = 'vehiclePart';
static const damagePartPictures = 'damagePartPictures';
static const vehicleDamagePart = 'vehicleDamagePart';
static const duration = 'duration';
static const specialServices = 'specialServices';
static const specialService = 'specialService';
static const adContactDetails = 'adContactDetails';
static const onWhatsAp = 'onWhatsAp';
static const reserveAdPriceInfo = 'reserveAdPriceInfo';
static const addDamagePart = 'addDamagePart';
static const vehicleType = 'vehicleType';
static const vehicleYear = 'vehicleYear';
static const vehicleCondition = 'vehicleCondition';
static const vehicleMileage = 'vehicleMileage';
static const sellerType = 'sellerType';
static const vehicleCity = 'vehicleCity';
static const vehicleVIN = 'vehicleVIN';
static const warrantyAvailable = 'warrantyAvailable';
static const years = 'years';
static const vehicleDetail = 'vehicleDetail';
static const vehicleBrand = 'vehicleBrand';
static const vehicleModelYear = 'vehicleModelYear';
static const vehicleSellerType = 'vehicleSellerType';
static const demandAmount = 'demandAmount';
static const warrantyAvailableYears = 'warrantyAvailableYears';
static const vehicleDescription = 'vehicleDescription';
static const attachImage = 'attachImage';
static const useFingerPrintFaceID = 'useFingerPrintFaceID';
static const setupTouchID = 'setupTouchID';
static const reenableTouchID = 'reenableTouchID';
static const scanFaceIDAuthenticate = 'scanFaceIDAuthenticate';
static const adDeletedSuccessfully = 'adDeletedSuccessfully';
static const yourReservationCancelled = 'yourReservationCancelled';
static const adDeactivatedSuccessfully = 'adDeactivatedSuccessfully';
static const vehicle_selectVehicleType = 'vehicle.selectVehicleType';
static const vehicle_selectVehicleModel = 'vehicle.selectVehicleModel';
static const vehicle_selectVehicleModelYear = 'vehicle.selectVehicleModelYear';
static const vehicle_selectVehicleColor = 'vehicle.selectVehicleColor';
static const vehicle_vehicleCondition = 'vehicle.vehicleCondition';
static const vehicle_vehicleCategory = 'vehicle.vehicleCategory';
static const vehicle_vehicleMileage = 'vehicle.vehicleMileage';
static const vehicle_vehicleTransmission = 'vehicle.vehicleTransmission';
static const vehicle_vehicleSellerType = 'vehicle.vehicleSellerType';
static const vehicle_selectAny = 'vehicle.selectAny';
static const vehicle_vehicleCity = 'vehicle.vehicleCity';
static const vehicle_vehiclePart = 'vehicle.vehiclePart';
static const vehicle_selectValidVehicleType = 'vehicle.selectValidVehicleType';
static const vehicle = 'vehicle';
static const selectAppointmentTimeService = 'selectAppointmentTimeService';
static const error = 'error';
static const appointmentBookedSuccessfully = 'appointmentBookedSuccessfully';
static const appointmentStatusUpdated = 'appointmentStatusUpdated';
static const paymentStatusUpdated = 'paymentStatusUpdated';
static const selectOneSubService = 'selectOneSubService';
static const chargesBreakdown = 'chargesBreakdown';
static const services = 'services';
static const homeLocation = 'homeLocation';
static const selectAppointmentTime = 'selectAppointmentTime';
static const noAppointmentAvailable = 'noAppointmentAvailable';
static const changedMind = 'changedMind';
static const veryHighPrice = 'veryHighPrice';
static const alreadySold = 'alreadySold';
static const otherVar = 'otherVar';
static const paymentSuccessful = 'paymentSuccessful';
static const paymentFailed = 'paymentFailed';
static const requestSuccessfullyCreated = 'requestSuccessfullyCreated';
static const selectValidRequestType = 'selectValidRequestType';
static const selectValidBrand = 'selectValidBrand';
static const selectValidModel = 'selectValidModel';
static const selectValidYear = 'selectValidYear';
static const selectValidCountry = 'selectValidCountry';
static const selectValidCity = 'selectValidCity';
static const addValidPrice = 'addValidPrice';
static const addValidDescription = 'addValidDescription';
static const passwordTooShort = 'passwordTooShort';
static const passwordAcceptableStrong = 'passwordAcceptableStrong';
static const passwordIsStrong = 'passwordIsStrong';
static const passwordVeryStrong = 'passwordVeryStrong';
static const selectDuration = 'selectDuration';
static const daysVar = 'daysVar';
static const adCharges = 'adCharges';
static const select = 'select';
static const deleteAdConfirmation = 'deleteAdConfirmation';
static const deleteAdConfirmationMessage = 'deleteAdConfirmationMessage';
static const mileage = 'mileage';
static const transmission = 'transmission';
static const demand = 'demand';
static const adDurationExpired = 'adDurationExpired';
static const bankDetails = 'bankDetails';
static const bankName = 'bankName';
static const iban = 'iban';
static const rejectionComments = 'rejectionComments';
static const editAd = 'editAd';
static const reserveAd = 'reserveAd';
static const reservationAmount = 'reservationAmount';
static const belowAmountPayLater = 'belowAmountPayLater';
static const carPrice = 'carPrice';
static const vatExcluded = 'vatExcluded';
static const carInsuranceService = 'carInsuranceService';
static const toBeDecided = 'toBeDecided';
static const registrationCarPlates = 'registrationCarPlates';
static const homeDeliveryService = 'homeDeliveryService';
static const specialServicechargesInsuranceDeliveryLocation = 'specialServicechargesInsuranceDeliveryLocation';
static const estimated = 'estimated';
static const servicesReservingAd = 'servicesReservingAd';
static const completeReservation = 'completeReservation';
static const contact = 'contact';
static const setDateandTime = 'setDateandTime';
static const selectOffice = 'selectOffice';
static const availableSlots = 'availableSlots';
static const bookAndPay = 'bookAndPay';
static const reservationAmounts = 'reservationAmounts';
static const tax = 'tax';
static const adsFilter = 'adsFilter';
static const searchByCity = 'searchByCity';
static const selectCity = 'selectCity';
static const searchByBrandName = 'searchByBrandName';
static const selectVehicleBrand = 'selectVehicleBrand';
static const searchByVehicleYear = 'searchByVehicleYear';
static const selectYear = 'selectYear';
static const searchByAdOwner = 'searchByAdOwner';
static const selectOwner = 'selectOwner';
static const search = 'search';
static const clearFilters = 'clearFilters';
static const book = 'book';
static const markAsSold = 'markAsSold';
static const deactivateAd = 'deactivateAd';
static const doWantDeactivateAd = 'doWantDeactivateAd';
static const stoptheBuyers = 'stoptheBuyers';
static const cancelReservation = 'cancelReservation';
static const reasonForCancellation = 'reasonForCancellation';
static const doWantCancelReservation = 'doWantCancelReservation';
static const yourAdVisibletoBuy = 'yourAdVisibletoBuy';
static const completeDeal = 'completeDeal';
static const uploadBankReceipt = 'uploadBankReceipt';
static const notesForAdmin = 'notesForAdmin';
static const extendAd = 'extendAd';
static const updateAdDetails = 'updateAdDetails';
static const durationExtendingAd = 'durationExtendingAd';
static const waitingAdminsResponse = 'waitingAdminsResponse';
static const cancelledByOwner = 'cancelledByOwner';
static const cancelledByAdmin = 'cancelledByAdmin';
static const reservationTimeOver = 'reservationTimeOver';
static const paymentVerified = 'paymentVerified';
static const rejectedFormAdmin = 'rejectedFormAdmin';
static const waitingAdminPost = 'waitingAdminPost';
static const waitingAdminsApproval = 'waitingAdminsApproval';
static const sold = 'sold';
static const noAdsShow = 'noAdsShow';
static const damagePartList = 'damagePartList';
static const searchPart = 'searchPart';
static const addSpecialService = 'addSpecialService';
static const vehicleVar = 'vehicleVar';
static const detailsVar = 'detailsVar';
static const damageVar = 'damageVar';
static const partsVar = 'partsVar';
static const additional = 'additional';
static const review = 'review';
static const adVar = 'adVar';
static const updateAd = 'updateAd';
static const createAd = 'createAd';
static const next = 'next';
static const submitAd = 'submitAd';
static const selectAdType = 'selectAdType';
static const validUntilSubscriptionExpiration = 'validUntilSubscriptionExpiration';
static const youLeftAdsGivenSubscription = 'youLeftAdsGivenSubscription';
static const updateSubscription = 'updateSubscription';
static const workInProgress = 'workInProgress';
static const visitCompleted = 'visitCompleted';
static const youWantCancelAppointment = 'youWantCancelAppointment';
static const appointmentCancelledCannotUndoAction = 'appointmentCancelledCannotUndoAction';
static const appointment = 'appointment';
static const rescheduleAppointment = 'rescheduleAppointment';
static const payforAppointment = 'payforAppointment';
static const appointmentsFilter = 'appointmentsFilter';
static const searchByProvider = 'searchByProvider';
static const selectProvider = 'selectProvider';
static const searchByBranch = 'searchByBranch';
static const searchByCategory = 'searchByCategory';
static const selectCategory = 'selectCategory';
static const searchByService = 'searchByService';
static const selectServices = 'selectServices';
static const modifyPackage = 'modifyPackage';
static const schedule = 'schedule';
static const serviceLocation = 'serviceLocation';
static const workshop = 'workshop';
static const itemsSelected = 'itemsSelected';
static const workshopFullAccessServices = 'workshopFullAccessServices';
static const changeLocationService = 'changeLocationService';
static const someDescriptionSubServices = 'someDescriptionSubServices';
static const selectServicesYouWant = 'selectServicesYouWant';
static const selectServiceType = 'selectServiceType';
static const selectDateAndTime = 'selectDateAndTime';
static const reviewAppointment = 'reviewAppointment';
static const carEngineCheck = 'carEngineCheck';
static const dateAndTime = 'dateAndTime';
static const timeLocation = 'timeLocation';
static const serviceCharges = 'serviceCharges';
static const locationCharges = 'locationCharges';
static const payableNow = 'payableNow';
static const remainingAmount = 'remainingAmount';
static const branchesFilter = 'branchesFilter';
static const searchByDistance = 'searchByDistance';
static const searchByMinimumRatings = 'searchByMinimumRatings';
static const chat = 'chat';
static const noRequestsShow = 'noRequestsShow';
static const typeMessageHere = 'typeMessageHere';
static const reject = 'reject';
static const newOfferRequired = 'newOfferRequired';
static const offerHasBeenAccepted = 'offerHasBeenAccepted';
static const offerHasBeenRejected = 'offerHasBeenRejected';
static const offerHasBeenCancelled = 'offerHasBeenCancelled';
static const paymentMethod = 'paymentMethod';
static const selectPaymentMethod = 'selectPaymentMethod';
static const password = 'password';
static const customerName = 'customerName';
static const createRequest = 'createRequest';
static const requestType = 'requestType';
static const brand = 'brand';
static const year = 'year';
static const price = 'price';
static const shippingDelivery = 'shippingDelivery';
static const offers = 'offers';
static const noOffersShow = 'noOffersShow';
static const allDocumentMandatoryDealershipProvider = 'allDocumentMandatoryDealershipProvider';
static const documentsUploadedSuccessfully = 'documentsUploadedSuccessfully';
static const help = 'help';
static const faqs = 'faqs';
static const contactUs = 'contactUs';
static const termPrivacy = 'termPrivacy';
static const inviteFriends = 'inviteFriends';
static const more = 'more';
static const language = 'language';
static const mySubscription = 'mySubscription';
static const subscriptions = 'subscriptions';
static const defineLicenses = 'defineLicenses';
static const logOut = 'logOut';
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';
static const noUpcomingAppointments = 'noUpcomingAppointments';
static const addNewAppointment = 'addNewAppointment';
static const myNearbyBranches = 'myNearbyBranches';
static const myRecentBranches = 'myRecentBranches';
static const favoriteList = 'favoriteList';
static const noReviewsBranch = 'noReviewsBranch';
static const readLess = 'readLess';
static const readMoreReviews = 'readMoreReviews';
static const noProvidersInFav = 'noProvidersInFav';
static const providerHasNoBranches = 'providerHasNoBranches';
static const totalBranches = 'totalBranches';
static const memberSince = 'memberSince';
static const reserved = 'reserved';
static const delete = 'delete';
static const deleteBranchConfirmation = 'deleteBranchConfirmation';
static const deleteBranchConfirmationMessage = 'deleteBranchConfirmationMessage';
static const reviewAndPayment = 'reviewAndPayment';
static const awaitingPaymentFromCustomer = 'awaitingPaymentFromCustomer';
static const awaitingResponseFromProvider = 'awaitingResponseFromProvider';
static const offerNoLongerAvailable = 'offerNoLongerAvailable';
static const doYouWantToCompleteThisDeal = 'doYouWantToCompleteThisDeal';
static const customerCompletingDealMeansThat = 'customerCompletingDealMeansThat';
static const providerCompletingDealMeansThat = 'providerCompletingDealMeansThat';
static const offerSummary = 'offerSummary';
static const personalInformation = 'personalInformation';
static const name = 'name';
static const phone = 'phone';
static const serviceInformation = 'serviceInformation';
static const locationInformation = 'locationInformation';
static const additionalAddressDetails = 'additionalAddressDetails';
static const serviceName = 'serviceName';
static const serviceCategory = 'serviceCategory';
static const offerPrice = 'offerPrice';
static const totalPrice = 'totalPrice';
static const providerName = 'providerName';
static const createdOn = 'createdOn';
static const manufacturedBy = 'manufacturedBy';
static const manufacturedOn = 'manufacturedOn';
static const shipping = 'shipping';
static const delivery = 'delivery';
static const selectDeliveryType = 'selectDeliveryType';
static const shippingManagementInstruction = 'shippingManagementInstruction';
static const withdrawOffer = 'withdrawOffer';
static const manufacturer = 'manufacturer';
static const priceRange = 'priceRange';
static const cancelOffer = 'cancelOffer';
static const pleaseSpecify = 'pleaseSpecify';
static const customerNotResponding = 'customerNotResponding';
static const cancelRequestPrompt = 'cancelRequestPrompt';
static const requestPermanentlyCancelled = 'requestPermanentlyCancelled';
static const awaitingResponseFromCustomer = 'awaitingResponseFromCustomer';
static const acknowledgePaymentToMowater = 'acknowledgePaymentToMowater';
static const requestsFilter = 'requestsFilter';
static const searchByCondition = 'searchByCondition';
static const selectCondition = 'selectCondition';
static const searchByRequestType = 'searchByRequestType';
static const searchByCustomerName = 'searchByCustomerName';
static const searchByProviderName = 'searchByProviderName';
static const searchByRequestStatus = 'searchByRequestStatus';
static const selectRequestType = 'selectRequestType';
static const selectRequestStatus = 'selectRequestStatus';
static const searchByRequestedDate = 'searchByRequestedDate';
static const selectDate = 'selectDate';
static const searchByVehicleModel = 'searchByVehicleModel';
static const customerCarePrompt = 'customerCarePrompt';
static const callNow = 'callNow';
static const condition = 'condition';
static const servicesNotAvailableHomeLocation = 'servicesNotAvailableHomeLocation';
static const additionalChargesNotice = 'additionalChargesNotice';
static const selectServiceLocation = 'selectServiceLocation';
static const apptOn = 'apptOn';
static const merged = 'merged';
static const date = 'date';
static const selectAll = 'selectAll';
static const unselectAll = 'unselectAll';
static const copySelectedServices = 'copySelectedServices';
static const pictures = 'pictures';
static const noChatMessage = 'noChatMessage';
static const shippingManagement = 'shippingManagement';
static const appointmentCancelled = 'appointmentCancelled';
static const appointmentsPerSlot = 'appointmentsPerSlot';
static const createSchedule = 'createSchedule';
static const addItems = 'addItems';
static const itemName = 'itemName';
static const itemDescription = 'itemDescription';
static const itemPrice = 'itemPrice';
static const bookAppointmentForServices = 'bookAppointmentForServices';
static const showServiceAvailability = 'showServiceAvailability';
static const bookAppointmentAtLocation = 'bookAppointmentAtLocation';
static const appointmentBookingOption = 'appointmentBookingOption';
static const workshopAvailabilityOption = 'workshopAvailabilityOption';
static const appointmentLocationOption = 'appointmentLocationOption';
static const deleteScheduleConfirmation = 'deleteScheduleConfirmation';
static const deleteScheduleAdConfirmationMessage = 'deleteScheduleAdConfirmationMessage';
static const branchSchedules = 'branchSchedules';
static const noSchedulesFound = 'noSchedulesFound';
static const inviteFriendsBySMS = 'inviteFriendsBySMS';
static const inviteFriendsByWhatsApp = 'inviteFriendsByWhatsApp';
static const inviteFriendsByEmail = 'inviteFriendsByEmail';
static const noFAQsToShow = 'noFAQsToShow';
static const appInfo = 'appInfo';
static const users = 'users';
static const adsRemaining = 'adsRemaining';
static const attachPDF = 'attachPDF';
static const noItemsToShow = 'noItemsToShow';
static const serviceItem = 'serviceItem';
static const createdBy = 'createdBy';
static const createGroupServices = 'createGroupServices';
static const logoutConfirmation = 'logoutConfirmation';
static const logoutConfirmationMessage = 'logoutConfirmationMessage';
static const addToFavoritesOn = 'addToFavoritesOn';
static const subscriptionDate = 'subscriptionDate';
static const expiresOn = 'expiresOn';
static const expired = 'expired';
static const upgradeBranches = 'upgradeBranches';
static const upgradeAds = 'upgradeAds';
static const upgradeSubUsers = 'upgradeSubUsers';
static const explore = 'explore';
static const manageRequests = 'manageRequests';
static const serviceNotAvailableAtHomeLocation = 'serviceNotAvailableAtHomeLocation';
static const wantToRescheduleAppointment = 'wantToRescheduleAppointment';
static const noNeedForService = 'noNeedForService';
static const testTheService = 'testTheService';
static const companyLocation = 'companyLocation';
static const customerLocation = 'customerLocation';
static const deliveryAvailable = 'deliveryAvailable';
static const viewed = 'viewed';
static const updateUserDetails = 'updateUserDetails';
static const enterNewFirstName = 'enterNewFirstName';
static const enterNewLastName = 'enterNewLastName';
static const userDetailsUpdated = 'userDetailsUpdated';
static const itemNoLongerAvailable = 'itemNoLongerAvailable';
static const reactivateAd = 'reactivateAd';
static const dealOutsideApp = 'dealOutsideApp';
static const noAgreementCustomer = 'noAgreementCustomer';
static const dealNotCompleted = 'dealNotCompleted';
static const changedDesireToSell = 'changedDesireToSell';
static const vehicleDealOutsideApp = 'vehicleDealOutsideApp';
static const markAdAsSoldDesc = 'markAdAsSoldDesc';
static const ownerInformation = 'ownerInformation';
static const acceptedRequests = 'acceptedRequests';
static const specialRequestChat = 'specialRequestChat';
static const companyName = 'companyName';
static const noAvailableItems = 'noAvailableItems';
static const serviceDeliveryType = 'serviceDeliveryType';
static const noImagesToShow = 'noImagesToShow';
static const updateGroupServices = 'updateGroupServices';
static const addCommentsHere = 'addCommentsHere';
static const waitForBranchVerification = 'waitForBranchVerification';
static const reportComplaint = 'reportComplaint';
static const descriptionCannotBeEmpty = 'descriptionCannotBeEmpty';
static const adMarkedAsSold = 'adMarkedAsSold';
static const chargesAndServiceRangeGreaterThanZero = 'chargesAndServiceRangeGreaterThanZero';
static const cannotSelectAllDaysAsOff = 'cannotSelectAllDaysAsOff';
static const endDateAfterStartDate = 'endDateAfterStartDate';
static const pleaseEnterStartDateFirst = 'pleaseEnterStartDateFirst';
static const endTimeAfterStartTime = 'endTimeAfterStartTime';
static const pickedLocationNotice = 'pickedLocationNotice';
static const serviceNotProvided = 'serviceNotProvided';
static const pleaseSelectService = 'pleaseSelectService';
static const operationalIssue = 'operationalIssue';
static const materialIssue = 'materialIssue';
static const selectReasonBeforeCancel = 'selectReasonBeforeCancel';
static const blockedByAdmin = 'blockedByAdmin';
static const active = 'active';
static const paymentType = 'paymentType';
static const searchByCreatedDate = 'searchByCreatedDate';
static const cityNameMandatory = 'cityNameMandatory';
static const genderMandatory = 'genderMandatory';
static const updateCity = 'updateCity';
static const userGender = 'userGender';
static const userMale = 'userMale';
static const userFemale = 'userFemale';
static const maxFileSelection = 'maxFileSelection';
static const maxFileSize = 'maxFileSize';
static const onlyJPGandPNG = 'onlyJPGandPNG';
static const expiryDate = 'expiryDate';
static const dealCompleted = 'dealCompleted';
static const theDealNotCompleted = 'theDealNotCompleted';
static const cancelRequest = 'cancelRequest';
static const highPrice = 'highPrice';
static const offerNotMatched = 'offerNotMatched';
static const offerRejected = 'offerRejected';
static const offerAccepted = 'offerAccepted';
static const you = 'you';
static const youCannotDeactivateThisServiceRightNow = 'youCannotDeactivateThisServiceRightNow';
static const done = 'done';
static const notice = 'notice';
static const serviceDeactivated = 'serviceDeactivated';
static const totalNumberOfServices = 'totalNumberOfServices';
static const noAvailableOfficesInCity = 'noAvailableOfficesInCity';
static const searchByItem = 'searchByItem';
static const selectBranchToCopyServices = 'selectBranchToCopyServices';
static const tapToSeeItems = 'tapToSeeItems';
static const tapToSelect = 'tapToSelect';
static const noteCopyItemsExplanation = 'noteCopyItemsExplanation';
static const requestCreatedOn = 'requestCreatedOn';
static const online = 'online';
static const deliveryStatus = 'deliveryStatus';
static const markAsCompleted = 'markAsCompleted';
static const searchByServiceDelivery = 'searchByServiceDelivery';
static const searchByMobileNumber = 'searchByMobileNumber';
static const enterMobileNumber = 'enterMobileNumber';
static const enterCustomerName = 'enterCustomerName';
static const tapToView = 'tapToView';
static const noServicesAvailableToCopy = 'noServicesAvailableToCopy';
static const copySelectedItems = 'copySelectedItems';
static const noOfInvites = 'noOfInvites';
static const noSpecialServicesAvailable = 'noSpecialServicesAvailable';
static const customService = 'customService';
static const selectServiceDetails = 'selectServiceDetails';
static const addServiceDetails = 'addServiceDetails';
static const companyNameMandatory = 'companyNameMandatory';
static const connectionProblem = 'connectionProblem';
static const pleaseCheckConnection = 'pleaseCheckConnection';
static const ok = 'ok';
static const continueAsGuest = 'continueAsGuest';
static const loginToViewAppointments = 'loginToViewAppointments';
static const itemType = 'itemType';
static const upgradeSubscription = 'upgradeSubscription';
static const searchByAdID = 'searchByAdID';
static const enterAdID = 'enterAdID';
static const searchByDemandPrice = 'searchByDemandPrice';
static const enterStartPrice = 'enterStartPrice';
static const enterEndPrice = 'enterEndPrice';
static const searchByVehicleType = 'searchByVehicleType';
static const selectVehicleType = 'selectVehicleType';
static const specialRequestsChats = 'specialRequestsChats';
static const selectDeliveryOption = 'selectDeliveryOption';
static const deliveryOptions = 'deliveryOptions';
static const selfPickup = 'selfPickup';
static const updateYourLocationInfo = 'updateYourLocationInfo';
static const initiateSelfPickup = 'initiateSelfPickup';
static const selfPickupStatus = 'selfPickupStatus';
static const myDraftAds = 'myDraftAds';
static const scheduleDeletedSuccessfully = 'scheduleDeletedSuccessfully';
static const addValidAddress = 'addValidAddress';
}

@ -1,13 +1,134 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/theme/app_theme.dart';
import 'package:logger/logger.dart';
import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart';
import 'package:sizer/sizer.dart';
//testing push
final navigatorKey = GlobalKey<NavigatorState>();
Logger logger = Logger(
printer: PrettyPrinter(
lineLength: 0,
),
);
Logger logger = Logger(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;
}
}
bool disableThingsForQA = true;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// Language Tile in Settings
await EasyLocalization.ensureInitialized();
// AppState().setPostParamsInitConfig();
HttpOverrides.global = MyHttpOverrides();
runApp(
EasyLocalization(
supportedLocales: const <Locale>[
Locale('en', 'US'),
Locale('ar', 'SA'),
],
path: 'resources',
// assetLoader: const CodegenLoader(),
child: MultiProvider(
providers: const <SingleChildWidget>[
// ChangeNotifierProvider<LoginProviderModel>(
// 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
// flutter pub run easy_localization:generate -S resources -f keys -O lib/generated -o locale_keys.g.dart
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<LocalizationsDelegate<dynamic>> 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 MyApp extends StatelessWidget {
// MyApp({super.key}) {
// AppDependencies.addDependencies();
// AppState = Injector.appInstance.get<AppState>();
// // AppState.setPostParamsInitConfig();
// }
//
// @override
// Widget build(BuildContext context) {
// return LayoutBuilder(builder: (context, constraints) {
// return Sizer(
// builder: (
// BuildContext context,
// Orientation orientation,
// DeviceType deviceType,
// ) {
// SizeConfig().init(constraints, orientation);
// List<LocalizationsDelegate<dynamic>> delegates = context.localizationDelegates;
// // AppState().setPostParamsModel(
// // PostParamsModel(
// // languageID: EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2,
// // ),
// // );
// return MaterialApp(
// // key: navigatorKey,
// navigatorKey: navigatorKey,
// theme: AppTheme.getTheme(
// EasyLocalization.of(context)?.locale.languageCode == "ar",
// ),
// debugShowCheckedModeBanner: false,
// localizationsDelegates: delegates,
// supportedLocales: context.supportedLocales,
// locale: context.locale,
// initialRoute: AppRoutes.initialPage,
// routes: AppRoutes.routes,
// );
// },
// );
// });
// }
// }

@ -2,7 +2,6 @@ import 'dart:math';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/advertisment_models/special_service_model.dart';
import 'package:mc_common_app/models/chat_models/chat_message_model.dart';
import 'package:mc_common_app/utils/enums.dart';
class AdDetailsModel {
@ -32,14 +31,11 @@ class AdDetailsModel {
String? qrCodePath;
bool? isCustomerAcknowledged;
int? createdByRole;
AdCreationStepsEnum? adCreationStepsEnum;
int? totalViews;
String? createdOn;
double? priceExcludingDiscount;
double? reservePrice;
bool? isMCHandled;
bool? showContactDetail;
bool? isOnWhatsApp;
String? modifiedOn;
AdPostStatus? adPostStatus;
AdReserveStatus? adReserveStatus;
@ -47,63 +43,47 @@ class AdDetailsModel {
bool? isReservedByMe;
String? phoneNo;
String? whatsAppNo;
String? adOwnerName;
String? adOwnerEmail;
AdOwnerDetails? adOwnerDetails;
String? warrantyYears;
CreatedByRoleEnum? createdByRoleEnum;
List<ChatMessageModel>? adMessages;
int? totalItemsCount;
AdDetailsModel({
this.id,
this.startdate,
this.enddate,
this.vehicle,
this.specialservice,
// this.reserved,
this.statusID,
this.statuslabel,
this.adsDurationPrice,
this.adsDurationDiscount,
this.adsDurationDiscountPrice,
this.comment,
this.active,
this.isPaid,
this.isSubscription,
this.isVerified,
this.netPrice,
this.specialServiceTotalPrice,
this.taxPrice,
this.totalPrice,
this.userID,
this.vehiclePostingID,
this.qrCodePath,
this.isCustomerAcknowledged,
this.createdByRole,
this.adCreationStepsEnum,
this.totalViews,
this.createdOn,
this.priceExcludingDiscount,
this.reservePrice,
this.isMCHandled,
this.showContactDetail,
this.isOnWhatsApp,
this.adPostStatus,
this.adReserveStatus,
this.isMyAd,
this.isReservedByMe,
this.phoneNo,
this.whatsAppNo,
this.adOwnerName,
this.adOwnerEmail,
this.adOwnerDetails,
this.warrantyYears,
this.createdByRoleEnum,
this.modifiedOn,
this.adMessages,
this.totalItemsCount,
});
AdDetailsModel(
{this.id,
this.startdate,
this.enddate,
this.vehicle,
this.specialservice,
// this.reserved,
this.statusID,
this.statuslabel,
this.adsDurationPrice,
this.adsDurationDiscount,
this.adsDurationDiscountPrice,
this.comment,
this.active,
this.isPaid,
this.isSubscription,
this.isVerified,
this.netPrice,
this.specialServiceTotalPrice,
this.taxPrice,
this.totalPrice,
this.userID,
this.vehiclePostingID,
this.qrCodePath,
this.isCustomerAcknowledged,
this.createdByRole,
this.totalViews,
this.createdOn,
this.priceExcludingDiscount,
this.reservePrice,
this.isMCHandled,
this.adPostStatus,
this.adReserveStatus,
this.isMyAd,
this.isReservedByMe,
this.phoneNo,
this.whatsAppNo,
this.createdByRoleEnum,
this.modifiedOn});
int getRandomValue({required int min, required int max}) {
Random random = Random();
@ -111,7 +91,7 @@ class AdDetailsModel {
return randomNumber;
}
AdDetailsModel.fromJson(Map<String, dynamic> json, bool isMyAds, int totalItems) {
AdDetailsModel.fromJson(Map<String, dynamic> json, bool isMyAds) {
id = json['id'];
startdate = json['startdate'];
enddate = json['enddate'];
@ -137,31 +117,26 @@ class AdDetailsModel {
taxPrice = json['taxPrice'];
totalPrice = json['totalPrice'];
userID = json['userID'];
vehiclePostingID = (json['vehiclePostingID'] == null || json['vehiclePostingID'] == 0) ? json['id'] : 0;
vehiclePostingID = json['vehiclePostingID'];
qrCodePath = json['qrCodePath'];
isCustomerAcknowledged = json['isCustomerAcknowledged'];
createdByRole = json['createdByRole'];
adCreationStepsEnum = json['stepNo'] != null ? (json['stepNo'] as int).toAdCreationStepsEnumFromInt() : AdCreationStepsEnum.vehicleDetails;
totalViews = json['totalViews'];
createdOn = json['createdOn'];
priceExcludingDiscount = json['priceExcludingDiscount'];
reservePrice = json['reservePrice'];
isMCHandled = json['isMCHandled'];
showContactDetail = json['showContactDetail'];
isOnWhatsApp = json['isOnWhatsApp'];
modifiedOn = json['modifiedOn'];
phoneNo = json['vehicle'] != null ? (json['vehicle']['mobileNo'] ?? "") : "";
whatsAppNo = json['vehicle'] != null ? (json['vehicle']['whatsAppNo'] ?? "") : "";
warrantyYears = json['vehicle'] != null ? (json['vehicle']['warantyYears'] != null ? ((json['vehicle']['warantyYears']).toString()) : "") : "";
adOwnerName = json['vehicle'] != null ? (json['vehicle']['adOwnerName'] ?? "") : "";
adOwnerEmail = json['vehicle'] != null ? (json['vehicle']['adOwnerEmail'] ?? "") : "";
adOwnerDetails = (json['vehicle'] != null && json['vehicle']['aDsUser'] != null) ? (AdOwnerDetails.fromJson(json['vehicle']['aDsUser'])) : null;
adPostStatus = ((json['statusID'] ?? 1) as int).toAdPostEnum();
whatsAppNo = json['phoneNo'];
modifiedOn = json['whatsAppNo'];
// adPostStatus = AdPostStatus.expired;
adPostStatus = (json['statusID'] as int).toAdPostEnum();
//TODO: THIS ID SHOULD BE UPDATED!
adReserveStatus = AdReserveStatus.defaultStatus;
// createdByRoleEnum = CreatedByRoleEnum.admin;
createdByRoleEnum = (json['createdByRole'] as int).toCreatedByRoleEnum();
isMyAd = isMyAds;
isReservedByMe = false;
totalItemsCount = totalItems;
}
}
@ -173,7 +148,7 @@ class Vehicle {
bool? isActive;
bool? isFinanceAvailable;
int? status;
String? statusText;
String? statustext;
Category? category;
Category? color;
Condition? condition;
@ -182,8 +157,8 @@ class Vehicle {
ModelYear? modelyear;
Condition? sellertype;
Condition? transmission;
AdsDuration? duration;
List<GenericImageModel>? image;
Duration? duration;
List<AdImage>? image;
List<DamageReport>? damagereport;
String? vehicleDescription;
String? vehicleTitle;
@ -200,7 +175,7 @@ class Vehicle {
this.isActive,
this.isFinanceAvailable,
this.status,
this.statusText,
this.statustext,
this.category,
this.color,
this.condition,
@ -227,7 +202,7 @@ class Vehicle {
isActive = json['isActive'];
isFinanceAvailable = json['isFinanceAvailable'];
status = json['status'];
statusText = json['statustext'];
statustext = json['statustext'];
category = json['category'] != null ? Category.fromJson(json['category']) : null;
color = json['color'] != null ? Category.fromJson(json['color']) : null;
condition = json['condition'] != null ? Condition.fromJson(json['condition']) : null;
@ -236,11 +211,11 @@ class Vehicle {
modelyear = json['modelyear'] != null ? ModelYear.fromJson(json['modelyear']) : null;
sellertype = json['sellertype'] != null ? Condition.fromJson(json['sellertype']) : null;
transmission = json['transmission'] != null ? Condition.fromJson(json['transmission']) : null;
duration = json['duration'] != null ? AdsDuration.fromJson(json['duration']) : null;
duration = json['duration'] != null ? Duration.fromJson(json['duration']) : null;
if (json['image'] != null) {
image = <GenericImageModel>[];
image = <AdImage>[];
json['image'].forEach((v) {
image!.add(GenericImageModel.fromJson(v));
image!.add(AdImage.fromJson(v));
});
}
if (json['damagereport'] != null) {
@ -285,15 +260,13 @@ class Category {
class Condition {
int? id;
int? vehicleBrandID;
String? label;
String? labelN;
Condition({this.id, this.label, this.labelN, this.vehicleBrandID});
Condition({this.id, this.label, this.labelN});
Condition.fromJson(Map<String, dynamic> json) {
id = json['id'];
vehicleBrandID = json['vehicleBrandID'];
label = json['label'];
labelN = json['labelN'];
}
@ -351,16 +324,16 @@ class ModelYear {
}
}
class AdsDuration {
class Duration {
int? id;
String? label;
int? days;
double? price;
ModelYear? country;
AdsDuration({this.id, this.label, this.days, this.price, this.country});
Duration({this.id, this.label, this.days, this.price, this.country});
AdsDuration.fromJson(Map<String, dynamic> json) {
Duration.fromJson(Map<String, dynamic> json) {
id = json['id'];
label = json['label'];
days = json['days'];
@ -381,15 +354,15 @@ class AdsDuration {
}
}
class GenericImageModel {
class AdImage {
int? id;
String? imageName;
String? imageUrl;
bool? isActive;
GenericImageModel({this.id, this.imageName, this.imageUrl, this.isActive});
AdImage({this.id, this.imageName, this.imageUrl, this.isActive});
GenericImageModel.fromJson(Map<String, dynamic> json) {
AdImage.fromJson(Map<String, dynamic> json) {
id = json['id'];
imageName = json['imageName'];
imageUrl = json['imageUrl'];
@ -423,7 +396,6 @@ class DamageReport {
isActive = json['isActive'];
vehicleDamagePartID = json['vehicleDamagePartID'];
partName = json['partName'];
comment = json['comment'];
}
Map<String, dynamic> toJson() {
@ -437,28 +409,3 @@ class DamageReport {
return data;
}
}
class AdOwnerDetails {
String? name;
String? email;
String? mobileNo;
String? profilePic;
AdOwnerDetails({this.name, this.email, this.mobileNo, this.profilePic});
AdOwnerDetails.fromJson(Map<String, dynamic> json) {
name = json['name'];
email = json['email'];
mobileNo = json['mobileNo'];
profilePic = json['profilePic'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['name'] = name;
data['email'] = email;
data['mobileNo'] = mobileNo;
data['profilePic'] = profilePic;
return data;
}
}

@ -28,17 +28,3 @@ class AdsBankDetailsModel {
return data;
}
}
class AdExtensionOrderResponseModel {
final int adsID;
final bool isPaymentRequired;
AdExtensionOrderResponseModel({required this.adsID, required this.isPaymentRequired});
factory AdExtensionOrderResponseModel.fromJson(Map<String, dynamic> json) {
return AdExtensionOrderResponseModel(
adsID: json['adsID'] as int,
isPaymentRequired: json['isPaymentRequired'] as bool,
);
}
}

@ -6,28 +6,15 @@ class AdsDurationModel {
int? countryID;
bool? isActive;
String? countryName;
String? currency;
double? discountValue;
double? discountPercent;
double? priceAfterDiscount;
int? roleID;
bool? isSelected;
AdsDurationModel({
this.id,
this.name,
this.days,
this.price,
this.countryID,
this.isActive,
this.countryName,
this.currency,
this.discountValue,
this.discountPercent,
this.priceAfterDiscount,
this.roleID,
this.isSelected,
});
AdsDurationModel(
{this.id,
this.name,
this.days,
this.price,
this.countryID,
this.isActive,
this.countryName});
AdsDurationModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
@ -37,12 +24,6 @@ class AdsDurationModel {
countryID = json['countryID'];
isActive = json['isActive'];
countryName = json['countryName'];
currency = json['currency'];
discountValue = json['discountValue'];
discountPercent = json['discountPercent'];
priceAfterDiscount = json['priceAfterDiscount'];
roleID = json['roleID'];
isSelected = false;
}
Map<String, dynamic> toJson() {
@ -54,11 +35,6 @@ class AdsDurationModel {
data['countryID'] = countryID;
data['isActive'] = isActive;
data['countryName'] = countryName;
data['currency'] = currency;
data['discountValue'] = discountValue;
data['discountPercent'] = discountPercent;
data['priceAfterDiscount'] = priceAfterDiscount;
data['roleID'] = roleID;
return data;
}
}

@ -1,7 +0,0 @@
class PdfReceiptModel {
int? id;
String? pdfName;
String? pdfString;
PdfReceiptModel({this.id, this.pdfName, this.pdfString});
}

@ -3,30 +3,18 @@ class MyReservedAdsRespModel {
int? adsID;
int? customerID;
int? paymentStatus;
int? adsReserveStatus;
int? reservationTimeID;
double? reservationBasePrice;
double? refundAmount;
String? refundDate;
MyReservedAdsRespModel({
this.id,
this.adsID,
this.customerID,
this.paymentStatus,
this.adsReserveStatus,
this.reservationTimeID,
this.reservationBasePrice,
this.refundAmount,
this.refundDate,
});
MyReservedAdsRespModel({this.id, this.adsID, this.customerID, this.paymentStatus, this.reservationTimeID, this.reservationBasePrice, this.refundAmount, this.refundDate});
MyReservedAdsRespModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
adsID = json['adsID'];
customerID = json['customerID'];
paymentStatus = json['paymentStatus'];
paymentStatus = json['adsReserveStatus'];
reservationTimeID = json['reservationTimeID'];
reservationBasePrice = json['reservationBasePrice'];
refundAmount = json['refundAmount'];
@ -39,7 +27,6 @@ class MyReservedAdsRespModel {
data['adsID'] = adsID;
data['customerID'] = customerID;
data['paymentStatus'] = paymentStatus;
data['adsReserveStatus'] = adsReserveStatus;
data['reservationTimeID'] = reservationTimeID;
data['reservationBasePrice'] = reservationBasePrice;
data['refundAmount'] = refundAmount;

@ -81,7 +81,7 @@ class Office {
String? officeAreaName;
String? officeAreaNameN;
int? cityID;
CitySSModel? city;
String? city;
int? specialServiceID;
Office({this.id, this.officeAreaName, this.officeAreaNameN, this.cityID, this.city, this.specialServiceID});
@ -91,41 +91,11 @@ class Office {
officeAreaName = json['officeAreaName'];
officeAreaNameN = json['officeAreaNameN'];
cityID = json['cityID'];
if (json['city'] != null) {
city = json['city'] != null ? CitySSModel.fromJson(json['city']) : null;
}
city = json['city'];
specialServiceID = json['specialServiceID'];
}
}
class CitySSModel {
int? id;
String? cityName;
String? cityNameN;
int? countryID;
String? country;
bool? isActive;
int? createdBy;
String? createdOn;
String? modifiedBy;
String? modifiedOn;
CitySSModel({this.id, this.cityName, this.cityNameN, this.countryID, this.country, this.isActive, this.createdBy, this.createdOn, this.modifiedBy, this.modifiedOn});
CitySSModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
cityName = json['cityName'];
cityNameN = json['cityNameN'];
countryID = json['countryID'];
country = json['country'];
isActive = json['isActive'];
createdBy = json['createdBy'];
createdOn = json['createdOn'];
modifiedBy = json['modifiedBy'];
modifiedOn = json['modifiedOn'];
}
}
class SpecialServiceModelForAds {
int? adsID;
int? specialServiceID;
@ -156,6 +126,7 @@ class SpecialServiceModelForAds {
appointmentStatusEnum = (json['appointmentStatus'] as int).toAppointmentStatusEnum();
appointmentDate = json['appointmentDate'];
appointmentStatusId = json['appointmentStatus'];
}
@override

@ -1,5 +1,5 @@
import 'package:mc_common_app/models/appointments_models/service_schedule_model.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/models/general/widgets_models.dart';
class SSCarCheckScheduleModel {
int? serviceProviderID;

@ -1,6 +1,6 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/appointments_models/service_schedule_model.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/models/general/widgets_models.dart';
class SSPhotoOfficeScheduleModel {
int? photoOfficeID;
@ -12,7 +12,7 @@ class SSPhotoOfficeScheduleModel {
String? areaName;
String? latitude;
String? longitude;
double? distanceKM;
int? distanceKM;
int? totalItemsCount;
List<PhotoOfficeScheduleSlots>? photoOfficeScheduleSlots;
List<CustomTimeDateSlotModel>? customTimeDateSlotList;

@ -33,6 +33,7 @@ class VehicleDetailsModel {
});
VehicleDetailsModel.fromJson(Map<String, dynamic> json) {
log("jsonJee: $json");
vehicleBrands = List.generate((json['vehiclebrands']['data']).length, (index) => VehicleBrandsModel.fromJson(json['vehiclebrands']['data'][index]));
vehicleCategories = List.generate((json['vehiclecategories']['data']).length, (index) => VehicleCategoryModel.fromJson(json['vehiclecategories']['data'][index]));
vehicleColors = List.generate((json['vehiclecolors']['data']).length, (index) => VehicleColorModel.fromJson(json['vehiclecolors']['data'][index]));
@ -59,7 +60,6 @@ class VehicleTypeModel {
String? vehicleTypeNameN;
bool? isActive;
VehicleType? vehicleTypeEnum;
bool? isSelected;
VehicleTypeModel({
this.id,
@ -67,7 +67,6 @@ class VehicleTypeModel {
this.vehicleTypeNameN,
this.isActive,
this.vehicleTypeEnum = VehicleType.car,
this.isSelected,
});
VehicleTypeModel.fromJson(Map<String, dynamic> json) {
@ -76,7 +75,6 @@ class VehicleTypeModel {
vehicleTypeNameN = json['vehicleTypeNameN'];
isActive = json['isActive'];
vehicleTypeEnum = (json['id'] as int).toVehicleTypeEnum();
isSelected = false;
}
Map<String, dynamic> toJson() {
@ -451,11 +449,9 @@ class VehicleBrandsModel {
String? vehicleTypeVal;
String? vehicleBrandDescription;
String? vehicleBrandDescriptionN;
String? imageUrl;
bool? isActive;
bool? isSelected;
VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive, this.isSelected, this.imageUrl});
VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive});
VehicleBrandsModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
@ -464,8 +460,6 @@ class VehicleBrandsModel {
vehicleBrandDescription = json['vehicleBrand_Description'];
vehicleBrandDescriptionN = json['vehicleBrand_DescriptionN'];
isActive = json['isActive'];
imageUrl = json['imageUrl'];
isSelected = false;
}
Map<String, dynamic> toJson() {
@ -475,7 +469,6 @@ class VehicleBrandsModel {
data['vehicleTypeVal'] = vehicleTypeVal;
data['vehicleBrand_Description'] = vehicleBrandDescription;
data['vehicleBrand_DescriptionN'] = vehicleBrandDescriptionN;
data['imageUrl'] = imageUrl;
data['isActive'] = isActive;
return data;
}

@ -1,45 +0,0 @@
class AppointmentBasicDetailsModel {
int? serviceSlotID;
String? slotDate;
String? startTime;
String? endTime;
int? appointmentStatusID;
String? appointmentStatusText;
int? serviceProviderID;
int? customerID;
AppointmentBasicDetailsModel({
this.serviceSlotID,
this.slotDate,
this.startTime,
this.endTime,
this.appointmentStatusID,
this.appointmentStatusText,
this.serviceProviderID,
this.customerID,
});
AppointmentBasicDetailsModel.fromJson(Map<String, dynamic> json) {
serviceSlotID = json['serviceSlotID'];
slotDate = json['slotDate'];
startTime = json['startTime'];
endTime = json['endTime'];
appointmentStatusID = json['appointmentStatusID'];
appointmentStatusText = json['appointmentStatusText'];
serviceProviderID = json['serviceProviderID'];
customerID = json['customerID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['serviceSlotID'] = serviceSlotID;
data['slotDate'] = slotDate;
data['startTime'] = startTime;
data['endTime'] = endTime;
data['appointmentStatusID'] = appointmentStatusID;
data['appointmentStatusText'] = appointmentStatusText;
data['serviceProviderID'] = serviceProviderID;
data['customerID'] = customerID;
return data;
}
}

@ -1,5 +1,5 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/services_models/service_model.dart';
import 'package:mc_common_app/models/services/service_model.dart';
import 'package:mc_common_app/utils/enums.dart';
class AppointmentListModel {
@ -14,68 +14,32 @@ class AppointmentListModel {
int? paymentStatus;
String? paymentStatusText;
String? customerName;
String? customerMobileNum;
int? appointmentType;
AppointmentTypeEnum? appointmentTypeEnum;
String? providerName;
String? duration;
String? appointmentDate;
String? appointmentCreatedOn;
String? paymentType;
String? appointmentAddress;
String? appointmentLatitude;
String? appointmentLongitude;
String? branchName;
int? branchId;
int? servicePaymentStatus;
bool? isPaymentRequiredAtBooking;
double? totalAmount;
double? remainingAmount;
bool? isSelected;
bool? isMerged;
AppointmentStatusEnum? appointmentStatusEnum;
AppointmentPaymentStatusEnum? appointmentPaymentStatusEnum;
List<ServiceModel>? appointmentServicesList;
List<AppointmentListModel>? customerAppointmentList;
List<MergeAppointmentList>? mergeAppointmentList;
AppointmentListModel({
this.id,
this.serviceSlotID,
this.appointmentStatusID,
this.appointmentStatusText,
this.serviceProviderID,
this.customerID,
this.isActive,
this.isPaymentRequired,
this.paymentStatus,
this.paymentStatusText,
this.customerName,
this.customerMobileNum,
this.appointmentType,
this.appointmentTypeEnum,
this.providerName,
this.paymentType,
this.appointmentAddress,
this.appointmentLatitude,
this.appointmentLongitude,
this.branchName,
this.branchId,
this.servicePaymentStatus,
this.isPaymentRequiredAtBooking,
this.totalAmount,
this.remainingAmount,
this.isSelected,
this.appointmentDate,
this.appointmentCreatedOn,
this.appointmentServicesList,
this.customerAppointmentList,
this.mergeAppointmentList,
});
AppointmentListModel(
{this.id,
this.serviceSlotID,
this.appointmentStatusID,
this.appointmentStatusText,
this.serviceProviderID,
this.customerID,
this.isActive,
this.isPaymentRequired,
this.paymentStatus,
this.paymentStatusText,
this.customerName,
this.providerName,
this.duration,
this.appointmentDate,
this.appointmentServicesList});
@override
String toString() {
return 'AppointmentListModel{id: $id, serviceSlotID: $serviceSlotID, appointmentStatusID: $appointmentStatusID, appointmentStatusText: $appointmentStatusText, serviceProviderID: $serviceProviderID, customerID: $customerID, isActive: $isActive, isPaymentRequired: $isPaymentRequired, paymentStatus: $paymentStatus, paymentStatusText: $paymentStatusText, customerName: $customerName, providerName: $providerName, duration: $duration, appointmentDate: $appointmentDate,appointmentCreatedOn: $appointmentCreatedOn, appointmentStatusEnum: $appointmentStatusEnum, appointmentServicesList: $appointmentServicesList}';
return 'AppointmentListModel{id: $id, serviceSlotID: $serviceSlotID, appointmentStatusID: $appointmentStatusID, appointmentStatusText: $appointmentStatusText, serviceProviderID: $serviceProviderID, customerID: $customerID, isActive: $isActive, isPaymentRequired: $isPaymentRequired, paymentStatus: $paymentStatus, paymentStatusText: $paymentStatusText, customerName: $customerName, providerName: $providerName, duration: $duration, appointmentDate: $appointmentDate, appointmentStatusEnum: $appointmentStatusEnum, appointmentServicesList: $appointmentServicesList}';
}
AppointmentListModel.fromJson(Map<String, dynamic> json) {
@ -90,33 +54,17 @@ class AppointmentListModel {
paymentStatus = json['paymentStatus'];
paymentStatusText = json['paymentStatusText'];
customerName = json['customerName'];
customerMobileNum = json['customerMobile'];
appointmentType = json['appointmentType'];
appointmentTypeEnum = json['appointmentType'] != null ? (json['appointmentType'] as int).toAppointmentTypeEnum() : AppointmentTypeEnum.workshop;
providerName = json['providerName'];
duration = json['duration'];
appointmentDate = json['appointmentDate'];
appointmentCreatedOn = json['createdOn'];
paymentType = json['paymentType'];
appointmentAddress = json['address'] ?? "";
appointmentLatitude = json['branchLatitude'];
appointmentLongitude = json['branchLongitude'];
branchName = json['branchName'];
branchId = json['branchID'];
servicePaymentStatus = json['servicePaymentStatus'];
isPaymentRequiredAtBooking = json['isPaymentRequiredAtBooking'];
totalAmount = json['amountTotal'];
remainingAmount = json['amountRem'];
isSelected = false;
appointmentStatusEnum = (json['appointmentStatusID'] as int).toAppointmentStatusEnum();
appointmentPaymentStatusEnum = (json['servicePaymentStatus'] as int).toAppointmentPaymentStatusEnum();
if (json['serviceList'] != null) {
appointmentServicesList = <ServiceModel>[];
json['serviceList'].forEach((v) {
appointmentServicesList!.add(ServiceModel.fromJson(v, isForAppointment: true));
});
}
mergeAppointmentList = json["mergeAppointmentList"] == null ? [] : List<MergeAppointmentList>.from(json["mergeAppointmentList"]!.map((x) => MergeAppointmentList.fromJson(x)));
}
}
@ -144,36 +92,3 @@ class ServiceAppointmentItems {
return data;
}
}
// Data Model Class with 'customerName' and 'customerID'
class CustomerData {
final int customerID;
final String customerName;
final List<AppointmentListModel> appointmentList;
CustomerData({required this.customerID, required this.customerName, required this.appointmentList});
}
class MergeAppointmentList {
int? id;
int? mergeAppointmentId;
int? serviceAppointmentId;
MergeAppointmentList({
this.id,
this.mergeAppointmentId,
this.serviceAppointmentId,
});
factory MergeAppointmentList.fromJson(Map<String, dynamic> json) => MergeAppointmentList(
id: json["id"],
mergeAppointmentId: json["mergeAppointmentID"],
serviceAppointmentId: json["serviceAppointmentID"],
);
Map<String, dynamic> toJson() => {
"id": id,
"mergeAppointmentID": mergeAppointmentId,
"serviceAppointmentID": serviceAppointmentId,
};
}

@ -1,24 +0,0 @@
class AppointmentSlots {
int totalSlots;
int occupiedSlots;
int emptySlots;
AppointmentSlots({
required this.totalSlots,
required this.occupiedSlots,
required this.emptySlots,
});
factory AppointmentSlots.fromJson(Map<String, dynamic> json) =>
AppointmentSlots(
totalSlots: json["totalSlots"],
occupiedSlots: json["occupiedSlots"],
emptySlots: json["emptySlots"],
);
Map<String, dynamic> toJson() => {
"totalSlots": totalSlots,
"occupiedSlots": occupiedSlots,
"emptySlots": emptySlots,
};
}

@ -4,7 +4,7 @@
import 'dart:convert';
import 'package:mc_common_app/models/services_models/service_model.dart';
import 'package:mc_common_app/models/services/service_model.dart';
Schedule scheduleFromJson(String str) => Schedule.fromJson(json.decode(str));
@ -58,7 +58,6 @@ class ScheduleData {
final List<ServiceModel>? scheduleServices;
final List<ServiceModel>? selectedServices;
String branchId;
int? appointmentType;
ScheduleData({
this.id,
@ -78,7 +77,6 @@ class ScheduleData {
this.scheduleServices,
this.selectedServices,
this.branchId = "",
this.appointmentType
});
factory ScheduleData.fromJson(Map<String, dynamic> json) =>
@ -96,7 +94,6 @@ class ScheduleData {
address: json["address"],
latitude: json["latitude"],
longitude: json["longitude"],
appointmentType: json["appointmentType"] == null ? null : json["appointmentType"],
weeklyOffDays: json["weeklyOffDays"] == null ? [] : List<WeeklyOffDay>.from(json["weeklyOffDays"]!.map((x) => WeeklyOffDay.fromJson(x))),
scheduleServices: json["scheduleServices"] == null ? [] : List<ServiceModel>.from(json["scheduleServices"]!.map((x) => ServiceModel.fromJson(x))),
selectedServices: [],
@ -117,7 +114,6 @@ class ScheduleData {
"address": address,
"latitude": latitude,
"longitude": longitude,
"appointmentType": appointmentType,
"scheduleServices": scheduleServices == null ? [] : List<dynamic>.from(scheduleServices!.map((x) => x.toJson())),
};

@ -1,7 +1,6 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/services_models/service_model.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/models/services/service_model.dart';
import 'package:mc_common_app/models/general/widgets_models.dart';
class CustomTimeDateSlotModel {
TimeSlotModel? date;
@ -11,7 +10,6 @@ class CustomTimeDateSlotModel {
}
class ServiceAppointmentScheduleModel {
String? scheduleName;
List<ServiceSlotList>? serviceSlotList;
List<ServiceModel>? servicesListInAppointment;
int? selectedDateIndex;
@ -21,12 +19,8 @@ class ServiceAppointmentScheduleModel {
double? amountTotal;
double? amountRem;
int? appointmentType;
double? totalLocationCharges;
CurrentLocationInfoModel? locationInfoModel;
AppointmentTypeEnum? appointmentTypeEnum;
ServiceAppointmentScheduleModel({
this.scheduleName,
this.serviceSlotList,
this.servicesListInAppointment,
this.selectedDateIndex,
@ -36,9 +30,6 @@ class ServiceAppointmentScheduleModel {
this.amountTotal,
this.amountRem,
this.appointmentType,
this.totalLocationCharges,
this.locationInfoModel,
this.appointmentTypeEnum,
});
List<CustomTimeDateSlotModel> getFormattedDateTimeSlotPackage() {
@ -78,7 +69,7 @@ class ServiceAppointmentScheduleModel {
.toList();
List<TimeSlotModel> slotTime = [];
for (var element in slotTimeData) {
slotTime.add(TimeSlotModel(isSelected: false, slotId: element.id!, slot: element.startTime ?? "", date: element.slotDate!.toFormattedDateWithoutTime()));
slotTime.add(TimeSlotModel(isSelected: false, slotId: element.id!, slot: element.startTime ?? "", date: element.slotDate!.toFormattedDateWithoutTime() ?? ""));
}
return slotTime;
@ -96,8 +87,6 @@ class ServiceAppointmentScheduleModel {
}
ServiceAppointmentScheduleModel.fromJson(Map<String, dynamic> json, {bool isForAppointment = false}) {
scheduleName = json['scheduleName'];
if (json['serviceSlotList'] != null) {
serviceSlotList = <ServiceSlotList>[];
json['serviceSlotList'].forEach((v) {
@ -116,9 +105,6 @@ class ServiceAppointmentScheduleModel {
amountTotal = json['amountTotal'];
amountRem = json['amountRem'];
appointmentType = json['appointmentType'];
totalLocationCharges = 0.0;
locationInfoModel = CurrentLocationInfoModel(address: "", latitude: 0.0, longitude: 0.0, distanceToBranch: 0.0, homeChargesInCurrentService: 0.0);
appointmentTypeEnum = json['appointmentType'] != null ? (json['appointmentType'] as int).toAppointmentTypeEnum() : AppointmentTypeEnum.workshop;
}
}

@ -0,0 +1,49 @@
class ChatMessageModel {
String? senderUserID;
String? senderName;
int? messageType;
String? message;
RequestOffer? requestOffer;
int? requestID;
int? requestOfferID;
ChatMessageModel({this.senderUserID, this.senderName, this.messageType, this.message, this.requestOffer, this.requestID, this.requestOfferID});
ChatMessageModel.fromJson(Map<String, dynamic> json) {
senderUserID = json['senderUserID'];
senderName = json['senderName'];
messageType = json['messageType'];
message = json['message'];
if (json['requestOffer'] != null) {
requestOffer = RequestOffer.fromJson(json['requestOffer']);
} else {
requestOffer = null;
}
requestID = json['requestID'];
requestOfferID = json['requestOfferID'];
}
}
class RequestOffer {
int? id;
int? requestID;
int? serviceProviderID;
int? offerStatus;
String? comment;
int? price;
String? offeredItemCreatedBy;
String? offeredItemCreatedOn;
RequestOffer({this.id, this.requestID, this.serviceProviderID, this.offerStatus, this.comment, this.price, this.offeredItemCreatedBy, this.offeredItemCreatedOn});
RequestOffer.fromJson(Map<String, dynamic> json) {
id = json['id'];
requestID = json['requestID'];
serviceProviderID = json['serviceProviderID'];
offerStatus = json['offerStatus'];
comment = json['comment'];
price = json['price'];
offeredItemCreatedBy = json['offeredItemCreatedBy'];
offeredItemCreatedOn = json['offeredItemCreatedOn'];
}
}

@ -1,21 +0,0 @@
class BuyersChatForAdsModel {
int? id;
String? buyerUserID;
String? buyerName;
int? adsID;
int? unReadMessagesCount;
String? lastMessage;
String? lastMessageDateTime;
BuyersChatForAdsModel({this.id, this.buyerUserID, this.buyerName, this.adsID});
BuyersChatForAdsModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
buyerUserID = json['buyerUserID'];
buyerName = json['buyerName'];
adsID = json['adsID'];
unReadMessagesCount = json['unReadCount'];
lastMessage = json['lastMessage'];
lastMessageDateTime = json['lastMessageDateTime'];
}
}

@ -1,194 +0,0 @@
import 'dart:developer';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/utils/enums.dart';
class ChatMessageModel {
int? id;
String? senderUserID;
String? receiverUserID;
String? senderName;
int? messageType;
ChatMessageTypeEnum? chatMessageTypeEnum;
String? chatText;
int? requestID;
int? reqOfferID;
int? serviceProviderID;
int? offerStatus;
ReqOffer? reqOffer;
List<MessageImageModel>? messageImages;
bool? isRead;
String? readOn;
bool? isMyMessage;
ChatMessageModel({
this.id,
this.senderUserID,
this.receiverUserID,
this.senderName,
this.messageType,
this.chatMessageTypeEnum,
this.chatText,
this.requestID,
this.reqOfferID,
this.serviceProviderID,
this.offerStatus,
this.reqOffer,
this.messageImages,
this.isRead,
this.readOn,
this.isMyMessage,
});
@override
String toString() {
return 'ChatMessageModel{id: $id, senderUserID: $senderUserID, senderName: $senderName, messageType: $messageType, chatMessageTypeEnum: $chatMessageTypeEnum, chatText: $chatText, requestID: $requestID, reqOfferID: $reqOfferID, serviceProviderID: $serviceProviderID, offerStatus: $offerStatus, reqOffer: ${reqOffer.toString()}, isRead: $isRead, readOn: $readOn, isMyMessage: $isMyMessage}';
}
ChatMessageModel.fromJson(Map<String, dynamic> json, {bool isFromNetwork = true, bool isForReqOfferImagesURLs = false}) {
final myUserId = AppState().getUser.data!.userInfo!.userId.toString().toUpperCase();
id = json['id'];
senderUserID = json['senderUserID'];
receiverUserID = json['receiverUserID'] ?? "";
senderName = json['senderName'];
messageType = json['messageType'];
chatMessageTypeEnum = (json['messageType'] as int).toChatMessageTypeEnum();
chatText = json['chatText'];
requestID = json['requestID'];
reqOfferID = json['reqOfferID'];
serviceProviderID = json['serviceProviderID'];
offerStatus = json['offerStatus'];
reqOffer = json['reqOffer'] != null ? ReqOffer.fromJson(json['reqOffer'], isFromNetwork, isForReqOfferImagesURLs) : null;
if (json['reqOfferImages'] != null) {
messageImages = <MessageImageModel>[];
json['reqOfferImages'].forEach((v) {
messageImages!.add(MessageImageModel.fromJson(v, isFromNetwork));
});
}
isRead = json['isRead'];
readOn = json['readOn'];
isMyMessage = (json['senderUserID']).toString().toUpperCase() == myUserId;
}
}
class ReqOffer {
int? id;
int? requestID;
int? serviceProviderID;
int? offerStatus;
String? offerStatusText;
String? comment;
String? serviceItemName;
String? manufacturedByName;
String? manufacturedOn;
double? price;
bool? isDeliveryAvailable;
RequestDeliveryOptionEnum? requestDeliveryOption;
RequestsTypeEnum? requestsTypeEnum;
RequestOfferStatusEnum? requestOfferStatusEnum;
List<MessageImageModel>? reqOfferImages;
ReqOffer({
this.id,
this.requestID,
this.serviceProviderID,
this.offerStatus,
this.offerStatusText,
this.comment,
this.serviceItemName,
this.manufacturedByName,
this.manufacturedOn,
this.price,
this.isDeliveryAvailable,
this.requestDeliveryOption,
this.requestOfferStatusEnum,
this.requestsTypeEnum,
this.reqOfferImages,
});
ReqOffer.fromJson(Map<String, dynamic> json, bool isFromNetwork, bool isForReqOfferImagesURLs) {
id = json['id'];
requestID = json['requestID'];
serviceProviderID = json['serviceProviderID'];
offerStatus = json['offerStatus'];
offerStatusText = json['offerStatusText'];
comment = json['comment'];
serviceItemName = json['serviceItem'];
manufacturedByName = json['offeredItemCreatedByName'].toString();
manufacturedOn = json['offeredItemCreatedOn'] ?? json["createdOn"];
price = json['price'];
isDeliveryAvailable = json['isDeliveryAvailable'];
requestDeliveryOption = ((json['offerDeliveryOption'] ?? 0) as int).toRequestDeliveryOptionEnum();
requestOfferStatusEnum = ((json['offerStatus']) as int).toRequestOfferStatusEnum();
requestsTypeEnum = RequestsTypeEnum.serviceRequest;
// if (isForReqOfferImagesURLs) {
// if (json['reqOfferImagesURLs'] != null) {
// reqOfferImages = <MessageImageModel>[];
// json['reqOfferImagesURLs'].forEach((v) {
// reqOfferImages!.add(MessageImageModel.fromJson(v, isFromNetwork));
// });
// }
// } else {
if (json['reqOfferImages'] != null) {
reqOfferImages = <MessageImageModel>[];
json['reqOfferImages'].forEach((v) {
reqOfferImages!.add(MessageImageModel.fromJson(v, isFromNetwork));
});
}
// }
}
@override
String toString() {
return 'ReqOffer{id: $id, requestID: $requestID, serviceProviderID: $serviceProviderID, offerStatus: $offerStatus, offerStatusText: $offerStatusText, comment: $comment, serviceItemName: $serviceItemName, manufacturedById: $manufacturedByName, manufacturedOn: $manufacturedOn, price: $price, requestsTypeEnum: $requestsTypeEnum, requestOfferStatusEnum: $requestOfferStatusEnum}';
}
}
class OfferRequestCommentModel {
int? index;
String? title;
bool? isSelected;
OfferRequestCommentModel({this.index, this.title, this.isSelected});
}
class MessageImageModel {
int? id;
String? imageUrl;
String? imageStr;
String? imagePath;
bool? isFromNetwork;
int? reqOfferID;
MessageImageModel({
this.id,
this.imageUrl,
this.imageStr,
this.imagePath,
this.reqOfferID,
this.isFromNetwork = false,
});
MessageImageModel.fromJson(Map<String, dynamic> json, bool fromNetwork) {
id = json['id'];
imageUrl = json['imageUrl'];
imageStr = json['imageStr'];
imagePath = json[''];
reqOfferID = json['reqOfferID'];
isFromNetwork = fromNetwork;
}
Map<String, dynamic> toJson() {
return {
'id': id,
'imageStr': imageStr,
'reqOfferID': reqOfferID, // We don't include 'isFromNetwork' since it's set manually when parsing JSON
};
}
@override
String toString() {
return 'MessageImageModel{id: $id, imageUrl: $imageUrl, imageStr: $imageStr, imagePath: $imagePath, isFromNetwork: $isFromNetwork, reqOfferID: $reqOfferID}';
}
}

@ -2,7 +2,6 @@ class EnumsModel {
int id;
int enumTypeId;
String enumValueStr;
String enumValueStrDes;
int enumValue;
bool isActive;
@ -10,7 +9,6 @@ class EnumsModel {
required this.id,
required this.enumTypeId,
required this.enumValueStr,
required this.enumValueStrDes,
required this.enumValue,
required this.isActive,
});
@ -19,13 +17,20 @@ class EnumsModel {
id: json["id"],
enumTypeId: json["enumTypeID"],
enumValueStr: json["enumValueStr"],
enumValueStrDes: json["enumValueStrDes"] ?? json["enumValueStr"],
enumValue: json["enumValue"],
isActive: json["isActive"],
);
@override
String toString() {
return 'EnumsModel{id: $id, enumTypeId: $enumTypeId, enumValueStr: $enumValueStr,enumValueStrDes: $enumValueStrDes, enumValue: $enumValue, isActive: $isActive}';
return 'EnumsModel{id: $id, enumTypeId: $enumTypeId, enumValueStr: $enumValueStr, enumValue: $enumValue, isActive: $isActive}';
}
Map<String, dynamic> toJson() => {
"id": id,
"enumTypeID": enumTypeId,
"enumValueStr": enumValueStr,
"enumValue": enumValue,
"isActive": isActive,
};
}

@ -1,7 +1,3 @@
import 'dart:io';
import 'package:mc_common_app/utils/utils.dart';
class GenericRespModel {
GenericRespModel({
this.data,
@ -15,21 +11,17 @@ class GenericRespModel {
int? totalItemsCount;
String? message;
factory GenericRespModel.fromJson(Map<String, dynamic> json) {
if (json.containsKey('StatusMessage')) {
if ((json['StatusMessage'] as String).contains('Internal server error')) {
Utils.showToast("${json['StatusMessage']}");
}
}
return GenericRespModel(
data: json["data"],
messageStatus: json["messageStatus"],
totalItemsCount: json["totalItemsCount"],
message: json["message"],
);
}
Map<String, dynamic> toJson() => {
factory GenericRespModel.fromJson(Map<String, dynamic> json) =>
GenericRespModel(
data: json["data"],
messageStatus: json["messageStatus"],
totalItemsCount: json["totalItemsCount"],
message: json["message"],
);
Map<String, dynamic> toJson() =>
{
"data": data,
"messageStatus": messageStatus,
"totalItemsCount": totalItemsCount,
@ -37,6 +29,39 @@ class GenericRespModel {
};
}
var json = {
"ads": {"id": 0, "adsDurationID": 1, "startDate": "2023-04-12T10:10:20.905Z", "countryId": 1, "specialServiceIDs": [], "isMCHandled": false},
"vehiclePosting": {
"id": 0,
"userID": "1A1597B3-D5A0-433A-098B-08DB189E51EC",
"vehicleType": 1,
"vehicleModelID": 1,
"vehicleModelYearID": 1,
"vehicleColorID": 2,
"vehicleCategoryID": 1,
"vehicleConditionID": 1,
"vehicleMileageID": 1,
"vehicleTransmissionID": 1,
"vehicleSellerTypeID": 1,
"cityID": 1,
"price": 33,
"vehicleVIN": "fdfd",
"vehicleDescription": "dsd",
"vehicleTitle": "fsfs",
"vehicleDescriptionN": "dsdds",
"isFinanceAvailable": true,
"warantyYears": 2,
"demandAmount": 34,
"adStatus": 1,
"vehiclePostingImages": [
{"id": 0, "imageName": "onon", "imageUrl": "string", "imageStr": null, "vehiclePostingID": 0, "vehiclePosting": null}
],
"vehiclePostingDamageParts": [
{"id": 0, "comment": "hhsa", "vehicleImageBase64": null, "vehicleDamagePartID": 1, "vehiclePostingID": 0, "isActive": true}
]
}
};
class AdsCreationPayloadModel {
Ads? ads;
VehiclePosting? vehiclePosting;
@ -47,6 +72,17 @@ class AdsCreationPayloadModel {
ads = json['ads'] != null ? Ads.fromJson(json['ads']) : null;
vehiclePosting = json['vehiclePosting'] != null ? VehiclePosting.fromJson(json['vehiclePosting']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
if (ads != null) {
data['ads'] = ads!.toJson();
}
if (vehiclePosting != null) {
data['vehiclePosting'] = vehiclePosting!.toJson();
}
return data;
}
}
class Ads {
@ -56,19 +92,8 @@ class Ads {
int? countryId;
List<int>? specialServiceIDs;
bool? isMCHandled;
bool? showContactDetail;
bool? isOnWhatsApp;
Ads({
this.id,
this.adsDurationID,
this.startDate,
this.countryId,
this.specialServiceIDs,
this.isMCHandled,
this.showContactDetail,
this.isOnWhatsApp,
});
Ads({this.id, this.adsDurationID, this.startDate, this.countryId, this.specialServiceIDs, this.isMCHandled});
Ads.fromJson(Map<String, dynamic> json) {
id = json['id'];
@ -77,8 +102,6 @@ class Ads {
countryId = json['countryId'];
specialServiceIDs = json['specialServiceIDs'].cast<int>();
isMCHandled = json['isMCHandled'];
showContactDetail = json['showContactDetail'];
isOnWhatsApp = json['isOnWhatsApp'];
}
Map<String, dynamic> toJson() {
@ -91,11 +114,6 @@ class Ads {
data['isMCHandled'] = isMCHandled;
return data;
}
@override
String toString() {
return 'Ads{id: $id, adsDurationID: $adsDurationID, startDate: $startDate, countryId: $countryId, specialServiceIDs: $specialServiceIDs, isMCHandled: $isMCHandled}';
}
}
class VehiclePosting {
@ -125,33 +143,32 @@ class VehiclePosting {
String? phoneNo;
String? whatsAppNo;
VehiclePosting({
this.id,
this.userID,
this.vehicleType,
this.vehicleModelID,
this.vehicleModelYearID,
this.vehicleColorID,
this.vehicleCategoryID,
this.vehicleConditionID,
this.vehicleMileageID,
this.vehicleTransmissionID,
this.vehicleSellerTypeID,
this.cityID,
this.price,
this.vehicleVIN,
this.vehicleDescription,
this.vehicleTitle,
this.vehicleDescriptionN,
this.isFinanceAvailable,
this.warantyYears,
this.demandAmount,
this.adStatus,
this.phoneNo,
this.whatsAppNo,
this.vehiclePostingImages,
this.vehiclePostingDamageParts,
});
VehiclePosting(
{this.id,
this.userID,
this.vehicleType,
this.vehicleModelID,
this.vehicleModelYearID,
this.vehicleColorID,
this.vehicleCategoryID,
this.vehicleConditionID,
this.vehicleMileageID,
this.vehicleTransmissionID,
this.vehicleSellerTypeID,
this.cityID,
this.price,
this.vehicleVIN,
this.vehicleDescription,
this.vehicleTitle,
this.vehicleDescriptionN,
this.isFinanceAvailable,
this.warantyYears,
this.demandAmount,
this.adStatus,
this.phoneNo,
this.whatsAppNo,
this.vehiclePostingImages,
this.vehiclePostingDamageParts});
VehiclePosting.fromJson(Map<String, dynamic> json) {
id = json['id'];
@ -191,6 +208,40 @@ class VehiclePosting {
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['userID'] = userID;
data['vehicleType'] = vehicleType;
data['vehicleModelID'] = vehicleModelID;
data['vehicleModelYearID'] = vehicleModelYearID;
data['vehicleColorID'] = vehicleColorID;
data['vehicleCategoryID'] = vehicleCategoryID;
data['vehicleConditionID'] = vehicleConditionID;
data['vehicleMileageID'] = vehicleMileageID;
data['vehicleTransmissionID'] = vehicleTransmissionID;
data['vehicleSellerTypeID'] = vehicleSellerTypeID;
data['cityID'] = cityID;
data['price'] = price;
data['vehicleVIN'] = vehicleVIN;
data['vehicleDescription'] = vehicleDescription;
data['vehicleTitle'] = vehicleTitle;
data['vehicleDescriptionN'] = vehicleDescriptionN;
data['isFinanceAvailable'] = isFinanceAvailable;
data['warantyYears'] = warantyYears;
data['demandAmount'] = demandAmount;
data['adStatus'] = adStatus;
data['phoneNo'] = phoneNo;
data['whatsAppNo'] = whatsAppNo;
if (vehiclePostingImages != null) {
data['vehiclePostingImages'] = vehiclePostingImages!.map((v) => v.toJson()).toList();
}
if (vehiclePostingDamageParts != null) {
data['vehiclePostingDamageParts'] = vehiclePostingDamageParts!.map((v) => v.toJson()).toList();
}
return data;
}
@override
String toString() {
return 'VehiclePosting{id: $id, userID: $userID, vehicleType: $vehicleType, vehicleModelID: $vehicleModelID, vehicleModelYearID: $vehicleModelYearID, vehicleColorID: $vehicleColorID, vehicleCategoryID: $vehicleCategoryID, vehicleConditionID: $vehicleConditionID, vehicleMileageID: $vehicleMileageID, vehicleTransmissionID: $vehicleTransmissionID, vehicleSellerTypeID: $vehicleSellerTypeID, cityID: $cityID, price: $price, vehicleVIN: $vehicleVIN, vehicleDescription: $vehicleDescription, vehicleTitle: $vehicleTitle, vehicleDescriptionN: $vehicleDescriptionN, isFinanceAvailable: $isFinanceAvailable, warantyYears: $warantyYears, demandAmount: $demandAmount, adStatus: $adStatus, vehiclePostingImages: $vehiclePostingImages, vehiclePostingDamageParts: $vehiclePostingDamageParts, phoneNo: $phoneNo, whatsAppNo: $whatsAppNo}';
@ -199,18 +250,16 @@ class VehiclePosting {
class VehiclePostingImages {
int? id;
File? file;
String? imageName;
String? imageUrl;
String? imageStr;
int? vehiclePostingID;
String? vehiclePosting;
VehiclePostingImages({this.id, this.file, this.imageName, this.imageUrl, this.imageStr, this.vehiclePostingID, this.vehiclePosting});
VehiclePostingImages({this.id, this.imageName, this.imageUrl, this.imageStr, this.vehiclePostingID, this.vehiclePosting});
VehiclePostingImages.fromJson(Map<String, dynamic> json) {
id = json['id'];
file = null;
imageName = json['imageName'];
imageUrl = json['imageUrl'];
imageStr = json['imageStr'];
@ -228,11 +277,6 @@ class VehiclePostingImages {
data['vehiclePosting'] = vehiclePosting;
return data;
}
@override
String toString() {
return 'VehiclePostingImages{id: $id, imageName: $imageName, imageUrl: $imageUrl, imageStr: "", vehiclePostingID: $vehiclePostingID, vehiclePosting: $vehiclePosting}';
}
}
class RequestPostingImages {
@ -250,35 +294,27 @@ class RequestPostingImages {
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id ?? 0;
data['id'] = id;
data['requestImage'] = requestImage;
data['requestID'] = requestID ?? 0;
data['requestID'] = requestID;
return data;
}
@override
String toString() {
return 'RequestPostingImages{id: $id, requestImage: $requestImage, requestID: $requestID}';
}
}
class VehiclePostingDamageParts {
int? id;
File? file;
String? comment;
String? imageUrl;
String? vehicleImageBase64;
int? vehicleDamagePartID;
int? vehiclePostingID;
bool? isActive;
VehiclePostingDamageParts({this.id, this.file, this.comment, this.imageUrl, this.vehicleImageBase64, this.vehicleDamagePartID, this.vehiclePostingID, this.isActive});
VehiclePostingDamageParts({this.id, this.comment, this.vehicleImageBase64, this.vehicleDamagePartID, this.vehiclePostingID, this.isActive});
VehiclePostingDamageParts.fromJson(Map<String, dynamic> json) {
id = json['id'];
file = null;
comment = json['comment'];
imageUrl = json['imageUrl'];
vehicleImageBase64 = json['vehicleImageBase64'];
vehicleDamagePartID = json['vehicleDamagePartID'];
vehiclePostingID = json['vehiclePostingID'];
@ -289,32 +325,10 @@ class VehiclePostingDamageParts {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['comment'] = comment;
data['imageUrl'] = imageUrl;
data['vehicleImageBase64'] = vehicleImageBase64;
data['vehicleDamagePartID'] = vehicleDamagePartID;
data['vehiclePostingID'] = vehiclePostingID;
data['isActive'] = isActive;
return data;
}
@override
String toString() {
return 'VehiclePostingDamageParts{id: $id, comment: $comment, vehicleImageBase64: $vehicleImageBase64, vehicleDamagePartID: $vehicleDamagePartID, vehiclePostingID: $vehiclePostingID, isActive: $isActive}';
}
}
class BranchPostingImages {
int? id;
String? imageName;
String? imageUrl;
String? imageStr;
BranchPostingImages({this.id, this.imageName, this.imageUrl, this.imageStr});
BranchPostingImages.fromJson(Map<String, dynamic> json) {
id = json['id'];
imageName = json['imageName'];
imageUrl = json['imageUrl'];
imageStr = json['imageStr'];
}
}

@ -0,0 +1,36 @@
// To parse this JSON data, do
//
// final mResponse = mResponseFromJson(jsonString);
import 'dart:convert';
MResponse mResponseFromJson(String str) => MResponse.fromJson(json.decode(str));
String mResponseToJson(MResponse data) => json.encode(data.toJson());
class MResponse {
MResponse({
this.totalItemsCount,
this.messageStatus,
this.message,
this.data,
});
int? totalItemsCount;
int? messageStatus;
String? message;
dynamic data;
factory MResponse.fromJson(Map<String, dynamic> json) => MResponse(
totalItemsCount: json["totalItemsCount"],
messageStatus: json["messageStatus"],
message: json["message"],
data: json["data"],
);
Map<String, dynamic> toJson() => {
"totalItemsCount": totalItemsCount,
"messageStatus": messageStatus,
"message": message,
};
}

@ -1,10 +1,9 @@
class FilterListModel {
String title;
String iconUrl;
int id;
bool isSelected;
FilterListModel({required this.id, required this.isSelected, this.iconUrl = "", required this.title});
FilterListModel({required this.id, required this.isSelected, required this.title});
}
class SelectionModel {
@ -12,20 +11,13 @@ class SelectionModel {
int selectedId;
String errorValue;
String itemPrice;
String currency;
SelectionModel({
this.selectedOption = "",
this.errorValue = "",
this.selectedId = 0,
this.itemPrice = "",
this.currency = "",
});
@override
String toString() {
return 'SelectionModel{selectedOption: $selectedOption, selectedId: $selectedId, errorValue: $errorValue, itemPrice: $itemPrice, currency: $currency}';
}
}
class TimeSlotModel {

@ -1,48 +1,37 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/categroy.dart';
import 'package:mc_common_app/models/services_models/service_model.dart';
import 'package:mc_common_app/models/services/service_model.dart';
import 'package:mc_common_app/utils/enums.dart';
class BranchDetailModel {
int? id;
int? serviceProviderId;
String? serviceProviderName;
String? branchProfileImage;
String? branchName;
String? branchDescription;
int? cityId;
String? cityName;
String? address;
String? latitude;
String? longitude;
double? distanceKm;
String? openTime;
String? closeTime;
BranchStatusEnum? branchStatus;
List<GenericImageModel>? branchImages;
int? statusId;
String? statusText;
String? branchStatusLabel;
double? branchRateAvg;
List<ServiceModel>? branchServices;
final int? id;
final int? serviceProviderId;
final String? serviceProviderName;
final String? branchName;
final String? branchDescription;
final int? cityId;
final String? address;
final String? latitude;
final String? longitude;
final double? distanceKm;
final String? openTime;
final String? closeTime;
final BranchStatusEnum? branchStatus;
final int? statusId;
final dynamic statusText;
final List<ServiceModel>? branchServices;
List<CategoryData>? categories;
List<BranchAuditTrial>? branchAuditTrial;
int? countryID;
String? countryName;
bool isExpanded = false;
bool? isFavorite;
bool isExpanded;
BranchDetailModel({
this.id,
this.serviceProviderId,
this.serviceProviderName,
this.branchProfileImage,
this.branchName,
this.branchDescription,
this.cityId,
this.cityName,
this.address,
this.latitude,
this.longitude,
@ -50,77 +39,51 @@ class BranchDetailModel {
this.openTime,
this.closeTime,
this.branchStatus,
this.branchImages,
this.branchRateAvg,
this.statusId,
this.statusText,
this.branchStatusLabel,
this.branchServices,
this.categories,
this.branchAuditTrial,
this.countryID,
this.countryName,
this.isFavorite,
required this.isExpanded,
});
List<GenericImageModel> populateBranchImages(value) {
List<GenericImageModel> images = [];
if (value != null) {
value.forEach((v) {
images.add(GenericImageModel.fromJson(v));
});
}
return images;
}
BranchDetailModel.fromJson(Map<String, dynamic> json) {
List<GenericImageModel> images = [];
if (json.containsKey('serviceProviderBranchImage')) {
images = populateBranchImages(json["serviceProviderBranchImage"]);
} else {
images = populateBranchImages(json["branchImages"]);
}
id = json["id"];
serviceProviderId = json["serviceProviderID"];
branchProfileImage = images.isNotEmpty ? images.first.imageUrl ?? "" : null;
serviceProviderName = json["serviceProviderName"];
branchName = json["branchName"];
branchDescription = json["branchDescription"];
cityId = json["cityID"];
cityName = json["cityName"];
address = json["address"];
latitude = json["latitude"];
longitude = json["longitude"];
distanceKm = json["distanceKM"]?.toDouble();
openTime = json["openTime"];
closeTime = json["closeTime"];
branchStatus = json.containsKey("branchStatus") ? (json['branchStatus'] as int).toBranchStatusEnum() : null;
statusId = json["branchStatus"];
branchImages = images;
statusText = json["statusText"];
branchStatusLabel = json["branchStatusText"];
branchRateAvg = json["branchRateAvg"];
branchServices = json["serviceProviderServices"] == null ? [] : List<ServiceModel>.from(json["serviceProviderServices"]!.map((x) => ServiceModel.fromJson(x)));
categories = [];
branchAuditTrial = json["branchAuditTrial"] == null ? [] : List<BranchAuditTrial>.from(json["branchAuditTrial"]!.map((x) => BranchAuditTrial.fromJson(x)));
isExpanded = false;
isFavorite = false;
}
}
class BranchAuditTrial {
int? status;
String? comment;
int? createdBy;
String? createdOn;
BranchAuditTrial({this.status, this.comment, this.createdBy, this.createdOn});
factory BranchDetailModel.fromJson(Map<String, dynamic> json) => BranchDetailModel(
id: json["id"],
serviceProviderId: json["serviceProviderID"],
serviceProviderName: json["serviceProviderName"],
branchName: json["branchName"],
branchDescription: json["branchDescription"],
cityId: json["cityID"],
address: json["address"],
latitude: json["latitude"],
longitude: json["longitude"],
distanceKm: json["distanceKM"]?.toDouble(),
openTime: json["openTime"],
closeTime: json["closeTime"],
branchStatus: (json['branchStatus'] as int).toBranchStatusEnum(),
statusId: json["branchStatus"],
statusText: json["statusText"],
branchServices: json["serviceProviderServices"] == null ? [] : List<ServiceModel>.from(json["serviceProviderServices"]!.map((x) => ServiceModel.fromJson(x))),
categories: [],
isExpanded: false,
);
BranchAuditTrial.fromJson(Map<String, dynamic> json) {
status = json['status'];
comment = json['comment'];
createdBy = json['createdBy'];
createdOn = json['createdOn'];
}
Map<String, dynamic> toJson() => {
"id": id,
"serviceProviderID": serviceProviderId,
"serviceProviderName": serviceProviderName,
"branchName": branchName,
"branchDescription": branchDescription,
"cityID": cityId,
"address": address,
"latitude": latitude,
"longitude": longitude,
"distanceKM": distanceKm,
"openTime": openTime,
"closeTime": closeTime,
"status": statusId,
"statusText": statusText,
"serviceProviderServices": branchServices == null ? [] : List<dynamic>.from(branchServices!.map((x) => x.toJson())),
};
}

@ -1,36 +0,0 @@
class BranchRatingModel {
int? id;
String? title;
String? review;
int? ratNo;
int? serviceProviderBranchID;
String? serviceProviderBranchName;
int? customerID;
String? customerName;
BranchRatingModel({this.id, this.title, this.review, this.ratNo, this.serviceProviderBranchID, this.serviceProviderBranchName, this.customerID, this.customerName});
BranchRatingModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
title = json['title'];
review = json['review'];
ratNo = json['ratNo'];
serviceProviderBranchID = json['serviceProviderBranchID'];
serviceProviderBranchName = json['serviceProviderBranchName'];
customerID = json['customerID'];
customerName = json['customerName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['title'] = title;
data['review'] = review;
data['ratNo'] = ratNo;
data['serviceProviderBranchID'] = serviceProviderBranchID;
data['serviceProviderBranchName'] = serviceProviderBranchName;
data['customerID'] = customerID;
data['customerName'] = customerName;
return data;
}
}

@ -22,17 +22,17 @@ class Branch {
String? message;
factory Branch.fromJson(Map<String, dynamic> json) => Branch(
totalItemsCount: json["totalItemsCount"],
totalItemsCount: json["totalItemsCount"] == null ? null : json["totalItemsCount"],
data: json["data"] == null ? null : List<BranchData>.from(json["data"].map((x) => BranchData.fromJson(x))),
messageStatus: json["messageStatus"],
message: json["message"],
messageStatus: json["messageStatus"] == null ? null : json["messageStatus"],
message: json["message"] == null ? null : json["message"],
);
Map<String, dynamic> toJson() => {
"totalItemsCount": totalItemsCount,
"totalItemsCount": totalItemsCount == null ? null : totalItemsCount,
"data": data == null ? null : List<dynamic>.from(data!.map((x) => x.toJson())),
"messageStatus": messageStatus,
"message": message,
"messageStatus": messageStatus == null ? null : messageStatus,
"message": message == null ? null : message,
};
}
@ -60,26 +60,26 @@ class BranchData {
int? status;
factory BranchData.fromJson(Map<String, dynamic> json) => BranchData(
id: json["id"],
serviceProviderId: json["serviceProviderID"],
branchName: json["branchName"],
branchDescription: json["branchDescription"],
cityId: json["cityID"],
address: json["address"],
latitude: json["latitude"],
longitude: json["longitude"],
status: json["status"],
id: json["id"] == null ? null : json["id"],
serviceProviderId: json["serviceProviderID"] == null ? null : json["serviceProviderID"],
branchName: json["branchName"] == null ? null : json["branchName"],
branchDescription: json["branchDescription"] == null ? null : json["branchDescription"],
cityId: json["cityID"] == null ? null : json["cityID"],
address: json["address"] == null ? null : json["address"],
latitude: json["latitude"] == null ? null : json["latitude"],
longitude: json["longitude"] == null ? null : json["longitude"],
status: json["status"] == null ? null : json["status"],
);
Map<String, dynamic> toJson() => {
"id": id,
"serviceProviderID": serviceProviderId,
"branchName": branchName,
"branchDescription": branchDescription,
"cityID": cityId,
"address": address,
"latitude": latitude,
"longitude": longitude,
"status": status,
"id": id == null ? null : id,
"serviceProviderID": serviceProviderId == null ? null : serviceProviderId,
"branchName": branchName == null ? null : branchName,
"branchDescription": branchDescription == null ? null : branchDescription,
"cityID": cityId == null ? null : cityId,
"address": address == null ? null : address,
"latitude": latitude == null ? null : latitude,
"longitude": longitude == null ? null : longitude,
"status": status == null ? null : status,
};
}

@ -6,7 +6,7 @@ import 'dart:convert';
import 'package:equatable/equatable.dart';
import 'package:mc_common_app/models/provider_branches_models/provider_profile_model.dart';
import 'package:mc_common_app/models/services_models/service_model.dart';
import 'package:mc_common_app/models/services/service_model.dart';
Category categoryFromJson(String str) => Category.fromJson(json.decode(str));
@ -26,17 +26,17 @@ class Category {
String? message;
factory Category.fromJson(Map<String, dynamic> json) => Category(
totalItemsCount: json["totalItemsCount"],
totalItemsCount: json["totalItemsCount"] == null ? null : json["totalItemsCount"],
data: json["data"] == null ? null : List<CategoryData>.from(json["data"].map((x) => CategoryData.fromJson(x))),
messageStatus: json["messageStatus"],
message: json["message"],
messageStatus: json["messageStatus"] == null ? null : json["messageStatus"],
message: json["message"] == null ? null : json["message"],
);
Map<String, dynamic> toJson() => {
"totalItemsCount": totalItemsCount,
"totalItemsCount": totalItemsCount == null ? null : totalItemsCount,
"data": data == null ? null : List<dynamic>.from(data!.map((x) => x.toJson())),
"messageStatus": messageStatus,
"message": message,
"messageStatus": messageStatus == null ? null : messageStatus,
"message": message == null ? null : message,
};
}
@ -51,33 +51,30 @@ class CategoryData extends Equatable {
this.services,
this.branchId,
this.branchName,
this.isDeactivated,
});
int? id;
String? categoryName;
String? categoryNameN;
String? serviceCategoryIconUrl;
String? serviceCategoryImageUrl;
dynamic? serviceCategoryIconUrl;
dynamic? serviceCategoryImageUrl;
String? branchId;
String? branchName;
bool? isDeactivated;
List<ServiceModel>? services;
factory CategoryData.fromJson(Map<String, dynamic> json) => CategoryData(
id: json["id"],
categoryName: json["categoryName"],
categoryNameN: json["categoryNameN"],
id: json["id"] == null ? null : json["id"],
categoryName: json["categoryName"] == null ? null : json["categoryName"],
categoryNameN: json["categoryNameN"] == null ? null : json["categoryNameN"],
serviceCategoryIconUrl: json["serviceCategoryIconUrl"],
serviceCategoryImageUrl: json["serviceCategoryImageUrl"],
services: [],
isDeactivated: false,
);
Map<String, dynamic> toJson() => {
"id": id,
"categoryName": categoryName,
"categoryNameN": categoryNameN,
"id": id == null ? null : id,
"categoryName": categoryName == null ? null : categoryName,
"categoryNameN": categoryNameN == null ? null : categoryNameN,
"serviceCategoryIconUrl": serviceCategoryIconUrl,
"serviceCategoryImageUrl": serviceCategoryImageUrl,
};

@ -4,8 +4,6 @@
import 'dart:convert';
import 'package:mc_common_app/utils/enums.dart';
Document documentFromJson(String str) => Document.fromJson(json.decode(str));
String documentToJson(Document data) => json.encode(data.toJson());
@ -24,103 +22,65 @@ class Document {
String? message;
factory Document.fromJson(Map<String, dynamic> json) => Document(
totalItemsCount: json["totalItemsCount"],
data: json["data"] == null ? null : List<DocumentData>.from(json["data"].map((x) => DocumentData.fromJson(x))),
messageStatus: json["messageStatus"],
message: json["message"],
);
totalItemsCount: json["totalItemsCount"] == null ? null : json["totalItemsCount"],
data: json["data"] == null ? null : List<DocumentData>.from(json["data"].map((x) => DocumentData.fromJson(x))),
messageStatus: json["messageStatus"] == null ? null : json["messageStatus"],
message: json["message"] == null ? null : json["message"],
);
Map<String, dynamic> toJson() => {
"totalItemsCount": totalItemsCount,
"data": data == null ? null : List<dynamic>.from(data!.map((x) => x.toJson())),
"messageStatus": messageStatus,
"message": message,
};
"totalItemsCount": totalItemsCount == null ? null : totalItemsCount,
"data": data == null ? null : List<dynamic>.from(data!.map((x) => x.toJson())),
"messageStatus": messageStatus == null ? null : messageStatus,
"message": message == null ? null : message,
};
}
class DocumentData {
DocumentData(
{this.id,
this.serviceProviderId,
this.documentId,
this.documentUrl,
this.status,
this.statusText,
this.comment,
this.isActive,
this.document,
this.fileExt,
this.documentName,
this.isLocalFile,
this.description,
this.dateExpire,
this.isAllowUpdate,
this.isExpired});
DocumentData({
this.id,
this.serviceProviderId,
this.documentId,
this.documentUrl,
this.status,
this.comment,
this.isActive,
this.document,
this.fileExt,
this.documentName,
});
int? id;
int? serviceProviderId;
int? documentId;
String? documentUrl;
DocumentStatusEnum? status;
String? comment;
dynamic? documentUrl;
int? status;
dynamic? comment;
bool? isActive;
String? document;
String? fileExt;
String? statusText;
String? documentName;
bool? isLocalFile;
String? description;
String? dateExpire;
bool? isExpired;
bool? isAllowUpdate;
factory DocumentData.fromJson(Map<String, dynamic> json) => DocumentData(
id: json["id"],
serviceProviderId: json["serviceProviderID"],
documentId: json["documentID"],
documentUrl: json["documentURL"],
status: json.containsKey("status") ? (json['status'] as int).toDocumentStatusEnum() : null,
statusText: json["statusText"],
comment: json["comment"],
isActive: json["isActive"],
dateExpire: json["dateExpire"],
isExpired: json["isExpired"],
isAllowUpdate: json["isAllowUpdate"],
document: null,
fileExt: null,
documentName: json["documentName"],
isLocalFile: false,
description: null);
id: json["id"] == null ? null : json["id"],
serviceProviderId: json["serviceProviderID"] == null ? null : json["serviceProviderID"],
documentId: json["documentID"] == null ? null : json["documentID"],
documentUrl: json["documentURL"],
status: json["status"] == null ? null : json["status"],
comment: json["comment"],
isActive: json["isActive"] == null ? null : json["isActive"],
document: null,
fileExt: null,
documentName: json["documentName"] == null ? null : json["documentName"],
);
Map<String, dynamic> toJson() => {
"id": id,
"serviceProviderID": serviceProviderId,
"documentID": documentId,
"documentURL": documentUrl,
"status": status,
"comment": comment,
"isActive": isActive,
"dateExpire": dateExpire,
"isExpired": isExpired,
"isAllowUpdate": isAllowUpdate,
};
}
extension DocumentEnum on int {
DocumentStatusEnum toDocumentStatusEnum() {
switch (this) {
case 0:
return DocumentStatusEnum.needUpload;
case 1:
return DocumentStatusEnum.pending;
case 2:
return DocumentStatusEnum.review;
case 3:
return DocumentStatusEnum.approvedOrActive;
case 4:
return DocumentStatusEnum.rejected;
default:
throw Exception('Invalid status value: $this'); // Explicit handling for invalid cases
}
}
"id": id == null ? null : id,
"serviceProviderID": serviceProviderId == null ? null : serviceProviderId,
"documentID": documentId == null ? null : documentId,
"documentURL": documentUrl,
"status": status == null ? null : status,
"comment": comment,
"isActive": isActive == null ? null : isActive,
};
}

@ -55,7 +55,7 @@ class ServicesData {
String? descriptionN;
dynamic? serviceIconUrl;
dynamic? serviceImageUrl;
dynamic? serviceCategoryId;
int? serviceCategoryId;
dynamic? categoryName;
bool? isSelected;

@ -1,47 +0,0 @@
class ProviderContactInfoModel {
int? id;
int? providerID;
String? name;
int? allDocStatus;
String? companyName;
String? companyDescription;
int? countryID;
String? countryName;
String? userID;
String? memberSince;
String? mobile;
String? whatsApp;
String? email;
ProviderContactInfoModel({
this.id,
this.providerID,
this.name,
this.allDocStatus,
this.companyName,
this.companyDescription,
this.countryID,
this.countryName,
this.userID,
this.memberSince,
this.mobile,
this.whatsApp,
this.email,
});
ProviderContactInfoModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
providerID = json['providerID'];
name = json['name'];
allDocStatus = json['allDocStatus'];
companyName = json['companyName'];
companyDescription = json['companyDescription'];
countryID = json['countryID'];
countryName = json['countryName'];
userID = json['userID'];
memberSince = json['memberSince'];
mobile = json['mobile'];
whatsApp = json['whatsApp'];
email = json['email'];
}
}

@ -8,6 +8,8 @@ import 'package:mc_common_app/models/provider_branches_models/branch_detail_mode
ProviderModel branch2FromJson(String str) => ProviderModel.fromJson(json.decode(str));
String branch2ToJson(ProviderModel data) => json.encode(data.toJson());
class ProviderModel {
ProviderModel({
this.messageStatus,
@ -21,12 +23,21 @@ class ProviderModel {
final ProviderModelData? data;
final String? message;
factory ProviderModel.fromJson(Map<String, dynamic> json) => ProviderModel(
factory ProviderModel.fromJson(Map<String, dynamic> json) =>
ProviderModel(
messageStatus: json["messageStatus"],
totalItemsCount: json["totalItemsCount"],
data: json["data"] == null ? null : ProviderModelData.fromJson(json["data"]),
message: json["message"],
);
Map<String, dynamic> toJson() =>
{
"messageStatus": messageStatus,
"totalItemsCount": totalItemsCount,
"data": data == null ? null : data!.toJson(),
"message": message,
};
}
class ProviderModelData {
@ -52,7 +63,8 @@ class ProviderModelData {
final String? userId;
final List<BranchDetailModel>? serviceProviderBranch;
factory ProviderModelData.fromJson(Map<String, dynamic> json) => ProviderModelData(
factory ProviderModelData.fromJson(Map<String, dynamic> json) =>
ProviderModelData(
id: json["id"],
companyName: json["companyName"],
countryName: json["countryName"],
@ -63,26 +75,16 @@ class ProviderModelData {
userId: json["userID"],
serviceProviderBranch: json["serviceProviderBranch"] == null ? null : List<BranchDetailModel>.from(json["serviceProviderBranch"].map((x) => BranchDetailModel.fromJson(x))),
);
}
class ProviderBasicDataModel {
int? id;
String? providerName;
String? providerDescription;
ProviderBasicDataModel({this.id, this.providerName, this.providerDescription});
ProviderBasicDataModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
providerName = json['providerName'];
providerDescription = json['providerDescription'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['providerName'] = providerName;
data['providerDescription'] = providerDescription;
return data;
}
Map<String, dynamic> toJson() =>
{
"id": id,
"companyName": companyName,
"companyDescription": companyDescription,
"allDocStatus": allDocStatus,
"isValidSubscription": isValidSubscription,
"userID": userId,
"serviceProviderBranch": serviceProviderBranch == null ? null : List<dynamic>.from(serviceProviderBranch!.map((x) => x.toJson())),
};
}

@ -1,86 +1,53 @@
// To parse this JSON data, do
//
// final branch2 = branch2FromJson(jsonString);
import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart';
class ProviderProfileModel {
ProviderProfileModel({
this.id,
this.companyName,
this.profileImage,
this.name,
this.countryName,
this.companyDescription,
this.allDocStatus,
this.isValidSubscription,
this.userId,
this.memberSince,
this.serviceProviderBranch,
this.countryID,
this.isFavorite,
this.providerID,
this.noOfBranches,
this.customerID,
});
final int? id;
final String? profileImage;
final String? companyName;
final String? companyDescription;
int? countryID;
final String? countryName;
int? countryID;
final String? companyDescription;
final int? allDocStatus;
final bool? isValidSubscription;
final String? name;
final String? userId;
final String? memberSince;
bool? isFavorite;
final int? providerID;
final int? customerID;
final int? noOfBranches;
final List<BranchDetailModel>? serviceProviderBranch;
factory ProviderProfileModel.fromJson(Map<String, dynamic> json) => ProviderProfileModel(
id: json["id"],
companyName: json["companyName"],
profileImage: json["profileImage"] ?? "",
name: json["name"],
countryName: json["countryName"],
countryID: json["countryID"],
companyDescription: json["companyDescription"],
allDocStatus: json["allDocStatus"],
isValidSubscription: json["isValidSubscription"],
userId: json["userID"],
memberSince: json["memberSince"] ?? "",
providerID: json["providerID"] ?? 0,
customerID: json["customerID"] ?? 0,
noOfBranches: json["noOfBranches"] ?? (json["serviceProviderBranch"] != null ? (json["serviceProviderBranch"] as List).length : 0),
isFavorite: json["isFavourite"] ?? false,
serviceProviderBranch: json["serviceProviderBranch"] == null ? null : List<BranchDetailModel>.from(json["serviceProviderBranch"].map((x) => BranchDetailModel.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"id": id,
"companyName": companyName,
"companyDescription": companyDescription,
"allDocStatus": allDocStatus,
"isValidSubscription": isValidSubscription,
"userID": userId,
"serviceProviderBranch": serviceProviderBranch == null ? null : List<dynamic>.from(serviceProviderBranch!.map((x) => x.toJson())),
};
}
// {
// "id": 10,
// "companyName": "string",
// "companyDescription": "",
// "countryID": 1,
// "countryName": "Saudi Arabia",
// "allDocStatus": 0,
// "isValidSubscription": true,
// "name": null,
// "userID": "88e2e2e8-9a6d-4f97-b05c-08dc7e4513b3",
// }
//
// {
// "id": 0,
// "companyName": "string",
// "companyDescription": "",
// "countryID": 1,
// "countryName": "string",
// "allDocStatus": 3,
// "isValidSubscription": true,
// "name": "Mirza Shafique",
// "userID": "7db5e1ae-6de4-47d7-984b-08db2842f899",
// "providerID": 2,
// "customerID": 6,
// "noOfBranches": 12,
// "memberSince": "2024-08-22T11:36:46.41"
// }

@ -1,30 +1,50 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/utils/enums.dart';
class OffersModel {
int? id;
int? requestID;
int? serviceProviderID;
ServiceProvider? serviceProvider;
int? offerStatus;
RequestOfferStatusEnum? requestOfferStatusEnum;
String? offerStatusText;
String? comment;
double? price;
OffersModel({this.id, this.requestID, this.serviceProviderID, this.serviceProvider, this.offerStatus, this.offerStatusText, this.comment, this.price});
OffersModel(
{this.id,
this.requestID,
this.serviceProviderID,
this.serviceProvider,
this.offerStatus,
this.offerStatusText,
this.comment,
this.price});
OffersModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
requestID = json['requestID'];
serviceProviderID = json['serviceProviderID'];
serviceProvider = json['serviceProvider'] != null ? ServiceProvider.fromJson(json['serviceProvider']) : null;
serviceProvider = json['serviceProvider'] != null
? ServiceProvider.fromJson(json['serviceProvider'])
: null;
offerStatus = json['offerStatus'];
requestOfferStatusEnum = ((json['offerStatus']) as int).toRequestOfferStatusEnum();
offerStatusText = json['offerStatusText'];
comment = json['comment'];
price = json['price'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['requestID'] = requestID;
data['serviceProviderID'] = serviceProviderID;
if (serviceProvider != null) {
data['serviceProvider'] = serviceProvider!.toJson();
}
data['offerStatus'] = offerStatus;
data['offerStatusText'] = offerStatusText;
data['comment'] = comment;
data['price'] = price;
return data;
}
}
class ServiceProvider {
@ -58,32 +78,32 @@ class ServiceProvider {
ServiceProvider(
{this.providerId,
this.providerGUID,
this.firstName,
this.lastName,
this.name,
this.gender,
this.genderName,
this.mobileNo,
this.email,
this.isEmailVerfied,
this.isCompleted,
this.city,
this.cityName,
this.country,
this.countryName,
this.accountStatus,
this.accountStatusText,
this.activityStatus,
this.activityStatusText,
this.bankName,
this.iBanNo,
this.isActive,
this.subscriptionDate,
this.companyName,
this.currency,
this.branch,
this.requestOffer});
this.providerGUID,
this.firstName,
this.lastName,
this.name,
this.gender,
this.genderName,
this.mobileNo,
this.email,
this.isEmailVerfied,
this.isCompleted,
this.city,
this.cityName,
this.country,
this.countryName,
this.accountStatus,
this.accountStatusText,
this.activityStatus,
this.activityStatusText,
this.bankName,
this.iBanNo,
this.isActive,
this.subscriptionDate,
this.companyName,
this.currency,
this.branch,
this.requestOffer});
ServiceProvider.fromJson(Map<String, dynamic> json) {
providerId = json['providerId'];

@ -0,0 +1,138 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/utils/enums.dart';
class RequestModel {
int requestType;
String requestTypeName;
String requestStatusName;
RequestStatus requestStatus;
String cityName;
String vehicleTypeName;
String countryName;
String customerName;
dynamic serviceProviders;
int offerCount;
int id;
int customerId;
dynamic customer;
String brand;
String model;
int year;
bool isNew;
String description;
List<dynamic> requestImages;
int cityId;
dynamic city;
double price;
int paymentStatus;
int vehicleTypeId;
int countryId;
List<dynamic> requestProviderItem;
bool isActive;
int createdBy;
DateTime createdOn;
dynamic modifiedBy;
dynamic modifiedOn;
RequestModel({
required this.requestType,
required this.requestTypeName,
required this.requestStatusName,
required this.requestStatus,
required this.cityName,
required this.vehicleTypeName,
required this.countryName,
required this.customerName,
required this.serviceProviders,
required this.offerCount,
required this.id,
required this.customerId,
required this.customer,
required this.brand,
required this.model,
required this.year,
required this.isNew,
required this.description,
required this.requestImages,
required this.cityId,
required this.city,
required this.price,
required this.paymentStatus,
required this.vehicleTypeId,
required this.countryId,
required this.requestProviderItem,
required this.isActive,
required this.createdBy,
required this.createdOn,
required this.modifiedBy,
required this.modifiedOn,
});
factory RequestModel.fromJson(Map<String, dynamic> json) => RequestModel(
requestType: json["requestType"],
requestTypeName: json["requestTypeName"],
requestStatusName: json["requestStatusName"],
requestStatus: (json['requestStatus'] as int).toRequestStatusEnum(),
cityName: json["cityName"],
vehicleTypeName: json["vehicleTypeName"],
countryName: json["countryName"],
customerName: json["customerName"],
serviceProviders: json["serviceProviders"],
offerCount: json["offerCount"],
id: json["id"],
customerId: json["customerID"],
customer: json["customer"],
brand: json["brand"],
model: json["model"],
year: json["year"],
isNew: json["isNew"],
description: json["description"],
requestImages: List<dynamic>.from(json["requestImages"].map((x) => x)),
cityId: json["cityID"],
city: json["city"],
price: json["price"],
paymentStatus: json["paymentStatus"],
vehicleTypeId: json["vehicleTypeID"],
countryId: json["countryID"],
requestProviderItem: List<dynamic>.from(json["requestProviderItem"].map((x) => x)),
isActive: json["isActive"],
createdBy: json["createdBy"],
createdOn: DateTime.parse(json["createdOn"]),
modifiedBy: json["modifiedBy"],
modifiedOn: json["modifiedOn"],
);
Map<String, dynamic> toJson() => {
"requestType": requestType,
"requestTypeName": requestTypeName,
"requestStatusName": requestStatusName,
"requestStatus": requestStatus,
"cityName": cityName,
"vehicleTypeName": vehicleTypeName,
"countryName": countryName,
"customerName": customerName,
"serviceProviders": serviceProviders,
"offerCount": offerCount,
"id": id,
"customerID": customerId,
"customer": customer,
"brand": brand,
"model": model,
"year": year,
"isNew": isNew,
"description": description,
"requestImages": List<dynamic>.from(requestImages.map((x) => x)),
"cityID": cityId,
"city": city,
"price": price,
"paymentStatus": paymentStatus,
"vehicleTypeID": vehicleTypeId,
"countryID": countryId,
"requestProviderItem": List<dynamic>.from(requestProviderItem.map((x) => x)),
"isActive": isActive,
"createdBy": createdBy,
"createdOn": createdOn.toIso8601String(),
"modifiedBy": modifiedBy,
"modifiedOn": modifiedOn,
};
}

@ -1,60 +0,0 @@
class OffersUnreadChatModel {
final int reqTotal;
final List<OffersUnreadChatDataModel> reqChatUnread;
OffersUnreadChatModel({
required this.reqTotal,
required this.reqChatUnread,
});
factory OffersUnreadChatModel.fromJson(Map<String, dynamic> json) {
return OffersUnreadChatModel(
reqTotal: json['total'],
reqChatUnread: (json['reqChatCountData'] as List).map((e) => OffersUnreadChatDataModel.fromJson(e)).toList(),
);
}
}
class OffersUnreadChatDataModel {
String reqTitle;
int reqTotal;
int requestID;
String senderUserID;
int unreadMessagesCount;
String lastChatTime;
String lastChatText;
String customerName;
OffersUnreadChatDataModel({
required this.reqTitle,
required this.reqTotal,
required this.requestID,
required this.senderUserID,
required this.unreadMessagesCount,
required this.lastChatTime,
required this.lastChatText,
required this.customerName,
});
factory OffersUnreadChatDataModel.fromJson(Map<String, dynamic> json) {
return OffersUnreadChatDataModel(
reqTitle: json['reqTitle'],
reqTotal: json['reqTotal'],
requestID: json['requestID'],
senderUserID: json['senderUserID'],
unreadMessagesCount: json['unreadMessagesCount'],
lastChatTime: json['lastChatTime'],
lastChatText: json['lastChatText'],
customerName: json['customerName'],
);
}
}
// "reqTitle": "Spare_Parts / Ford / Edge / 2016",
// I/flutter (16941): "reqTotal": 1,
// I/flutter (16941): "requestID": 145,
// I/flutter (16941): "senderUserID": "b56bc6bd-e45c-4644-b7c4-08dd02460895",
// I/flutter (16941): "unreadMessagesCount": 0,
// I/flutter (16941): "lastChatTime": "2025-02-12T10:33:42.1433333",
// I/flutter (16941): "lastChatText": "I am accepting this offer.",
// I/flutter (16941): "customerName": "Faiz 100"

@ -1,112 +0,0 @@
import 'dart:developer';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/main.dart';
import 'package:mc_common_app/models/chat_models/chat_message_model.dart';
import 'package:mc_common_app/utils/enums.dart';
class ProviderOffersModel {
int? id;
int? customerID;
int? requestType;
int? requestStatus;
String? brand;
String? model;
int? year;
bool? isNew;
String? description;
double? price;
int? spOfferCount;
List<ServiceProvidersOffers>? serviceProviders;
ProviderOffersModel({
this.id,
this.customerID,
this.requestType,
this.requestStatus,
this.brand,
this.model,
this.year,
this.isNew,
this.description,
this.price,
this.spOfferCount,
this.serviceProviders,
});
ProviderOffersModel.fromJson(Map<String, dynamic> json, int? reqId) {
id = json['id'];
customerID = json['customerID'];
requestType = json['requestType'];
requestStatus = json['requestStatus'];
brand = json['brand'];
model = json['model'];
year = json['year'];
isNew = json['isNew'];
description = json['description'];
price = json['price'];
spOfferCount = json['spOfferCount'];
if (json['serviceProviders'] != null) {
serviceProviders = <ServiceProvidersOffers>[];
json['serviceProviders'].forEach((v) {
serviceProviders!.add(ServiceProvidersOffers.fromJson(v, reqId));
});
}
}
}
class ServiceProvidersOffers {
String? providerUserId;
int? providerId;
String? name;
String? mobileNo;
String? email;
String? companyName;
String? createdOn;
RequestOfferStatusEnum? requestOfferStatusEnum;
int? offerCount;
int? requestId;
String? providerAddress;
String? providerLatitude;
String? providerLongitude;
List<ChatMessageModel>? chatMessages;
ServiceProvidersOffers({
this.providerId,
this.name,
this.mobileNo,
this.email,
this.companyName,
this.offerCount,
this.requestId,
this.chatMessages,
this.providerUserId,
this.createdOn,
this.requestOfferStatusEnum,
this.providerAddress,
this.providerLatitude,
this.providerLongitude,
});
ServiceProvidersOffers.fromJson(Map<String, dynamic> json, int? reqId) {
providerId = json['providerID'];
providerUserId = json['providerUserID'];
name = json['name'];
mobileNo = json['mobileNo'];
email = json['email'];
companyName = json['companyName'];
offerCount = json['offerCount'];
requestId = reqId;
createdOn = json['createdOn'];
requestOfferStatusEnum = ((json['offerStatusLast']) as int).toRequestOfferStatusEnum();
providerAddress = json['address'] ?? "";
providerLatitude = json['latititude'] ?? "0.0";
providerLongitude = json['langitude'] ?? "0.0";
chatMessages = [];
}
@override
String toString() {
return 'ServiceProvidersOffers{providerUserId: $providerUserId, providerId: $providerId, name: $name, mobileNo: $mobileNo, email: $email, companyName: $companyName,offeredItemCreatedOn: $createdOn, requestOfferStatusEnum: $requestOfferStatusEnum, offerCount: $offerCount, chatMessages: $chatMessages}';
}
}

@ -1,158 +0,0 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/utils/enums.dart';
class ProviderOffersChatsModel {
int? id;
int? requestID;
int? serviceProviderID;
ServiceProviderModel? serviceProvider;
int? offerStatus;
RequestOfferStatusEnum? requestOfferStatusEnum;
String? offerStatusText;
String? comment;
String? customerName;
double? price;
String? serviceItem;
String? offeredItemCreatedBy;
String? offeredItemCreatedByName;
String? offeredItemCreatedOn;
String? reqOfferImages;
bool? isDeliveryAvailable;
String? createdOn;
ProviderOffersChatsModel({
this.id,
this.requestID,
this.serviceProviderID,
this.serviceProvider,
this.offerStatus,
this.requestOfferStatusEnum,
this.offerStatusText,
this.comment,
this.customerName,
this.price,
this.serviceItem,
this.offeredItemCreatedBy,
this.offeredItemCreatedByName,
this.offeredItemCreatedOn,
this.reqOfferImages,
this.isDeliveryAvailable,
this.createdOn,
});
ProviderOffersChatsModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
requestID = json['requestID'];
serviceProviderID = json['serviceProviderID'];
serviceProvider = json['serviceProvider'] != null ? ServiceProviderModel.fromJson(json['serviceProvider']) : null;
offerStatus = json['offerStatus'];
requestOfferStatusEnum = ((json['offerStatus']) as int).toRequestOfferStatusEnum();
offerStatusText = json['offerStatusText'];
comment = json['comment'];
customerName = json['customerName'];
price = json['price'];
serviceItem = json['serviceItem'];
offeredItemCreatedBy = json['offeredItemCreatedBy'];
offeredItemCreatedByName = json['offeredItemCreatedByName'];
offeredItemCreatedOn = json['offeredItemCreatedOn'];
reqOfferImages = json['reqOfferImages'];
isDeliveryAvailable = json['isDeliveryAvailable'];
createdOn = json['createdOn'];
}
}
class ServiceProviderModel {
int? providerId;
String? providerGUID;
String? firstName;
String? lastName;
String? name;
int? gender;
String? genderName;
String? mobileNo;
String? email;
bool? isEmailVerified;
bool? isCompleted;
int? city;
String? cityName;
int? country;
String? countryName;
int? accountStatus;
String? accountStatusText;
int? activityStatus;
String? activityStatusText;
String? bankName;
String? iBanNo;
bool? isActive;
String? subscriptionDate;
String? createdOn;
String? companyName;
String? currency;
String? branch;
bool? isChatted;
bool? isDealership;
ServiceProviderModel({
this.providerId,
this.providerGUID,
this.firstName,
this.lastName,
this.name,
this.gender,
this.genderName,
this.mobileNo,
this.email,
this.isEmailVerified,
this.isCompleted,
this.city,
this.cityName,
this.country,
this.countryName,
this.accountStatus,
this.accountStatusText,
this.activityStatus,
this.activityStatusText,
this.bankName,
this.iBanNo,
this.isActive,
this.subscriptionDate,
this.createdOn,
this.companyName,
this.currency,
this.branch,
this.isChatted,
this.isDealership,
});
ServiceProviderModel.fromJson(Map<String, dynamic> json) {
providerId = json['providerId'];
providerGUID = json['providerGUID'];
firstName = json['firstName'];
lastName = json['lastName'];
name = json['name'];
gender = json['gender'];
genderName = json['genderName'];
mobileNo = json['mobileNo'];
email = json['email'];
isEmailVerified = json['isEmailVerfied'];
isCompleted = json['isCompleted'];
city = json['city'];
cityName = json['cityName'];
country = json['country'];
countryName = json['countryName'];
accountStatus = json['accountStatus'];
accountStatusText = json['accountStatusText'];
activityStatus = json['activityStatus'];
activityStatusText = json['activityStatusText'];
bankName = json['bankName'];
iBanNo = json['iBanNo'];
isActive = json['isActive'];
subscriptionDate = json['subscriptionDate'];
createdOn = json['createdOn'];
companyName = json['companyName'];
currency = json['currency'];
branch = json['branch'];
isChatted = json['isChatted'];
isDealership = json['isDealership'];
}
}

@ -1,154 +0,0 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart';
import 'package:mc_common_app/models/chat_models/chat_message_model.dart';
import 'package:mc_common_app/utils/enums.dart';
class RequestModel {
int requestType;
String requestTypeName;
String requestStatusName;
RequestStatusEnum requestStatus;
int? shippingStatus;
ShippingRequestStatusEnum? shippingStatusEnum;
SelfPickupRequestStatusEnum? selfPickupRequestStatusEnum;
String cityName;
String vehicleTypeName;
String countryName;
String customerName;
String customerID;
String address;
String additionalAddressDetails;
dynamic serviceProviders;
int offerCount;
int id;
int customerId;
bool isChatted;
bool isOfferAccepted;
RequestDeliveryOptionEnum offerDeliveryOption;
RequestDeliveryOptionEnum selectedDeliveryOptionByCustomer;
String customerUserID;
dynamic customer;
String brand;
String model;
int year;
bool isNew;
String description;
List<GenericImageModel>? requestImages;
int cityId;
dynamic city;
double price;
int paymentStatus;
int vehicleTypeId;
int countryId;
List<dynamic> requestProviderItem;
bool isActive;
int createdBy;
String? createdOn;
int? modifiedBy;
String? modifiedOn;
List<ChatMessageModel> chatMessages;
RequestModel({
required this.requestType,
required this.requestTypeName,
required this.requestStatusName,
required this.requestStatus,
required this.shippingStatus,
required this.shippingStatusEnum,
required this.selfPickupRequestStatusEnum,
required this.cityName,
required this.vehicleTypeName,
required this.countryName,
required this.customerName,
required this.customerID,
required this.serviceProviders,
required this.offerCount,
required this.id,
required this.customerId,
required this.isChatted,
required this.isOfferAccepted,
required this.offerDeliveryOption,
required this.selectedDeliveryOptionByCustomer,
required this.customerUserID,
required this.customer,
required this.address,
required this.additionalAddressDetails,
required this.brand,
required this.model,
required this.year,
required this.isNew,
required this.description,
required this.requestImages,
required this.cityId,
required this.city,
required this.price,
required this.paymentStatus,
required this.vehicleTypeId,
required this.countryId,
required this.requestProviderItem,
required this.isActive,
required this.createdBy,
required this.createdOn,
required this.modifiedBy,
required this.modifiedOn,
required this.chatMessages,
});
List<GenericImageModel> populateRequestImages(value) {
List<GenericImageModel> images = [];
if (value != null) {
value.forEach((v) {
images.add(GenericImageModel.fromJson(v));
});
}
return images;
}
factory RequestModel.fromJson(Map<String, dynamic> json) {
return RequestModel(
requestType: json["requestType"],
requestTypeName: json["requestTypeName"],
requestStatusName: json["requestStatusName"],
requestStatus: (json['requestStatus'] as int).toRequestStatusEnum(),
shippingStatus: json['shippingRequestStatus'],
shippingStatusEnum: json['shippingRequestStatus'] != null ? (json['shippingRequestStatus'] as int).toShippingStatusEnum() : ShippingRequestStatusEnum.pending,
selfPickupRequestStatusEnum: json['selfPickupRequestStatus'] != null ? (json['selfPickupRequestStatus'] as int).toSelfPickupStatusEnum() : SelfPickupRequestStatusEnum.preparingToCollect,
cityName: json["cityName"],
vehicleTypeName: json["vehicleTypeName"],
countryName: json["countryName"],
customerName: json["customerName"] ?? "",
address: json["address"] ?? "",
additionalAddressDetails: json['additionalAddress'] ?? "",
customerID: json["customerUserID"],
serviceProviders: json["serviceProviders"],
offerCount: json["offerCount"],
id: json["id"],
customerId: json["customerID"],
isChatted: json["isChatted"],
isOfferAccepted: json["isOfferAccepted"],
offerDeliveryOption: ((json["offerDeliveryOption"] ?? 0) as int).toRequestDeliveryOptionEnum(),
selectedDeliveryOptionByCustomer: ((json["deliveryOption"] ?? 0) as int).toRequestDeliveryOptionEnum(),
customerUserID: json["customerUserID"],
customer: json["customer"],
brand: json["brand"],
model: json["model"],
year: json["year"],
isNew: json["isNew"],
description: json["description"],
requestImages: List<GenericImageModel>.from(json["requestImages"].map((x) => GenericImageModel.fromJson(x))),
cityId: json["cityID"],
city: json["city"],
price: json["price"],
paymentStatus: json["paymentStatus"],
vehicleTypeId: json["vehicleTypeID"],
countryId: json["countryID"],
requestProviderItem: List<dynamic>.from(json["requestProviderItem"].map((x) => x)),
isActive: json["isActive"],
createdBy: json["createdBy"],
createdOn: json["createdOn"],
modifiedBy: json["modifiedBy"],
modifiedOn: json["modifiedOn"],
chatMessages: [],
);
}
}

@ -42,7 +42,7 @@ class ItemData {
final String? price;
final String? manufactureDate;
final String? description;
final String? pictureUrl;
final dynamic pictureUrl;
final int? companyId;
final int? serviceProviderServiceId;
final String? serviceProviderServiceDescription;

@ -1,6 +1,4 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/services_models/item_model.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/models/services/item_model.dart';
class ServiceModel {
final int? serviceProviderServiceId;
@ -11,21 +9,19 @@ class ServiceModel {
final String? serviceDescription;
final String? serviceDescriptionN;
final int? serviceStatus;
final ServiceStatusEnum? serviceStatusEnum;
final dynamic statusText;
final bool? isAllowAppointment;
final bool? isAllowAppointmentHome;
final int? customerLocationRange;
String? rangePricePerKm;
final String? rangePricePerKm;
final int? itemsCount;
List<ItemData>? serviceItems;
bool isExpandedOrSelected;
int providerServiceId;
String providerServiceName;
bool isHomeSelected;
String homeLocation;
double currentTotalServicePrice;
CurrentLocationInfoModel servicelocationInfo;
bool isActive;
ServiceModel({
this.serviceProviderServiceId,
@ -36,7 +32,6 @@ class ServiceModel {
this.serviceDescription,
this.serviceDescriptionN,
this.serviceStatus,
this.serviceStatusEnum,
this.statusText,
this.isAllowAppointment,
this.isAllowAppointmentHome,
@ -45,12 +40,11 @@ class ServiceModel {
this.itemsCount,
this.serviceItems,
this.isHomeSelected = false,
this.homeLocation = "",
this.currentTotalServicePrice = 0.0,
this.isActive = true,
required this.isExpandedOrSelected,
required this.providerServiceId,
required this.providerServiceName,
required this.servicelocationInfo,
});
factory ServiceModel.fromJson(Map<String, dynamic> json, {bool isForAppointment = false}) => ServiceModel(
@ -62,12 +56,11 @@ class ServiceModel {
serviceDescription: json["serviceDescription"] ?? json["serviceName"],
serviceDescriptionN: json["serviceDescriptionN"] ?? json["serviceNameN"],
serviceStatus: json["serviceStatus"],
serviceStatusEnum: ((json["serviceStatus"] ?? 0) as int).toServiceStatusEnum(),
statusText: json["statusText"],
isAllowAppointment: json["isAllowAppointment"],
isAllowAppointmentHome: json["isAllowAppointmentHome"],
customerLocationRange: json["customerLocationRange"],
rangePricePerKm: json["rangePricePerKm"]?.toString(),
rangePricePerKm: json["rangePricePerKm"].toString(),
itemsCount: json["itemsCount"],
serviceItems: isForAppointment
? json["serviceItemList"] == null
@ -78,10 +71,9 @@ class ServiceModel {
: List<ItemData>.from(json["branchServiceItems"]!.map((x) => ItemData.fromJson(x))),
isExpandedOrSelected: false,
providerServiceId: 0,
providerServiceName: json['serviceName'] ?? "",
providerServiceName: "",
isHomeSelected: false,
isActive: json["isActive"] ?? true,
servicelocationInfo: CurrentLocationInfoModel(address: '', distanceToBranch: 0.0, homeChargesInCurrentService: 0.0, latitude: 0.0, longitude: 0.0),
homeLocation: "",
);
Map<String, dynamic> toJson() => {
@ -107,24 +99,3 @@ class ServiceModel {
return 'ServiceModel{serviceProviderServiceId: $serviceProviderServiceId, providerServiceDescription: $providerServiceDescription, categoryId: $categoryId, categoryName: $categoryName, serviceId: $serviceId, serviceDescription: $serviceDescription, serviceDescriptionN: $serviceDescriptionN, serviceStatus: $serviceStatus, statusText: $statusText, isAllowAppointment: $isAllowAppointment, isAllowAppointmentHome: $isAllowAppointmentHome, customerLocationRange: $customerLocationRange, rangePricePerKm: $rangePricePerKm, itemsCount: $itemsCount, serviceItems: $serviceItems, isExpandedOrSelected: $isExpandedOrSelected}';
}
}
class CurrentLocationInfoModel {
String address;
double latitude;
double longitude;
double distanceToBranch;
double homeChargesInCurrentService;
CurrentLocationInfoModel({
required this.address,
required this.latitude,
required this.longitude,
required this.distanceToBranch,
required this.homeChargesInCurrentService,
});
@override
String toString() {
return 'CurrentLocationInfoModel{address: $address, latitude: $latitude, longitude: $longitude, distanceToBranch: $distanceToBranch, homeChargesInCurrentService: $homeChargesInCurrentService}';
}
}

@ -1,30 +0,0 @@
import 'package:mc_common_app/view_models/ad_view_model.dart';
class AppInfoModel {
int? id;
String? header;
String? content;
bool? isActive;
int? channel;
List<ImageModel>? images;
AppInfoModel({this.id, this.header, this.content, this.isActive, this.channel, this.images});
AppInfoModel.fromJson(Map<String, dynamic> json, {bool isForTermsAndCondition = false}) {
String imagesKey = "appInfoImages";
if (isForTermsAndCondition) {
imagesKey = "termAndConditionImages";
}
id = json['id'];
header = json['header'];
content = json['content'];
isActive = json['isActive'];
channel = json['channel'];
if (json[imagesKey] != null) {
images = <ImageModel>[];
json[imagesKey].forEach((v) {
images!.add(ImageModel.fromJson(v));
});
}
}
}

@ -1,26 +0,0 @@
class AppInvitationHistoryModel {
int? id;
int? customerID;
int? channelID;
int? appInvitationEnumID;
int? noOfInvites;
String? comments;
AppInvitationHistoryModel({
this.id,
this.customerID,
this.channelID,
this.appInvitationEnumID,
this.noOfInvites,
this.comments,
});
AppInvitationHistoryModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
customerID = json['customerID'];
channelID = json['channelID'];
appInvitationEnumID = json['appInvitationEnumID'];
noOfInvites = json['noofInvites'];
comments = json['comments'];
}
}

@ -1,36 +0,0 @@
import 'package:mc_common_app/view_models/ad_view_model.dart';
class ContactInfoModel {
int? id;
String? companyName;
String? mobileNo;
String? phoneNo;
String? email;
String? address;
String? latitude;
String? longitude;
int? channel;
bool? isActive;
List<ImageModel>? contactInfoImages;
ContactInfoModel({this.id, this.companyName, this.mobileNo, this.phoneNo, this.email, this.address, this.latitude, this.longitude, this.channel, this.isActive, this.contactInfoImages});
ContactInfoModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
companyName = json['companyName'];
mobileNo = json['mobileNo'];
phoneNo = json['phoneNo'];
email = json['email'];
address = json['address'];
latitude = json['latitude'];
longitude = json['longitude'];
channel = json['channel'];
isActive = json['isActive'];
if (json['contactInfoImages'] != null) {
contactInfoImages = <ImageModel>[];
json['contactInfoImages'].forEach((v) {
contactInfoImages!.add(ImageModel.fromJson(v));
});
}
}
}

@ -1,32 +0,0 @@
class FAQsModel {
int? id;
String? question;
String? answer;
int? sequenceNo;
bool? isActive;
int? channel;
bool? isCollapsed;
FAQsModel({this.id, this.question, this.answer, this.sequenceNo, this.isActive, this.channel, this.isCollapsed});
FAQsModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
question = json['question'];
answer = json['answer'];
sequenceNo = json['sequenceNo'];
isActive = json['isActive'];
channel = json['channel'];
isCollapsed = false;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['question'] = question;
data['answer'] = answer;
data['sequenceNo'] = sequenceNo;
data['isActive'] = isActive;
data['channel'] = channel;
return data;
}
}

@ -1,83 +0,0 @@
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/utils/enums.dart';
class ShippingRequestModel {
int? id;
int? requestID;
Request? request;
int? pickupOrshippingStatus;
ShippingRequestStatusEnum? shippingStatusEnum;
SelfPickupRequestStatusEnum? selfPickupRequestStatusEnum;
String? deliveredorCollectedOn;
String? comment;
String? createdOn;
int? customerID;
String? customerName;
int? vehicleTypeID;
String? vehicleType;
ShippingRequestModel({
this.id,
this.requestID,
this.request,
this.pickupOrshippingStatus,
this.deliveredorCollectedOn,
this.comment,
this.createdOn,
this.customerID,
this.customerName,
this.vehicleTypeID,
this.vehicleType,
});
ShippingRequestModel.fromJsonShipping(Map<String, dynamic> json, bool isForShipping) {
id = json['id'];
requestID = json['requestID'];
request = json['request'] != null ? Request.fromJson(json['request']) : null;
pickupOrshippingStatus = isForShipping ? json['shippingStatus'] : json['selfPickUpStatus'];
shippingStatusEnum = isForShipping ? (json['shippingStatus'] != null ? (json['shippingStatus'] as int).toShippingStatusEnum() : ShippingRequestStatusEnum.initiated) : null;
selfPickupRequestStatusEnum =
isForShipping ? null : (json['selfPickUpStatus'] != null ? (json['selfPickUpStatus'] as int).toSelfPickupStatusEnum() : SelfPickupRequestStatusEnum.preparingToCollect);
deliveredorCollectedOn = isForShipping ? json['deliveredOn'] : json['collectedOn'];
comment = json['comment'];
createdOn = json['createdOn'];
customerID = json['customerID'];
customerName = json['customerName'];
vehicleTypeID = json['vehicleTypeID'];
vehicleType = json['vehicleType'];
}
}
class Request {
int? requestType;
String? brand;
String? model;
int? year;
bool? isNew;
String? description;
double? price;
Request({this.requestType, this.brand, this.model, this.year, this.isNew, this.description, this.price});
Request.fromJson(Map<String, dynamic> json) {
requestType = json['requestType'];
brand = json['brand'];
model = json['model'];
year = json['year'];
isNew = json['isNew'];
description = json['description'];
price = json['price'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['requestType'] = requestType;
data['brand'] = brand;
data['model'] = model;
data['year'] = year;
data['isNew'] = isNew;
data['description'] = description;
data['price'] = price;
return data;
}
}

@ -1,32 +0,0 @@
class BranchSelectionModel {
int branchId;
String branchName;
bool isSelected;
bool isOpend;
List<UserSelectionModel> usersList;
BranchSelectionModel
({
required
this
.
branchId,
required this.branchName,
required this.isSelected,
this.isOpend = false,
required this.usersList,
});
}
class UserSelectionModel {
int userId;
String userName;
bool isSelected;
UserSelectionModel(
{required this.userId, required this.userName, required this.isSelected});
}

@ -1,98 +0,0 @@
import 'dart:convert';
class ProviderSubscriptionModel {
int? id;
int? subscriptionAppliedId;
int? serviceProviderId;
String? subscriptionName;
String? subscriptionDescription;
DateTime? dateStart;
DateTime? dateEnd;
int? branchesRemaining;
int? subUsersRemaining;
int? subscriptionID;
int? adsRemaining;
bool? isExpired;
bool? isActive;
bool? isUpgradeNow;
bool? isUpgradeLater;
bool? isTrialSubscription;
dynamic currentSubscription;
int? totalBranches;
int? totalSubUsers;
int? totalAds;
ProviderSubscriptionModel({
this.id,
this.subscriptionAppliedId,
this.serviceProviderId,
this.subscriptionName,
this.subscriptionDescription,
this.dateStart,
this.dateEnd,
this.branchesRemaining,
this.subUsersRemaining,
this.adsRemaining,
this.isExpired,
this.isActive,
this.isUpgradeNow,
this.isUpgradeLater,
this.isTrialSubscription,
this.currentSubscription,
this.subscriptionID,
this.totalAds,
this.totalBranches,
this.totalSubUsers,
});
factory ProviderSubscriptionModel.fromRawJson(String str) => ProviderSubscriptionModel.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
factory ProviderSubscriptionModel.fromJson(Map<String, dynamic> json) => ProviderSubscriptionModel(
id: json["id"],
subscriptionAppliedId: json["subscriptionAppliedID"],
serviceProviderId: json["serviceProviderID"],
subscriptionID: json["subscriptionID"],
subscriptionName: json["subscriptionName"],
subscriptionDescription: json["subscriptionDescription"],
dateStart: json["dateStart"] == null ? null : DateTime.parse(json["dateStart"]),
dateEnd: json["dateEnd"] == null ? null : DateTime.parse(json["dateEnd"]),
branchesRemaining: json["branchesRemaining"],
subUsersRemaining: json["subUsersRemaining"],
adsRemaining: json["adsRemaining"],
isExpired: json["isExpired"],
isActive: json["isActive"],
isUpgradeNow: json["isUpgradeNow"],
isUpgradeLater: json["isUpgradeLater"],
isTrialSubscription: json["isTrialSubscription"],
currentSubscription: json["currentSubscription"],
totalBranches: json["totalBranches"],
totalAds: json["totalAds"],
totalSubUsers: json["totalSubUsers"],
);
Map<String, dynamic> toJson() => {
"id": id,
"subscriptionAppliedID": subscriptionAppliedId,
"serviceProviderID": serviceProviderId,
"subscriptionID": subscriptionID,
"subscriptionName": subscriptionName,
"subscriptionDescription": subscriptionDescription,
"dateStart": dateStart?.toIso8601String(),
"dateEnd": dateEnd?.toIso8601String(),
"branchesRemaining": branchesRemaining,
"subUsersRemaining": subUsersRemaining,
"adsRemaining": adsRemaining,
"isExpired": isExpired,
"isActive": isActive,
"isUpgradeNow": isUpgradeNow,
"isUpgradeLater": isUpgradeLater,
"isTrialSubscription": isTrialSubscription,
"currentSubscription": currentSubscription,
"totalAds": totalAds,
"totalSubUsers": totalSubUsers,
"totalBranches": totalBranches,
};
}

@ -1,128 +0,0 @@
// To parse this JSON data, do
//
// final subscription = subscriptionFromJson(jsonString);
import 'dart:convert';
import 'package:mc_common_app/extensions/string_extensions.dart';
import '../../utils/enums.dart';
Subscription subscriptionFromJson(String str) => Subscription.fromJson(json.decode(str));
class SubscriptionModel {
SubscriptionModel({
this.messageStatus,
this.totalItemsCount,
this.data,
this.message,
});
int? messageStatus;
int? totalItemsCount;
List<Subscription>? data;
String? message;
factory SubscriptionModel.fromJson(Map<String, dynamic> json) => SubscriptionModel(
messageStatus: json["messageStatus"],
totalItemsCount: json["totalItemsCount"],
data: json["data"] == null ? [] : List<Subscription>.from(json["data"]!.map((x) => Subscription.fromJson(x))),
message: json["message"],
);
}
class Subscription {
Subscription(
{this.id,
this.name,
this.description,
this.durationName,
this.durationDays,
this.price,
this.currency,
this.countryId,
this.countryName,
this.isSubscribed,
this.subscriptionAppliedId,
this.serviceProviderId,
this.dateStart,
this.dateEnd,
this.isExpired,
this.isActive,
this.subscriptionTypeEnum,
this.isMyCurrentPackage,
this.isRenewable,
this.subscriptionBranches,
this.subscriptionSubUsers,
this.subscriptionAds,
this.totalBranches,
this.totalSubUsers,
this.totalAds,
this.branchesRemaining,
this.subUsersRemaining,
this.subscriptionType,
this.adsRemaining});
int? id;
String? name;
String? description;
String? durationName;
int? durationDays;
double? price;
String? currency;
int? countryId;
String? countryName;
bool? isSubscribed;
int? subscriptionAppliedId;
int? serviceProviderId;
String? dateStart;
String? dateEnd;
bool? isExpired;
bool? isActive;
SubscriptionTypeEnum? subscriptionTypeEnum;
bool? isMyCurrentPackage;
bool? isRenewable;
int? subscriptionType;
int? subscriptionBranches;
int? subscriptionSubUsers;
int? subscriptionAds;
int? totalBranches;
int? totalSubUsers;
int? totalAds;
int? branchesRemaining;
int? subUsersRemaining;
int? adsRemaining;
factory Subscription.fromJson(Map<String, dynamic> json) => Subscription(
id: json["id"],
name: json["name"],
description: json["description"],
durationName: json["durationName"],
durationDays: json["durationDays"],
price: json["price"]?.toDouble(),
currency: json["currency"],
countryId: json["countryID"],
countryName: json["countryName"],
isSubscribed: json["isSubscribed"],
subscriptionAppliedId: json["subscriptionAppliedID"],
serviceProviderId: json["serviceProviderID"],
dateStart: json["dateStart"],
dateEnd: json["dateEnd"],
isExpired: json["isExpired"],
isActive: json["isActive"],
isMyCurrentPackage: false,
isRenewable: json["isRenewable"],
subscriptionTypeEnum: json["subscriptionType"] == null ? null : ((json['subscriptionType']) as int).toSubscriptionTypeEnum(),
subscriptionBranches: json["subscriptionBranches"],
subscriptionSubUsers: json["subscriptionSubUsers"],
subscriptionAds: json["subscriptionAds"],
totalBranches: json["totalBranches"],
totalSubUsers: json["totalBranches"],
totalAds: json["totalAds"],
branchesRemaining: json["branchesRemaining"],
subUsersRemaining: json["subUsersRemaining"],
adsRemaining: json["adsRemaining"],
subscriptionType: json["subscriptionType"],
);
}

@ -0,0 +1,48 @@
class BranchUser {
int id;
String? userId;
int? serviceProviderId;
int? dealershipUserID;
String firstName;
String lastName;
String mobileNo;
String email;
bool isBranchUser;
BranchUser({
required this.id,
required this.userId,
required this.serviceProviderId,
required this.dealershipUserID,
required this.firstName,
required this.lastName,
required this.mobileNo,
required this.email,
required this.isBranchUser,
});
factory BranchUser.fromJson(Map<String, dynamic> json) =>
BranchUser(
id: json["id"],
userId: json.containsKey("userID") ? json["userID"] : null,
serviceProviderId: json.containsKey("serviceProviderID") ? json["serviceProviderID"] : null,
dealershipUserID: json.containsKey("dealershipUserID") ? json["dealershipUserID"] : null,
firstName: json["firstName"],
lastName: json["lastName"],
mobileNo: json["mobileNo"],
email: json["email"],
isBranchUser: json.containsKey("isBranchUser") ? json["isBranchUser"] : false,
);
Map<String, dynamic> toJson() =>
{
"id": id,
"userID": userId,
"serviceProviderID": serviceProviderId,
"firstName": firstName,
"lastName": lastName,
"mobileNo": mobileNo,
"email": email,
"isBranchUser": isBranchUser,
};
}

@ -22,17 +22,17 @@ class Role {
String? message;
factory Role.fromJson(Map<String, dynamic> json) => Role(
totalItemsCount: json["totalItemsCount"],
totalItemsCount: json["totalItemsCount"] == null ? null : json["totalItemsCount"],
data: json["data"] == null ? null : List<RoleData>.from(json["data"].map((x) => RoleData.fromJson(x))),
messageStatus: json["messageStatus"],
message: json["message"],
messageStatus: json["messageStatus"] == null ? null : json["messageStatus"],
message: json["message"] == null ? null : json["message"],
);
Map<String, dynamic> toJson() => {
"totalItemsCount": totalItemsCount,
"totalItemsCount": totalItemsCount == null ? null : totalItemsCount,
"data": data == null ? null : List<dynamic>.from(data!.map((x) => x.toJson())),
"messageStatus": messageStatus,
"message": message,
"messageStatus": messageStatus == null ? null : messageStatus,
"message": message == null ? null : message,
};
}
@ -50,16 +50,16 @@ class RoleData {
bool? isActive;
factory RoleData.fromJson(Map<String, dynamic> json) => RoleData(
id: json["id"],
roleName: json["roleName"],
roleNameN: json["roleNameN"],
isActive: json["isActive"],
id: json["id"] == null ? null : json["id"],
roleName: json["roleName"] == null ? null : json["roleName"],
roleNameN: json["roleNameN"] == null ? null : json["roleNameN"],
isActive: json["isActive"] == null ? null : json["isActive"],
);
Map<String, dynamic> toJson() => {
"id": id,
"roleName": roleName,
"roleNameN": roleNameN,
"isActive": isActive,
"id": id == null ? null : id,
"roleName": roleName == null ? null : roleName,
"roleNameN": roleNameN == null ? null : roleNameN,
"isActive": isActive == null ? null : isActive,
};
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save