Issues Fixed

aamir_dev
Faiz Hashmi 1 year ago
parent d809cd8871
commit e73902b4dd

@ -24,80 +24,41 @@ import 'package:mc_common_app/models/appointments_models/appointment_list_model.
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';
class ProviderAppRoutes { class ProviderAppRoutes {
//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";
//Requests
static const String requestsDetailPage = "/requestsDetailPage";
static const String sendOfferPage = "/sendOfferPage";
//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 final Map<String, WidgetBuilder> routes = { static final Map<String, WidgetBuilder> routes = {
//Home page //Home page
AppRoutes.dashboard: (context) => const DashboardView(), AppRoutes.dashboard: (context) => const DashboardView(),
// defineLicense: (context) => DefineLicensePage(), // defineLicense: (context) => DefineLicensePage(),
dealershipSetting: (context) => const DealershipView(), AppRoutes.dealershipSetting: (context) => const DealershipView(),
// branchList: (context) => BranchListPage(), // branchList: (context) => BranchListPage(),
defineBranch: (context) => DefineBranchView((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as BranchDetailModel)), AppRoutes.defineBranch: (context) => DefineBranchView((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as BranchDetailModel)),
branchDetail: (context) => BranchDetailPage(ModalRoute.of(context)!.settings.arguments as BranchDetailModel), AppRoutes.branchDetail: (context) => BranchDetailPage(ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
//Appointments //Appointments
appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel), AppRoutes.appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
appointmentDetailList: (context) => const AppointmentDetailListPage(), AppRoutes.appointmentDetailList: (context) => const AppointmentDetailListPage(),
updateAppointmentPage: (context) => UpdateAppointmentPage(), AppRoutes.updateAppointmentPage: (context) => UpdateAppointmentPage(),
addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel), AppRoutes.addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel),
mergeAppointments: (context) => const MergeAppointmentListPage(), AppRoutes.mergeAppointments: (context) => const MergeAppointmentListPage(),
//Subscriptions //Subscriptions
mySubscriptionsPage: (context) => const MySubscriptionsPage(), AppRoutes.mySubscriptionsPage: (context) => const MySubscriptionsPage(),
subscriptionsPage: (context) => const SubscriptionsPage(), AppRoutes.subscriptionsPage: (context) => const SubscriptionsPage(),
//Services //Services
dealerUser: (context) => DealerUserPage(ModalRoute.of(context)!.settings.arguments as String), AppRoutes.dealerUser: (context) => DealerUserPage(ModalRoute.of(context)!.settings.arguments as String),
servicesList: (context) => const ServicesListPage(), AppRoutes.servicesList: (context) => const ServicesListPage(),
itemsList: (context) => ItemsListPage(), AppRoutes.itemsList: (context) => ItemsListPage(),
createItem: (context) => const CreateItemPage(), AppRoutes.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((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as CreateBranchModel)), AppRoutes.createServices3: (context) => CreateServicesPage3((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as CreateBranchModel)),
//Schedules //Schedules
schedulesList: (context) => SchedulesListPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as String)), AppRoutes.schedulesList: (context) => SchedulesListPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as String)),
addSchedule: (context) => const AddSchedulesPage(), AppRoutes.addSchedule: (context) => const AddSchedulesPage(),
//Branch Duplication //Branch Duplication
matchServices: (context) => MatchedServicesPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as MatchServicesArguments)), AppRoutes.matchServices: (context) => MatchedServicesPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as MatchServicesArguments)),
}; };
} }

