Merge branch 'refs/heads/master' into aamir_dev

# Conflicts:
#	lib/view_models/dashboard_view_model.dart
aamir_dev
Aamir.Muhammad 2 years ago
commit 7084261352

@ -22,6 +22,7 @@ if (flutterVersionName == null) {
} }
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
@ -43,7 +44,7 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.ejadaa.hmg" applicationId "com.cloud.solutions.mowater.ksa.provider"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 33 targetSdkVersion 33
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
@ -65,4 +66,6 @@ flutter {
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation platform('com.google.firebase:firebase-bom:33.1.2')
// implementation 'com.google.firebase:firebase-analytics'
} }

@ -1,39 +1,26 @@
{ {
"project_info": { "project_info": {
"project_number": "815750722565", "project_number": "294636898500",
"firebase_url": "https://api-project-815750722565.firebaseio.com", "project_id": "mowater-2c81a",
"project_id": "api-project-815750722565", "storage_bucket": "mowater-2c81a.appspot.com"
"storage_bucket": "api-project-815750722565.appspot.com"
}, },
"client": [ "client": [
{ {
"client_info": { "client_info": {
"mobilesdk_app_id": "1:815750722565:android:62281cd3e5df4063", "mobilesdk_app_id": "1:294636898500:android:e93b7e5d1cc15ae6b0e191",
"android_client_info": { "android_client_info": {
"package_name": "com.ejada.hmg" "package_name": "com.cloud.solutions.mowater.ksa.provider"
} }
}, },
"oauth_client": [ "oauth_client": [],
{
"client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [ "api_key": [
{ {
"current_key": "AIzaSyDUfg6AKM1-00WyzpvLImUBC46wFrq9-qw" "current_key": "AIzaSyD1WNNGrbBiCNvCrI31d3DV5AOgToq-Lus"
} }
], ],
"services": { "services": {
"analytics_service": {
"status": 1
},
"appinvite_service": { "appinvite_service": {
"status": 1,
"other_platform_oauth_client": [] "other_platform_oauth_client": []
},
"ads_service": {
"status": 2
} }
} }
} }

@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.car_provider_app"> package="com.cloud.solutions.mowater.ksa.provider">
<!-- Flutter needs it to communicate with the running application <!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->

@ -1,11 +1,14 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.car_provider_app"> package="com.cloud.solutions.mowater.ksa.provider">
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.USE_FINGERPRINT"/> <uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<!-- Devices running Android 13 (API level 33) or higher --> <!-- Devices running Android 13 (API level 33) or higher -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
@ -15,15 +18,15 @@
<application <application
android:label="car_provider_app" android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_launcher"> android:label="Provider">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:exported="true" android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as <!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user the Android process has started. This theme is visible to the user
@ -31,26 +34,30 @@
to determine the Window background behind the Flutter UI. --> to determine the Window background behind the Flutter UI. -->
<meta-data <meta-data
android:name="io.flutter.embedding.android.NormalTheme" android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" android:resource="@style/NormalTheme" />
/>
<!-- Displays an Android View that continues showing the launch screen <!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of gap between the end of Android's launch screen and the painting of
Flutter's first frame. --> Flutter's first frame. -->
<meta-data <meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable" android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" android:resource="@drawable/launch_background" />
/>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity> </activity>
<meta-data android:name="com.google.android.geo.API_KEY" <meta-data
android:value="AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8"/> android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8" />
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data <meta-data

@ -1,7 +0,0 @@
package com.example.car_provider_app
import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity: FlutterFragmentActivity() {
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.car_provider_app"> package="com.cloud.solutions.mowater.ksa.provider">
<!-- Flutter needs it to communicate with the running application <!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->

@ -8,9 +8,11 @@ buildscript {
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.3.0' classpath 'com.android.tools.build:gradle:7.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.4.2'
} }
} }
allprojects { allprojects {
repositories { repositories {
google() google()

@ -383,7 +383,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderAppp; PRODUCT_BUNDLE_IDENTIFIER = com.cloud.solutions.mowater.ksa.provider;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -511,7 +511,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderAppp; PRODUCT_BUNDLE_IDENTIFIER = com.cloud.solutions.mowater.ksa.provider;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -534,7 +534,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderAppp; PRODUCT_BUNDLE_IDENTIFIER = com.cloud.solutions.mowater.ksa.provider;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;

@ -8,6 +8,16 @@ import GoogleMaps
_ application: UIApplication, _ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool { ) -> Bool {
// This is required to make any communication available in the action isolate.
FlutterLocalNotificationsPlugin.setPluginRegistrantCallback { (registry) in
GeneratedPluginRegistrant.register(with: registry)
}
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate
}
GMSServices.provideAPIKey("AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8") GMSServices.provideAPIKey("AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8")
GeneratedPluginRegistrant.register(with: self) GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions) return super.application(application, didFinishLaunchingWithOptions: launchOptions)

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>AIzaSyAQoUIOm-5FtUqUngK0zvkkF2fafRxsm_I</string>
<key>GCM_SENDER_ID</key>
<string>294636898500</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.cloud.solutions.mowater.ksa.provider.ios</string>
<key>PROJECT_ID</key>
<string>mowater-2c81a</string>
<key>STORAGE_BUCKET</key>
<string>mowater-2c81a.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:294636898500:ios:1e92b79681dff7f1b0e191</string>
</dict>
</plist>

@ -1,7 +1,6 @@
import 'package:mc_common_app/repositories/branch_repo.dart';
import 'package:mc_common_app/repositories/items_repo.dart'; import 'package:mc_common_app/repositories/items_repo.dart';
import 'package:mc_common_app/repositories/schedule_repo.dart'; import 'package:mc_common_app/repositories/schedule_repo.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/repositories/subscription_repo.dart'; import 'package:mc_common_app/repositories/subscription_repo.dart';
class ProviderAppDependencies { class ProviderAppDependencies {

@ -76,38 +76,25 @@ class ProviderAppRoutes {
static final Map<String, WidgetBuilder> routes = { static final Map<String, WidgetBuilder> routes = {
//Home page //Home page
AppRoutes.dashboard: (context) => const DashboardPage(), AppRoutes.dashboard: (context) => const DashboardPage(),
AppRoutes.adsDetailView: (context) => AdsDetailView( AppRoutes.adsDetailView: (context) => AdsDetailView(adDetails: ModalRoute.of(context)!.settings.arguments as AdDetailsModel),
adDetails:
ModalRoute.of(context)!.settings.arguments as AdDetailsModel),
AppRoutes.createAdView: (context) => const CreateAdView(), AppRoutes.createAdView: (context) => const CreateAdView(),
//setting //setting
// defineLicense: (context) => DefineLicensePage(), // defineLicense: (context) => DefineLicensePage(),
dealershipSetting: (context) => DealershipPage(), dealershipSetting: (context) => DealershipPage(),
// branchList: (context) => BranchListPage(), // branchList: (context) => BranchListPage(),
defineBranch: (context) => DefineBranchPage( defineBranch: (context) => DefineBranchPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as BranchDetailModel)),
(ModalRoute.of(context)!.settings.arguments) == null branchDetail: (context) => BranchDetailPage(ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
? null
: (ModalRoute.of(context)!.settings.arguments
as BranchDetailModel)),
branchDetail: (context) => BranchDetailPage(
ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
//Appointments //Appointments
appointment: (context) => AppointmentPage( appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
branch: appointmentDetailList: (context) => const AppointmentDetailListPage(),
ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
appointmentDetailList: (context) => AppointmentDetailListPage(),
updateAppointmentPage: (context) => UpdateAppointmentPage(), updateAppointmentPage: (context) => UpdateAppointmentPage(),
addServiceInAppointment: (context) => AddNewServiceAppointmentPage( addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel),
ModalRoute.of(context)!.settings.arguments as AppointmentListModel),
mergeAppointments: (context) => MergeAppointmentListPage(), mergeAppointments: (context) => MergeAppointmentListPage(),
//Requests //Requests
AppRoutes.requestsDetailPage: (context) => RequestDetailPage( AppRoutes.requestsDetailPage: (context) => RequestDetailPage(requestDetailPageArguments: ModalRoute.of(context)!.settings.arguments as RequestDetailPageArguments),
requestDetailPageArguments: ModalRoute.of(context)!.settings.arguments
as RequestDetailPageArguments,
),
AppRoutes.sendOfferPage: (context) => const SendOfferPage(), AppRoutes.sendOfferPage: (context) => const SendOfferPage(),
//Subscriptions //Subscriptions
@ -116,40 +103,24 @@ class ProviderAppRoutes {
AppRoutes.paymentMethodsView: (context) => PaymentMethodsView(paymentType: ModalRoute.of(context)!.settings.arguments as PaymentTypes), AppRoutes.paymentMethodsView: (context) => PaymentMethodsView(paymentType: ModalRoute.of(context)!.settings.arguments as PaymentTypes),
//Services //Services
dealerUser: (context) => dealerUser: (context) => DealerUserPage(ModalRoute.of(context)!.settings.arguments as String),
DealerUserPage(ModalRoute.of(context)!.settings.arguments as String),
servicesList: (context) => const ServicesListPage(), servicesList: (context) => const ServicesListPage(),
itemsList: (context) => ItemsListPage(), itemsList: (context) => ItemsListPage(),
createItem: (context) => const CreateItemPage(), createItem: (context) => const CreateItemPage(),
//createServices: (context) => CreateServicesPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as ServiceProviderBranch)), //createServices: (context) => CreateServicesPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as ServiceProviderBranch)),
//createServices2: (context) => CreateServicesPage2((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as ServiceProviderBranch)), //createServices2: (context) => CreateServicesPage2((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as ServiceProviderBranch)),
createServices3: (context) => CreateServicesPage3( createServices3: (context) => CreateServicesPage3((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as CreateBranchModel)),
(ModalRoute.of(context)!.settings.arguments) == null
? null
: (ModalRoute.of(context)!.settings.arguments
as CreateBranchModel)),
//Schedules //Schedules
schedulesList: (context) => SchedulesListPage( schedulesList: (context) => SchedulesListPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as String)),
(ModalRoute.of(context)!.settings.arguments) == null
? null
: (ModalRoute.of(context)!.settings.arguments as String)),
addSchedule: (context) => AddSchedulesPage(), addSchedule: (context) => AddSchedulesPage(),
//Branch Duplication //Branch Duplication
matchServices: (context) => MatchedServicesPage( matchServices: (context) => MatchedServicesPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as MatchServicesArguments)),
(ModalRoute.of(context)!.settings.arguments) == null
? null
: (ModalRoute.of(context)!.settings.arguments
as MatchServicesArguments)),
AppRoutes.chatView: (context) => ChatView( AppRoutes.chatView: (context) => ChatView(chatViewArguments: ModalRoute.of(context)!.settings.arguments as ChatViewArguments),
chatViewArguments:
ModalRoute.of(context)!.settings.arguments as ChatViewArguments,
),
//ADS: //ADS:
AppRoutes.selectAdTypeView: (context) => SelectAdTypeView( AppRoutes.selectAdTypeView: (context) => SelectAdTypeView(isProvider: ModalRoute.of(context)!.settings.arguments as bool),
isProvider: ModalRoute.of(context)!.settings.arguments as bool),
}; };
} }

@ -4,11 +4,12 @@ import 'package:mc_common_app/repositories/schedule_repo.dart';
import 'package:car_provider_app/view_models/dashboard_view_model.dart'; import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:car_provider_app/view_models/items_view_model.dart'; import 'package:car_provider_app/view_models/items_view_model.dart';
import 'package:car_provider_app/view_models/schedule_view_model.dart'; import 'package:car_provider_app/view_models/schedule_view_model.dart';
import 'package:mc_common_app/services/firebase_service.dart';
import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/models/general_models/post_params_model.dart'; import 'package:mc_common_app/models/general_models/post_params_model.dart';
import 'package:mc_common_app/repositories/ads_repo.dart'; import 'package:mc_common_app/repositories/ads_repo.dart';
@ -34,18 +35,26 @@ import 'package:mc_common_app/view_models/subscriptions_view_model.dart';
import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
import 'package:firebase_core/firebase_core.dart';
import 'config/provider_routes.dart'; import 'config/provider_routes.dart';
Future<void> main() async { Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
ProviderAppDependencies.addDependencies();
await EasyLocalization.ensureInitialized(); await EasyLocalization.ensureInitialized();
await Firebase.initializeApp(
options: const FirebaseOptions(
apiKey: 'AIzaSyD1WNNGrbBiCNvCrI31d3DV5AOgToq-Lus',
appId: '1:294636898500:android:e93b7e5d1cc15ae6b0e191',
messagingSenderId: '294636898500',
projectId: 'mowater-2c81a',
),
);
ProviderAppDependencies.addDependencies();
injector.get<FirebaseMessagingService>().initializeNotifications();
ProviderAppRoutes.routes.addAll(AppRoutes.routes); ProviderAppRoutes.routes.addAll(AppRoutes.routes);
runApp(MultiProvider( runApp(MultiProvider(
providers: <SingleChildWidget>[ providers: [
ChangeNotifierProvider<BaseVM>( ChangeNotifierProvider<BaseVM>(
create: (_) => BaseVM(), create: (_) => BaseVM(),
), ),

@ -1,15 +1,16 @@
import 'dart:io'; import 'dart:io';
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/settings/branch/dealer/widget/add_phone_num_wiget.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/main.dart';
import 'package:mc_common_app/models/user_models/image_response.dart'; import 'package:mc_common_app/models/user_models/image_response.dart';
import 'package:mc_common_app/repositories/user_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/common_services.dart';
import 'package:mc_common_app/services/firebase_service.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/location/Location.dart'; import 'package:mc_common_app/utils/location/Location.dart';
import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/navigator.dart';
@ -29,6 +30,7 @@ class DashboardVM extends BaseVM {
int selectedNavbarBarIndex = 2; int selectedNavbarBarIndex = 2;
void onNavbarTapped(int index) { void onNavbarTapped(int index) {
print(AppState().getDeviceToken);
selectedNavbarBarIndex = index; selectedNavbarBarIndex = index;
notifyListeners(); notifyListeners();
} }
@ -72,7 +74,8 @@ class DashboardVM extends BaseVM {
notifyListeners(); notifyListeners();
} }
updateIndex(int i) { updateIndex(int i) async {
print(AppState().getDeviceToken);
selectedNavbarBarIndex = i; selectedNavbarBarIndex = i;
notifyListeners(); notifyListeners();
} }

@ -4,8 +4,8 @@ import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:car_provider_app/views/appoinments/widget/select_items_sheet.dart'; import 'package:car_provider_app/views/appoinments/widget/select_items_sheet.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependencies.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/appointments_models/appointment_list_model.dart'; import 'package:mc_common_app/models/appointments_models/appointment_list_model.dart';

@ -3,7 +3,7 @@ import 'dart:async';
import 'package:car_provider_app/config/provider_routes.dart'; import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart'; import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart';

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';

@ -1,9 +1,8 @@
import 'package:car_provider_app/config/provider_routes.dart'; import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/appoinments/widget/appointment_detail_list_widget.dart';
import 'package:car_provider_app/views/appoinments/widget/sheets.dart'; import 'package:car_provider_app/views/appoinments/widget/sheets.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';

@ -1,24 +1,17 @@
import 'dart:async'; import 'dart:async';
import 'package:badges/badges.dart' as b;
import 'package:car_provider_app/view_models/dashboard_view_model.dart'; import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:car_provider_app/views/dashboard/fragments/ads_fragment.dart'; import 'package:car_provider_app/views/dashboard/fragments/ads_fragment.dart';
import 'package:car_provider_app/views/dashboard/fragments/appoinment_fragment.dart';
import 'package:car_provider_app/views/dashboard/fragments/my_requests_fragment.dart'; import 'package:car_provider_app/views/dashboard/fragments/my_requests_fragment.dart';
import 'package:car_provider_app/views/dashboard/widget/drawer_widget.dart';
import 'package:car_provider_app/views/settings/branch/branch_list_page.dart'; import 'package:car_provider_app/views/settings/branch/branch_list_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/config/dependencies.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/main.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart';
@ -26,8 +19,7 @@ import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/view_models/chat_view_model.dart'; import 'package:mc_common_app/view_models/chat_view_model.dart';
import 'package:mc_common_app/view_models/requests_view_model.dart'; import 'package:mc_common_app/view_models/requests_view_model.dart';
import 'package:mc_common_app/view_models/subscriptions_view_model.dart'; import 'package:mc_common_app/view_models/subscriptions_view_model.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/bottom_nav_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/bottom_nav_bar.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'fragments/branch_appointment_fragment.dart'; import 'fragments/branch_appointment_fragment.dart';
@ -55,11 +47,14 @@ class _DashboardPageState extends State<DashboardPage> {
Future<void> _onRefresh() async { Future<void> _onRefresh() async {
final requestsVM = context.read<RequestsVM>(); final requestsVM = context.read<RequestsVM>();
final chatVM = context.read<ChatVM>();
await context.read<ServiceVM>().getBranchAndServices(); await context.read<ServiceVM>().getBranchAndServices();
AdVM adVm = Provider.of<AdVM>(context, listen: false); AdVM adVm = Provider.of<AdVM>(context, listen: false);
SubscriptionsVM sVM = Provider.of<SubscriptionsVM>(context, listen: false); SubscriptionsVM sVM = Provider.of<SubscriptionsVM>(context, listen: false);
await context.read<AppointmentsVM>().getMyAppointmentsForProvider({"ServiceProviderID": injector.get<AppState>().getUser.data?.userInfo?.providerId.toString() ?? "0"}); await context.read<AppointmentsVM>().getMyAppointmentsForProvider({"ServiceProviderID": injector.get<AppState>().getUser.data?.userInfo?.providerId.toString() ?? "0"});
adVm.populateAdsFilterList(); adVm.populateAdsFilterList();
await chatVM.buildHubConnection(context);
if (adVm.myAds.isEmpty) { if (adVm.myAds.isEmpty) {
await adVm.getMyAds(); await adVm.getMyAds();
} }
@ -78,6 +73,7 @@ class _DashboardPageState extends State<DashboardPage> {
if (requestsVM.myRequests.isEmpty) { if (requestsVM.myRequests.isEmpty) {
await requestsVM.getRequests(appType: AppType.provider); await requestsVM.getRequests(appType: AppType.provider);
} }
if (sVM.mySubscriptionsBySp.isEmpty) { if (sVM.mySubscriptionsBySp.isEmpty) {
await sVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); await sVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "");
} }
@ -85,8 +81,6 @@ class _DashboardPageState extends State<DashboardPage> {
if (sVM.tempSubscriptions.isEmpty) { if (sVM.tempSubscriptions.isEmpty) {
await sVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true); await sVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true);
} }
// await chatVM.buildHubConnection(context);
} }
@override @override

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';

@ -1,7 +1,7 @@
import 'package:car_provider_app/config/provider_routes.dart'; import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart'; import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
@ -12,7 +12,6 @@ import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; import 'package:mc_common_app/widgets/common_widgets/categories_list.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:percent_indicator/percent_indicator.dart'; import 'package:percent_indicator/percent_indicator.dart';

@ -165,7 +165,7 @@ class RequestDetailPage extends StatelessWidget {
statusText: "Offer ${requestDetailPageArguments.requestModel.requestStatusName}", statusText: "Offer ${requestDetailPageArguments.requestModel.requestStatusName}",
context: context, context: context,
onViewChatTapped: () async { onViewChatTapped: () async {
ChatViewArguments chatViewArguments = ChatViewArguments( ChatViewArgumentsForRequest chatViewArgumentsForRequest = ChatViewArgumentsForRequest(
chatTypeEnum: ChatTypeEnum.requestOffer, chatTypeEnum: ChatTypeEnum.requestOffer,
receiverId: requestDetailPageArguments.requestModel.customerID, receiverId: requestDetailPageArguments.requestModel.customerID,
senderId: AppState().getUser.data!.userInfo!.userId.toString(), senderId: AppState().getUser.data!.userInfo!.userId.toString(),
@ -175,7 +175,10 @@ class RequestDetailPage extends StatelessWidget {
requestModel: requestDetailPageArguments.requestModel, requestModel: requestDetailPageArguments.requestModel,
requestIndex: requestDetailPageArguments.requestIndex, // This will be only sent in case of provider requestIndex: requestDetailPageArguments.requestIndex, // This will be only sent in case of provider
); );
ChatViewArguments chatViewArguments = ChatViewArguments(
chatTypeEnum: ChatTypeEnum.requestOffer,
chatViewArgumentsForRequest: chatViewArgumentsForRequest,
);
final chatVM = context.read<ChatVM>(); final chatVM = context.read<ChatVM>();
await chatVM await chatVM
.getUsersChatMessagesForProvider( .getUsersChatMessagesForProvider(
@ -186,11 +189,7 @@ class RequestDetailPage extends StatelessWidget {
customerRequestIndex: requestDetailPageArguments.requestIndex, customerRequestIndex: requestDetailPageArguments.requestIndex,
) )
.whenComplete( .whenComplete(
() => navigateWithName( () => navigateWithName(context, AppRoutes.chatView, arguments: chatViewArguments),
context,
AppRoutes.chatView,
arguments: chatViewArguments,
),
); );
}, },
), ),

Loading…
Cancel
Save