@ -1,14 +1,13 @@
import 'dart:io'; import 'dart:io';
import 'package:car_provider_app/config/provider_dependencies.dart'; import 'package:car_provider_app/config/provider_dependencies.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: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/repositories/setting_options_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/shipping_repo.dart';
import 'package:mc_common_app/services/firebase_service.dart'; import 'package:mc_common_app/services/firebase_service.dart';
import 'package:mc_common_app/view_models/dashboard_view_model_provider.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';
@ -68,8 +67,8 @@ Future<void> main() async {
ChangeNotifierProvider<BaseVM>( ChangeNotifierProvider<BaseVM>(
create: (_) => BaseVM(), create: (_) => BaseVM(),
), ),
ChangeNotifierProvider<DashboardVM>( ChangeNotifierProvider<DashboardVMProvider>(
create: (_) => DashboardVM( create: (_) => DashboardVMProvider(
userRepo: injector.get<UserRepo>(), userRepo: injector.get<UserRepo>(),
commonServices: injector.get<CommonAppServices>(), commonServices: injector.get<CommonAppServices>(),
), ),

@ -1,151 +0,0 @@
import 'dart:io';
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/branch_management/branch/dealer/widget/add_phone_num_wiget.dart';
import 'package:google_maps_flutter/google_maps_flutter.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/config/dependency_injection.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/repositories/user_repo.dart';
import 'package:mc_common_app/services/common_services.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/view_models/shipping_management_view_model.dart';
import 'package:provider/provider.dart';
import 'package:mc_common_app/utils/location/Location.dart';
import 'package:mc_common_app/utils/shared_prefrence.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/view_models/base_view_model.dart';
import 'package:mc_common_app/widgets/bottom_sheet.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/service_view_model.dart';
import 'package:mc_common_app/view_models/subscriptions_view_model.dart';
class DashboardVM extends BaseVM {
final CommonAppServices commonServices;
final UserRepo userRepo;
DashboardVM({required this.commonServices, required this.userRepo});
String pickedImage = "";
int selectedNavbarBarIndex = 2;
void onNavbarTapped(int index) async {
logger.i(AppState().getDeviceToken);
selectedNavbarBarIndex = index;
notifyListeners();
}
void pickImageFromPhone(BuildContext context, int sourceFlag) async {
final File? pickedImageFile = await commonServices.pickImageFromPhone(sourceFlag);
if (pickedImageFile == null) {
return;
}
int sizeInBytes = pickedImageFile.lengthSync();
if (sizeInBytes > 1000000) {
Utils.showToast(LocaleKeys.fileLarger.tr());
return;
} else {
String image64 = Utils.convertFileToBase64(pickedImageFile);
Utils.showLoading(context);
ImageResponse response = await userRepo.updateUserImage(image64);
Utils.hideLoading(context);
Navigator.pop(context);
if (response.messageStatus == 1) {
Utils.showToast(LocaleKeys.imageUploaded.tr());
AppState().getUser.data!.userInfo!.userImageUrl = response.data;
} else {
Utils.showToast(response.message ?? "");
}
}
}
Future<ImageResponse> updateUserImage(String image) async {
return await userRepo.updateUserImage(image);
}
fetchUsernameAndLocation() async {
String userName = await SharedPrefManager.getPhoneOrEmail();
Location.getCurrentLocation(
(LatLng? latlng) {
AppState().currentLocation = latlng ?? const LatLng(0, 0);
},
);
notifyListeners();
}
Future<void> onRefresh(BuildContext context) async {
final requestsVM = context.read<RequestsVM>();
final chatVM = context.read<ChatVM>();
final appointmentVM = context.read<AppointmentsVM>();
final shippingManagementVM = context.read<ShippingManagementVM>();
final serviceVM = context.read<ServiceVM>();
final adVm = context.read<AdVM>();
final subscriptionsVM = context.read<SubscriptionsVM>();
requestsVM.populateDataForRequestsFilter();
appointmentVM.populateAppointmentsFilterList();
shippingManagementVM.populateShippingRequestFilterList();
await serviceVM.getBranchAndServices();
await appointmentVM.getMyAppointmentsForProvider({"ServiceProviderID": injector.get<AppState>().getUser.data?.userInfo?.providerId.toString() ?? "0"});
adVm.populateAdsFilterList();
await chatVM.buildHubConnection(context);
await adVm.getMyAds();
await adVm.getExploreAds();
await adVm.getVehicleTypes();
await adVm.getVehicleAdsDuration();
await requestsVM.getRequests();
// await subscriptionsVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "");
await subscriptionsVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true);
// await subscriptionsVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "");
}
void checkUserSubscription(SubscriptionActionTypeEnum actionType, BuildContext context, {required Function() callback}) async {
switch (actionType) {
case SubscriptionActionTypeEnum.ads:
performCheckOnAds(context);
break;
case SubscriptionActionTypeEnum.users:
performCheckOnUsers(context, callback);
break;
case SubscriptionActionTypeEnum.branches:
performCheckOnBranches(context);
break;
}
}
void performCheckOnBranches(BuildContext context) async {
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.branchesRemaining! > 0) {
logger.d(AppState().getproviderSubscription.first.toJson());
await navigateWithName(context, ProviderAppRoutes.defineBranch);
} else {
Utils.showToast("Upgrade your subscription to add more Branches.");
}
}
void performCheckOnAds(BuildContext context) async {
//adsRemaining
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.adsRemaining! > 0) {
logger.d(AppState().getproviderSubscription.first.toJson());
await navigateWithName(context, ProviderAppRoutes.defineBranch);
} else {
Utils.showToast("Upgrade your subscription to add more Ads.");
}
}
void performCheckOnUsers(BuildContext context, Function() callBack) async {
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.subUsersRemaining! > 0) {
logger.d(AppState().getproviderSubscription.first.toJson());
showMyBottomSheet(context, isDismissible: false, child: const AddPhoneNumWidget(), callBackFunc: callBack);
} else {
Utils.showToast("Upgrade your subscription to add more Sub Users.");
}
}
}

@ -1,6 +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/general_appointment_widget.dart'; import 'package:car_provider_app/views/dashboard/widget/general_appointment_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.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/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
@ -40,7 +41,7 @@ class AppointmentDetailListPage extends StatelessWidget {
onTap: () { onTap: () {
appointmentsVM.selectedAppointmentId = appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index].id ?? 0; appointmentsVM.selectedAppointmentId = appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index].id ?? 0;
appointmentsVM.selectedAppointmentSubIndex = index; appointmentsVM.selectedAppointmentSubIndex = index;
navigateWithName(context, ProviderAppRoutes.updateAppointmentPage, arguments: appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index]); navigateWithName(context, AppRoutes.updateAppointmentPage, arguments: appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index]);
}, },
); );
}, },
@ -59,7 +60,7 @@ class AppointmentDetailListPage extends StatelessWidget {
maxWidth: double.infinity, maxWidth: double.infinity,
margin: const EdgeInsets.all(21), margin: const EdgeInsets.all(21),
onPressed: () { onPressed: () {
navigateWithName(context, ProviderAppRoutes.mergeAppointments); navigateWithName(context, AppRoutes.mergeAppointments);
}, },
) )
: const SizedBox(), : const SizedBox(),

@ -4,6 +4,7 @@ import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/dashboard/widget/general_appointment_widget.dart'; import 'package:car_provider_app/views/dashboard/widget/general_appointment_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/dependency_injection.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/config/routes.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';
@ -113,7 +114,7 @@ class _AppointmentPageState extends State<AppointmentPage> {
context.read<AppointmentsVM>().selectedAppointmentIndex = index; context.read<AppointmentsVM>().selectedAppointmentIndex = index;
navigateWithName( navigateWithName(
context, context,
ProviderAppRoutes.appointmentDetailList, AppRoutes.appointmentDetailList,
// arguments: appointmentsVM // arguments: appointmentsVM
// .myFilteredAppointments2[index] // .myFilteredAppointments2[index]
// .customerAppointmentList, // .customerAppointmentList,

@ -5,6 +5,7 @@ import 'package:flutter/cupertino.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/dependency_injection.dart'; import 'package:mc_common_app/config/dependency_injection.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';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -62,7 +63,7 @@ class UpdateAppointmentPage extends StatelessWidget {
onPressed: () { onPressed: () {
navigateWithName( navigateWithName(
context, context,
ProviderAppRoutes.addServiceInAppointment, AppRoutes.addServiceInAppointment,
arguments: appointmentListModel, arguments: appointmentListModel,
); );
}, },

@ -1,13 +1,13 @@
import 'package:car_provider_app/config/provider_routes.dart'; import 'package:car_provider_app/config/provider_routes.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.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';
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';
import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:sizer/sizer.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
@ -85,7 +85,7 @@ class AppointmentDetailListWidget extends StatelessWidget {
width: double.infinity, width: double.infinity,
allPading: 12, allPading: 12,
onTap: () { onTap: () {
if (isNeedClick) navigateWithName(context, ProviderAppRoutes.updateAppointmentPage); if (isNeedClick) navigateWithName(context, AppRoutes.updateAppointmentPage);
}, },
); );
} }

@ -1,6 +1,7 @@
import 'dart:async'; 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/branch_management/branch/dealer/widget/assign_dealer_user_sheet.dart'; import 'package:car_provider_app/views/branch_management/branch/dealer/widget/assign_dealer_user_sheet.dart';
import 'package:mc_common_app/config/routes.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/utils/utils.dart'; import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart';
@ -23,20 +24,33 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/row_with_arrow.dart'; import 'package:mc_common_app/widgets/row_with_arrow.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class BranchDetailPage extends StatelessWidget { class BranchDetailPage extends StatefulWidget {
final BranchDetailModel branchData; final BranchDetailModel branchData;
const BranchDetailPage(this.branchData, {super.key}); const BranchDetailPage(this.branchData, {super.key});
getBranchUsers(BuildContext context) { @override
scheduleMicrotask(() { State<BranchDetailPage> createState() => _BranchDetailPageState();
if (context.read<ServiceVM>().allProviderDealersList.isNotEmpty) { }
context.read<ServiceVM>().getAllProviderDealers(
{"ServiceProviderBranchID": branchData.id.toString(), "ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""}, class _BranchDetailPageState extends State<BranchDetailPage> {
); @override
void initState() {
onInitState();
super.initState();
} }
context.read<ServiceVM>().filterUserBranchCategories(); onInitState() async {
ServiceVM serviceVM = context.read<ServiceVM>();
scheduleMicrotask(() async {
await serviceVM.getAllProviderDealers(
{
"ServiceProviderBranchID": widget.branchData.id.toString(),
"ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? "",
},
);
await serviceVM.filterUserBranchCategories();
}); });
} }
@ -82,7 +96,7 @@ class BranchDetailPage extends StatelessWidget {
Widget buildFooterActionWidget(BuildContext context) { Widget buildFooterActionWidget(BuildContext context) {
Widget actionWidget = const SizedBox(); Widget actionWidget = const SizedBox();
if (AppState().userType == UserType.providerDealer && branchData.branchStatus == BranchStatusEnum.approvedOrActive) { if (AppState().userType == UserType.providerDealer && widget.branchData.branchStatus == BranchStatusEnum.approvedOrActive) {
actionWidget = ShowFillButton( actionWidget = ShowFillButton(
title: LocaleKeys.assignDealerUser.tr(), title: LocaleKeys.assignDealerUser.tr(),
maxWidth: double.infinity, maxWidth: double.infinity,
@ -95,19 +109,19 @@ class BranchDetailPage extends StatelessWidget {
showMyBottomSheet( showMyBottomSheet(
context, context,
child: AssignDealerUserSheet( child: AssignDealerUserSheet(
branchId: branchData.id.toString(), branchId: widget.branchData.id.toString(),
callBackFunc: () { callBackFunc: () {
getBranchUsers(context); onInitState();
}, },
), ),
); );
}, },
); );
} else if (branchData.branchStatus == BranchStatusEnum.pending) { } else if (widget.branchData.branchStatus == BranchStatusEnum.pending) {
actionWidget = pendingApprovalAction(pendingText: "Approval Pending"); actionWidget = pendingApprovalAction(pendingText: "Approval Pending");
} else if (branchData.branchStatus == BranchStatusEnum.deactivated) { } else if (widget.branchData.branchStatus == BranchStatusEnum.deactivated) {
actionWidget = pendingApprovalAction(pendingText: "Activate Now"); actionWidget = pendingApprovalAction(pendingText: "Activate Now");
} else if (branchData.branchStatus == BranchStatusEnum.rejected) { } else if (widget.branchData.branchStatus == BranchStatusEnum.rejected) {
actionWidget = Column( actionWidget = Column(
children: [ children: [
Row( Row(
@ -117,9 +131,9 @@ class BranchDetailPage extends StatelessWidget {
), ),
Row( Row(
children: [ children: [
if (branchData.branchAuditTrial != null && branchData.branchAuditTrial!.isNotEmpty) ...[ if (widget.branchData.branchAuditTrial != null && widget.branchData.branchAuditTrial!.isNotEmpty) ...[
Flexible( Flexible(
child: ("${branchData.branchAuditTrial!.first.comment}").toText( child: ("${widget.branchData.branchAuditTrial!.first.comment}").toText(
fontSize: 14, fontSize: 14,
color: MyColors.primaryColor, color: MyColors.primaryColor,
isItalic: true, isItalic: true,
@ -203,13 +217,14 @@ class BranchDetailPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
getBranchUsers(context);
return Scaffold( return Scaffold(
appBar: CustomAppBar(title: LocaleKeys.branchDetail.tr()), appBar: CustomAppBar(title: LocaleKeys.branchDetail.tr()),
body: Consumer<ServiceVM>(builder: (context, serviceVM, _) { body: Consumer<ServiceVM>(builder: (context, serviceVM, _) {
return SizedBox( return SizedBox(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
child: RefreshIndicator(
onRefresh: () async => await onInitState(),
child: Column( child: Column(
children: [ children: [
Expanded( Expanded(
@ -224,34 +239,34 @@ class BranchDetailPage extends StatelessWidget {
Expanded( Expanded(
child: Row( child: Row(
children: [ children: [
branchData.branchProfileImage.buildNetworkImage(height: 66, width: 53, fit: BoxFit.cover), widget.branchData.branchProfileImage.buildNetworkImage(height: 66, width: 53, fit: BoxFit.cover),
11.width, 11.width,
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
(branchData.branchName!).toText(fontSize: 16, color: MyColors.darkTextColor), (widget.branchData.branchName!).toText(fontSize: 16, color: MyColors.darkTextColor),
showData("", branchData.branchDescription.toString()), showData("", widget.branchData.branchDescription.toString()),
], ],
), ),
), ),
], ],
), ),
), ),
if (branchData.branchStatus != BranchStatusEnum.pending) ...[ if (widget.branchData.branchStatus != BranchStatusEnum.pending) ...[
SvgPicture.asset(MyAssets.icEdit).onPress(() { SvgPicture.asset(MyAssets.icEdit).onPress(() {
navigateWithName(context, ProviderAppRoutes.defineBranch, arguments: branchData); navigateWithName(context, AppRoutes.defineBranch, arguments: widget.branchData);
}), }),
], ],
], ],
), ),
Column( Column(
children: [ children: [
showData("${LocaleKeys.location.tr()}:", "${branchData.cityName.toString()}, ${branchData.countryName.toString()}"), showData("${LocaleKeys.location.tr()}:", "${widget.branchData.cityName.toString()}, ${widget.branchData.countryName.toString()}"),
showData("${LocaleKeys.provider.tr()}:", branchData.serviceProviderName.toString()), showData("${LocaleKeys.provider.tr()}:", widget.branchData.serviceProviderName.toString()),
showData("${LocaleKeys.time.tr()}:", "${branchData.openTime.toString()} - ${branchData.closeTime.toString()}"), showData("${LocaleKeys.time.tr()}:", "${widget.branchData.openTime.toString()} - ${widget.branchData.closeTime.toString()}"),
showData("${LocaleKeys.address.tr()}:", branchData.address.toString()), showData("${LocaleKeys.address.tr()}:", widget.branchData.address.toString()),
], ],
).paddingOnly(left: 65), ).paddingOnly(left: 65),
], ],
@ -286,11 +301,11 @@ class BranchDetailPage extends StatelessWidget {
) )
.margin(right: 5), .margin(right: 5),
).onPress(() { ).onPress(() {
if (branchData.branchStatus == BranchStatusEnum.pending || branchData.branchStatus == BranchStatusEnum.rejected) { if (widget.branchData.branchStatus == BranchStatusEnum.pending || widget.branchData.branchStatus == BranchStatusEnum.rejected) {
Utils.showToast("Please wait for the branch verification."); Utils.showToast("Please wait for the branch verification.");
return; return;
} }
navigateWithName(context, ProviderAppRoutes.schedulesList, arguments: branchData.id.toString()); navigateWithName(context, AppRoutes.schedulesList, arguments: widget.branchData.id.toString());
}), }),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -320,26 +335,32 @@ class BranchDetailPage extends StatelessWidget {
top: 20, top: 20,
)) ))
.onPress(() { .onPress(() {
if (branchData.branchStatus == BranchStatusEnum.pending || branchData.branchStatus == BranchStatusEnum.rejected) { if (widget.branchData.branchStatus == BranchStatusEnum.pending || widget.branchData.branchStatus == BranchStatusEnum.rejected) {
Utils.showToast("Please wait for the branch verification."); Utils.showToast("Please wait for the branch verification.");
return; return;
} }
navigateWithName( navigateWithName(
context, context,
ProviderAppRoutes.createServices3, AppRoutes.createServices3,
arguments: CreateBranchModel( arguments: CreateBranchModel(
branchId: branchData.id.toString(), branchId: widget.branchData.id.toString(),
branchName: branchData.branchName.toString(), branchName: widget.branchData.branchName.toString(),
isForEdit: false, isForEdit: false,
), ),
); );
}), }),
if (serviceVM.state == ViewState.busy) ...[
30.height,
const Center(
child: CircularProgressIndicator(),
),
] else ...[
ListView.separated( ListView.separated(
itemBuilder: (context, pIndex) { itemBuilder: (context, pIndex) {
return buildServiceTileWidget(pIndex, serviceVM).onPress(() { return buildServiceTileWidget(pIndex, serviceVM).onPress(() {
serviceVM.categories[pIndex].branchId = branchData.id.toString(); serviceVM.categories[pIndex].branchId = widget.branchData.id.toString();
serviceVM.categories[pIndex].branchName = branchData.branchName.toString(); serviceVM.categories[pIndex].branchName = widget.branchData.branchName.toString();
navigateWithName(context, ProviderAppRoutes.servicesList, arguments: serviceVM.categories[pIndex]); navigateWithName(context, AppRoutes.servicesList, arguments: serviceVM.categories[pIndex]);
}); });
}, },
itemCount: serviceVM.categories.length, itemCount: serviceVM.categories.length,
@ -350,6 +371,7 @@ class BranchDetailPage extends StatelessWidget {
return 12.height; return 12.height;
}, },
), ),
],
12.height, 12.height,
], ],
), ),
@ -363,6 +385,7 @@ class BranchDetailPage extends StatelessWidget {
buildFooterActionWidget(context), buildFooterActionWidget(context),
], ],
), ),
),
); );
}), }),
); );

@ -1,13 +1,12 @@
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.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/utils/dialogs_and_bottomsheets.dart'; import 'package:mc_common_app/utils/dialogs_and_bottomsheets.dart';
import 'package:mc_common_app/view_models/dashboard_view_model_provider.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/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/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart';
@ -183,7 +182,8 @@ class BranchListPage extends StatelessWidget {
).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12)).onPress(() async { ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12)).onPress(() async {
branchModel.countryID = serviceVM.branches!.data!.countryID; branchModel.countryID = serviceVM.branches!.data!.countryID;
branchModel.countryName = serviceVM.branches!.data!.countryName; branchModel.countryName = serviceVM.branches!.data!.countryName;
navigateWithName(context, ProviderAppRoutes.branchDetail, arguments: branchModel); serviceVM.updateSelectedBranchId(branchModel.id);
navigateWithName(context, AppRoutes.branchDetail, arguments: branchModel);
}), }),
); );
}, },
@ -205,7 +205,7 @@ class BranchListPage extends StatelessWidget {
color: Colors.white, color: Colors.white,
), ),
onPressed: () { onPressed: () {
context.read<DashboardVM>().checkUserSubscription(SubscriptionActionTypeEnum.branches, context, callback: () { }); context.read<DashboardVMProvider>().checkUserSubscription(SubscriptionActionTypeEnum.branches, context, callback: () {});
}, },
), ),
); );

@ -1,8 +1,8 @@
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.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';
@ -35,7 +35,7 @@ class DealershipView extends StatelessWidget {
), ),
title: LocaleKeys.defineBranches.tr().toText(fontSize: 12), title: LocaleKeys.defineBranches.tr().toText(fontSize: 12),
onTap: () { onTap: () {
navigateWithName(context, ProviderAppRoutes.branchList); navigateWithName(context, AppRoutes.branchList);
}, },
), ),
ListTile( ListTile(
@ -45,7 +45,7 @@ class DealershipView extends StatelessWidget {
), ),
title: LocaleKeys.defineServices.tr().toText(fontSize: 12), title: LocaleKeys.defineServices.tr().toText(fontSize: 12),
onTap: () { onTap: () {
navigateWithName(context, ProviderAppRoutes.createServices2); navigateWithName(context, AppRoutes.createServices2);
}, },
), ),
ListTile( ListTile(

@ -1,7 +1,7 @@
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.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/general_models/generic_resp_model.dart'; import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
import 'package:mc_common_app/view_models/dashboard_view_model_provider.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: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';
@ -123,7 +123,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
txtColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor,
isFilled: false, isFilled: false,
onPressed: () { onPressed: () {
context.read<DashboardVM>().checkUserSubscription(SubscriptionActionTypeEnum.users, context, callback: () { context.read<DashboardVMProvider>().checkUserSubscription(SubscriptionActionTypeEnum.users, context, callback: () {
getBranchUsers(); getBranchUsers();
}); });
}, },

@ -1,5 +1,4 @@
import 'dart:async'; import 'dart:async';
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.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,7 +1,7 @@
import 'package:car_provider_app/config/provider_routes.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:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.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';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -119,7 +119,7 @@ class _SchedulesListPageState extends State<SchedulesListPage> {
), ),
).onPress(() { ).onPress(() {
scheduleVM.schedule!.data![index].branchId = widget.branchId ?? ""; scheduleVM.schedule!.data![index].branchId = widget.branchId ?? "";
navigateWithName(context, ProviderAppRoutes.addSchedule, arguments: scheduleVM.schedule!.data![index]); navigateWithName(context, AppRoutes.addSchedule, arguments: scheduleVM.schedule!.data![index]);
}), }),
], ],
), ),
@ -160,7 +160,7 @@ class _SchedulesListPageState extends State<SchedulesListPage> {
maxWidth: double.infinity, maxWidth: double.infinity,
margin: const EdgeInsets.all(20), margin: const EdgeInsets.all(20),
onPressed: () { onPressed: () {
navigateWithName(context, ProviderAppRoutes.addSchedule, arguments: ScheduleData(branchId: widget.branchId ?? "")); navigateWithName(context, AppRoutes.addSchedule, arguments: ScheduleData(branchId: widget.branchId ?? ""));
}, },
), ),
], ],

@ -16,6 +16,7 @@ import 'package:mc_common_app/widgets/checkbox_with_title_desc.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:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/empty_widget.dart';
import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -116,7 +117,7 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
list: model.servicesDropList, list: model.servicesDropList,
hint: LocaleKeys.defineServices.tr(), hint: LocaleKeys.defineServices.tr(),
) )
: Container(), : EmptyWidget(text: LocaleKeys.noServicesAvailable.tr()),
12.height, 12.height,
if (serviceId != -1) ...[ if (serviceId != -1) ...[
Column( Column(
@ -281,7 +282,6 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
Utils.showLoading(context); Utils.showLoading(context);
GenericRespModel mResponse = await model.updateServices(map); GenericRespModel mResponse = await model.updateServices(map);
model.getBranchAndServices(); model.getBranchAndServices();
model.filterUserBranchCategories();
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.showToast(mResponse.message ?? ""); Utils.showToast(mResponse.message ?? "");
if (mResponse.messageStatus == 1) { if (mResponse.messageStatus == 1) {

@ -1,4 +1,4 @@
import 'package:car_provider_app/config/provider_routes.dart'; import 'package:mc_common_app/config/routes.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: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';
@ -115,7 +115,7 @@ class ApprovedBranchesListSheet extends StatelessWidget {
// branches[index].countryName = model.branchs!.data!.countryName; // branches[index].countryName = model.branchs!.data!.countryName;
navigateWithName( navigateWithName(
context, context,
ProviderAppRoutes.matchServices, AppRoutes.matchServices,
arguments: MatchServicesArguments( arguments: MatchServicesArguments(
oldBranch: branches[index].id ?? 0, oldBranch: branches[index].id ?? 0,
oldBranchName: branches[index].branchName ?? "", oldBranchName: branches[index].branchName ?? "",

@ -1,7 +1,7 @@
import 'package:car_provider_app/config/provider_routes.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:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.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';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -86,14 +86,11 @@ class ItemsListPage extends StatelessWidget {
), ),
).onPress(() { ).onPress(() {
model.serviceItems!.data![index].isUpdateOrSelected = true; model.serviceItems!.data![index].isUpdateOrSelected = true;
navigateWithName(context, ProviderAppRoutes.createItem, arguments: model.serviceItems!.data![index]); navigateWithName(context, AppRoutes.createItem, arguments: model.serviceItems!.data![index]);
}), }),
], ],
), ),
).toWhiteContainer( ).toWhiteContainer(width: double.infinity, allPading: 12);
width: double.infinity,
allPading: 12,
);
}, },
separatorBuilder: (BuildContext context, int index) { separatorBuilder: (BuildContext context, int index) {
return 12.height; return 12.height;
@ -111,7 +108,7 @@ class ItemsListPage extends StatelessWidget {
onPressed: () { onPressed: () {
navigateWithName( navigateWithName(
context, context,
ProviderAppRoutes.createItem, AppRoutes.createItem,
arguments: ItemData( arguments: ItemData(
serviceProviderServiceId: serviceProviderService!.serviceProviderServiceId, serviceProviderServiceId: serviceProviderService!.serviceProviderServiceId,
), ),

@ -5,6 +5,7 @@ import 'package:car_provider_app/views/branch_management/services/duplication/sh
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.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';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -125,6 +126,7 @@ class _ServicesListPageState extends State<ServicesListPage> {
Expanded( Expanded(
child: (services[index].serviceDescription ?? "").toText(fontSize: 16), child: (services[index].serviceDescription ?? "").toText(fontSize: 16),
), ),
if (services[index].serviceStatus != 1) ...[
Padding( Padding(
padding: const EdgeInsets.all(4.0), padding: const EdgeInsets.all(4.0),
child: SvgPicture.asset( child: SvgPicture.asset(
@ -133,7 +135,7 @@ class _ServicesListPageState extends State<ServicesListPage> {
height: 16, height: 16,
), ),
).onPress(() { ).onPress(() {
navigateWithName(context, ProviderAppRoutes.createServices3, navigateWithName(context, AppRoutes.createServices3,
arguments: CreateBranchModel( arguments: CreateBranchModel(
branchId: categoryData.branchId ?? '', branchId: categoryData.branchId ?? '',
branchName: categoryData.branchName ?? '', branchName: categoryData.branchName ?? '',
@ -143,6 +145,7 @@ class _ServicesListPageState extends State<ServicesListPage> {
isForEdit: true, isForEdit: true,
)); ));
}), }),
]
], ],
), ),
const SizedBox(height: 4), const SizedBox(height: 4),
@ -170,7 +173,7 @@ class _ServicesListPageState extends State<ServicesListPage> {
], ],
), ),
).toWhiteContainer(width: double.infinity, allPading: 12).onPress( ).toWhiteContainer(width: double.infinity, allPading: 12).onPress(
() => navigateWithName(context, ProviderAppRoutes.itemsList, arguments: services[index]), () => navigateWithName(context, AppRoutes.itemsList, arguments: services[index]),
); );
}, },
separatorBuilder: (context, index) { separatorBuilder: (context, index) {

@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:car_provider_app/views/branch_management/branch/branch_list_page.dart'; import 'package:car_provider_app/views/branch_management/branch/branch_list_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/view_models/dashboard_view_model_provider.dart';
import 'package:mc_common_app/views/common_fragments/requests_fragment.dart'; import 'package:mc_common_app/views/common_fragments/requests_fragment.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';
@ -17,14 +17,14 @@ class DashboardView extends StatefulWidget {
} }
class _DashboardViewState extends State<DashboardView> { class _DashboardViewState extends State<DashboardView> {
late DashboardVM dashboardVM; late DashboardVMProvider dashboardVMProvider;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
dashboardVM = Provider.of<DashboardVM>(context, listen: false); dashboardVMProvider = Provider.of<DashboardVMProvider>(context, listen: false);
scheduleMicrotask(() => dashboardVM.onRefresh(context)); scheduleMicrotask(() => dashboardVMProvider.onRefresh(context));
} }
@override @override
@ -41,13 +41,13 @@ class _DashboardViewState extends State<DashboardView> {
canPop: false, canPop: false,
child: Scaffold( child: Scaffold(
key: _scaffoldKey, key: _scaffoldKey,
body: fragments[context.watch<DashboardVM>().selectedNavbarBarIndex], body: fragments[context.watch<DashboardVMProvider>().selectedNavbarBarIndex],
bottomNavigationBar: CustomBottomNavbar( bottomNavigationBar: CustomBottomNavbar(
onSelected: (index) { onSelected: (index) {
dashboardVM.onNavbarTapped(index); dashboardVMProvider.onNavbarTapped(index);
}, },
isProvider: true, isProvider: true,
selectedNavbarBarIndex: dashboardVM.selectedNavbarBarIndex, selectedNavbarBarIndex: dashboardVMProvider.selectedNavbarBarIndex,
), ),
), ),
); );

@ -1,8 +1,7 @@
import 'package:geolocator/geolocator.dart';
import 'package:car_provider_app/config/provider_routes.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/consts.dart'; import 'package:mc_common_app/classes/consts.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';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -10,14 +9,10 @@ import 'package:mc_common_app/models/provider_branches_models/branch_detail_mode
import 'package:mc_common_app/theme/colors.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/utils/utils.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:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/tab/role_type_tab.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
class BranchAppointmentFragment extends StatelessWidget { class BranchAppointmentFragment extends StatelessWidget {
@ -109,7 +104,7 @@ class BranchAppointmentFragment extends StatelessWidget {
).toContainer(borderRadius: 0, isShadowEnabled: true).onPress(() async { ).toContainer(borderRadius: 0, isShadowEnabled: true).onPress(() async {
branches[index].countryID = serviceVM.branches!.data!.countryID; branches[index].countryID = serviceVM.branches!.data!.countryID;
branches[index].countryName = serviceVM.branches!.data!.countryName; branches[index].countryName = serviceVM.branches!.data!.countryName;
navigateWithName(context, ProviderAppRoutes.appointment, arguments: branches[index]); navigateWithName(context, AppRoutes.appointment, arguments: branches[index]);
}); });
}, },
separatorBuilder: (context, index) { separatorBuilder: (context, index) {

@ -1,5 +1,3 @@
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:car_provider_app/views/dashboard/widget/my_service_provider.dart'; import 'package:car_provider_app/views/dashboard/widget/my_service_provider.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';
@ -14,6 +12,7 @@ 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';
import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/view_models/dashboard_view_model_provider.dart';
import 'package:mc_common_app/views/advertisement/components/ads_list_widget.dart'; import 'package:mc_common_app/views/advertisement/components/ads_list_widget.dart';
import 'package:mc_common_app/views/appointments/widgets/common_appointment_slider_widget.dart'; import 'package:mc_common_app/views/appointments/widgets/common_appointment_slider_widget.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
@ -35,24 +34,24 @@ class HomeFragment extends StatelessWidget {
toolbarHeight: 59, toolbarHeight: 59,
onTap: () => navigateWithName(context, AppRoutes.settingOptionsMore), onTap: () => navigateWithName(context, AppRoutes.settingOptionsMore),
actions: [ actions: [
IconButton( // IconButton(
onPressed: () => context.read<AppointmentsVM>().onGeneralChatMessagesButtonPressed(context: context), // onPressed: () => context.read<AppointmentsVM>().onGeneralChatMessagesButtonPressed(context: context),
icon: b.Badge( // icon: b.Badge(
badgeContent: '3'.toText(color: MyColors.white), // badgeContent: '3'.toText(color: MyColors.white),
badgeStyle: const b.BadgeStyle( // badgeStyle: const b.BadgeStyle(
badgeColor: MyColors.primaryColor, // badgeColor: MyColors.primaryColor,
padding: EdgeInsets.all(5), // padding: EdgeInsets.all(5),
), // ),
child: const Padding(padding: EdgeInsets.only(top: 8, bottom: 8, right: 25, left: 10), child: Icon(Icons.message, size: 21))), // child: const Padding(padding: EdgeInsets.only(top: 8, bottom: 8, right: 25, left: 10), child: Icon(Icons.message, size: 21))),
), // ),
10.width, // 10.width,
], ],
), ),
body: SizedBox( body: SizedBox(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
child: RefreshIndicator( child: RefreshIndicator(
onRefresh: () async => await context.read<DashboardVM>().onRefresh(context), onRefresh: () async => await context.read<DashboardVMProvider>().onRefresh(context),
child: ListView( child: ListView(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
children: [ children: [
@ -63,7 +62,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.upcoming_appointment.tr(), title: LocaleKeys.upcoming_appointment.tr(),
subTitle: LocaleKeys.view_all.tr(), subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(1); context.read<DashboardVMProvider>().onNavbarTapped(1);
}, },
).horPaddingMain(), ).horPaddingMain(),
// const AppointmentSliderWidget().horPaddingMain(), // const AppointmentSliderWidget().horPaddingMain(),
@ -74,7 +73,7 @@ class HomeFragment extends StatelessWidget {
] else ...[ ] else ...[
CommonAppointmentSliderWidget( CommonAppointmentSliderWidget(
onAppointmentClick: (AppointmentListModel value) { onAppointmentClick: (AppointmentListModel value) {
navigateWithName(context, ProviderAppRoutes.appointmentDetailList, arguments: value); navigateWithName(context, AppRoutes.appointmentDetailList, arguments: value);
}, },
) )
.toWhiteContainer( .toWhiteContainer(
@ -88,7 +87,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.myBranches.tr(), title: LocaleKeys.myBranches.tr(),
subTitle: LocaleKeys.view_all.tr(), subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(0); context.read<DashboardVMProvider>().onNavbarTapped(0);
}, },
).horPaddingMain(), ).horPaddingMain(),
const ServiceProviderWidget().horPaddingMain(), const ServiceProviderWidget().horPaddingMain(),
@ -114,7 +113,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.my_active_Ads.tr().toUpperCase(), title: LocaleKeys.my_active_Ads.tr().toUpperCase(),
subTitle: LocaleKeys.view_all.tr(), subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(3); context.read<DashboardVMProvider>().onNavbarTapped(3);
context.read<AdVM>().updateIsExploreAds(true); context.read<AdVM>().updateIsExploreAds(true);
context.read<AdVM>().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds); context.read<AdVM>().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds);
}, },
@ -136,7 +135,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.myRecommendedAds.tr().toUpperCase(), title: LocaleKeys.myRecommendedAds.tr().toUpperCase(),
subTitle: LocaleKeys.view_all.tr(), subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(3); context.read<DashboardVMProvider>().onNavbarTapped(3);
context.read<AdVM>().updateIsExploreAds(true); context.read<AdVM>().updateIsExploreAds(true);
context.read<AdVM>().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds); context.read<AdVM>().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds);
}, },

@ -1,6 +1,5 @@
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/config/routes.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';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
@ -53,7 +52,8 @@ class ServiceProviderWidget extends StatelessWidget {
() { () {
serviceVM.homePageBranches[index].countryID = serviceVM.branches!.data!.countryID; serviceVM.homePageBranches[index].countryID = serviceVM.branches!.data!.countryID;
serviceVM.homePageBranches[index].countryName = serviceVM.branches!.data!.countryName; serviceVM.homePageBranches[index].countryName = serviceVM.branches!.data!.countryName;
navigateWithName(context, ProviderAppRoutes.branchDetail, arguments: serviceVM.homePageBranches[index]); serviceVM.updateSelectedBranchId(serviceVM.homePageBranches[index].id);
navigateWithName(context, AppRoutes.branchDetail, arguments: serviceVM.homePageBranches[index]);
}, },
); );
}, },

@ -31,7 +31,6 @@ class SubscriptionsPage extends StatefulWidget {
class _SubscriptionsPageState extends State<SubscriptionsPage> { class _SubscriptionsPageState extends State<SubscriptionsPage> {
@override @override
void initState() { void initState() {
// TODO: implement initState
super.initState(); super.initState();
scheduleMicrotask(() { scheduleMicrotask(() {
context.read<SubscriptionsVM>().getSubscriptionBySP( context.read<SubscriptionsVM>().getSubscriptionBySP(

@ -1,24 +1,14 @@
import 'dart:async'; import 'dart:async';
import 'dart:developer';
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/subscriptions/sheet/select_package_sheet.dart';
import 'package:car_provider_app/views/subscriptions/sheet/upgrade_package_sheet.dart'; import 'package:car_provider_app/views/subscriptions/sheet/upgrade_package_sheet.dart';
import 'package:car_provider_app/views/subscriptions/widget/all_subscriptions_card.dart';
import 'package:car_provider_app/views/subscriptions/widget/my_subscriptions_card.dart'; import 'package:car_provider_app/views/subscriptions/widget/my_subscriptions_card.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/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/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/general_models/generic_resp_model.dart';
import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
import 'package:mc_common_app/theme/colors.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/utils/utils.dart';
import 'package:mc_common_app/view_models/payment_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/widgets/bottom_sheet.dart'; import 'package:mc_common_app/widgets/bottom_sheet.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart';
@ -37,9 +27,9 @@ class _MySubscriptionsPageState extends State<MySubscriptionsPage> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
scheduleMicrotask(() { // scheduleMicrotask(() {
// context.read<SubscriptionsVM>().getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); // context.read<SubscriptionsVM>().getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "");
}); // });
} }
@override @override
@ -151,7 +141,7 @@ class _MySubscriptionsPageState extends State<MySubscriptionsPage> {
maxWidth: double.infinity, maxWidth: double.infinity,
margin: const EdgeInsets.symmetric(horizontal: 21), margin: const EdgeInsets.symmetric(horizontal: 21),
onPressed: () { onPressed: () {
navigateWithName(context, ProviderAppRoutes.subscriptionsPage); navigateWithName(context, AppRoutes.subscriptionsPage);
}, },
), ),
21.height, 21.height,

@ -2,10 +2,12 @@ import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.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/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/models/subscriptions_models/subscription_model.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/date_helper.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';
import 'package:easy_localization/easy_localization.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
class AllSubscriptionsCard extends StatelessWidget { class AllSubscriptionsCard extends StatelessWidget {
@ -65,9 +67,9 @@ class AllSubscriptionsCard extends StatelessWidget {
], ],
), ),
6.height, 6.height,
showItem("Ads:", subscription.subscriptionAds.toString()), showItem("${LocaleKeys.ads.tr()}:", subscription.subscriptionAds.toString()),
showItem("Users:", subscription.subscriptionSubUsers.toString()), showItem("${LocaleKeys.users.tr()}:", subscription.subscriptionSubUsers.toString()),
showItem("Branches:", subscription.subscriptionBranches.toString()), showItem("${LocaleKeys.branches.tr()}:", subscription.subscriptionBranches.toString()),
14.height, 14.height,
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -80,7 +82,7 @@ class AllSubscriptionsCard extends StatelessWidget {
children: [ children: [
subscription.price.toString().toText(fontSize: 29, isBold: true, color: textColor, letterSpacing: -1.77, height: 1), subscription.price.toString().toText(fontSize: 29, isBold: true, color: textColor, letterSpacing: -1.77, height: 1),
2.width, 2.width,
"${subscription.currency ?? ""}/Month".toText(color: MyColors.lightTextColor, fontSize: 16, letterSpacing: -0.64).paddingOnly(bottom: 2), "${subscription.currency ?? ""} for ${subscription.durationDays} ${LocaleKeys.daysVar.tr()}".toText(color: MyColors.lightTextColor, fontSize: 16, letterSpacing: -0.64).paddingOnly(bottom: 3),
], ],
), ),
), ),

Loading…
Cancel
Save