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';
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 = {
//Home page
AppRoutes.dashboard: (context) => const DashboardView(),
// defineLicense: (context) => DefineLicensePage(),
dealershipSetting: (context) => const DealershipView(),
AppRoutes.dealershipSetting: (context) => const DealershipView(),
// branchList: (context) => BranchListPage(),
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.defineBranch: (context) => DefineBranchView((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as BranchDetailModel)),
AppRoutes.branchDetail: (context) => BranchDetailPage(ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
//Appointments
appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
appointmentDetailList: (context) => const AppointmentDetailListPage(),
updateAppointmentPage: (context) => UpdateAppointmentPage(),
addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel),
mergeAppointments: (context) => const MergeAppointmentListPage(),
AppRoutes.appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
AppRoutes.appointmentDetailList: (context) => const AppointmentDetailListPage(),
AppRoutes.updateAppointmentPage: (context) => UpdateAppointmentPage(),
AppRoutes.addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel),
AppRoutes.mergeAppointments: (context) => const MergeAppointmentListPage(),
//Subscriptions
mySubscriptionsPage: (context) => const MySubscriptionsPage(),
subscriptionsPage: (context) => const SubscriptionsPage(),
AppRoutes.mySubscriptionsPage: (context) => const MySubscriptionsPage(),
AppRoutes.subscriptionsPage: (context) => const SubscriptionsPage(),
//Services
dealerUser: (context) => DealerUserPage(ModalRoute.of(context)!.settings.arguments as String),
servicesList: (context) => const ServicesListPage(),
itemsList: (context) => ItemsListPage(),
createItem: (context) => const CreateItemPage(),
AppRoutes.dealerUser: (context) => DealerUserPage(ModalRoute.of(context)!.settings.arguments as String),
AppRoutes.servicesList: (context) => const ServicesListPage(),
AppRoutes.itemsList: (context) => ItemsListPage(),
AppRoutes.createItem: (context) => const CreateItemPage(),
//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)),
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
schedulesList: (context) => SchedulesListPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as String)),
addSchedule: (context) => const AddSchedulesPage(),
AppRoutes.schedulesList: (context) => SchedulesListPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as String)),
AppRoutes.addSchedule: (context) => const AddSchedulesPage(),
//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 'package:car_provider_app/config/provider_dependencies.dart';
import 'package:mc_common_app/repositories/items_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/schedule_view_model.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/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:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@ -68,8 +67,8 @@ Future<void> main() async {
ChangeNotifierProvider<BaseVM>(
create: (_) => BaseVM(),
),
ChangeNotifierProvider<DashboardVM>(
create: (_) => DashboardVM(
ChangeNotifierProvider<DashboardVMProvider>(
create: (_) => DashboardVMProvider(
userRepo: injector.get<UserRepo>(),
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/views/dashboard/widget/general_appointment_widget.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/generated/locale_keys.g.dart';
import 'package:mc_common_app/utils/enums.dart';
@ -40,7 +41,7 @@ class AppointmentDetailListPage extends StatelessWidget {
onTap: () {
appointmentsVM.selectedAppointmentId = appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index].id ?? 0;
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,
margin: const EdgeInsets.all(21),
onPressed: () {
navigateWithName(context, ProviderAppRoutes.mergeAppointments);
navigateWithName(context, AppRoutes.mergeAppointments);
},
)
: 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:mc_common_app/classes/app_state.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/generated/locale_keys.g.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;
navigateWithName(
context,
ProviderAppRoutes.appointmentDetailList,
AppRoutes.appointmentDetailList,
// arguments: appointmentsVM
// .myFilteredAppointments2[index]
// .customerAppointmentList,

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

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

@ -1,6 +1,7 @@
import 'dart:async';
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:mc_common_app/config/routes.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/utils/utils.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:provider/provider.dart';
class BranchDetailPage extends StatelessWidget {
class BranchDetailPage extends StatefulWidget {
final BranchDetailModel branchData;
const BranchDetailPage(this.branchData, {super.key});
getBranchUsers(BuildContext context) {
scheduleMicrotask(() {
if (context.read<ServiceVM>().allProviderDealersList.isNotEmpty) {
context.read<ServiceVM>().getAllProviderDealers(
{"ServiceProviderBranchID": branchData.id.toString(), "ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""},
);
}
@override
State<BranchDetailPage> createState() => _BranchDetailPageState();
}
class _BranchDetailPageState extends State<BranchDetailPage> {
@override
void initState() {
onInitState();
super.initState();
}
onInitState() async {
ServiceVM serviceVM = context.read<ServiceVM>();
scheduleMicrotask(() async {
await serviceVM.getAllProviderDealers(
{
"ServiceProviderBranchID": widget.branchData.id.toString(),
"ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? "",
},
);
context.read<ServiceVM>().filterUserBranchCategories();
await serviceVM.filterUserBranchCategories();
});
}
@ -82,7 +96,7 @@ class BranchDetailPage extends StatelessWidget {
Widget buildFooterActionWidget(BuildContext context) {
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(
title: LocaleKeys.assignDealerUser.tr(),
maxWidth: double.infinity,
@ -95,19 +109,19 @@ class BranchDetailPage extends StatelessWidget {
showMyBottomSheet(
context,
child: AssignDealerUserSheet(
branchId: branchData.id.toString(),
branchId: widget.branchData.id.toString(),
callBackFunc: () {
getBranchUsers(context);
onInitState();
},
),
);
},
);
} else if (branchData.branchStatus == BranchStatusEnum.pending) {
} else if (widget.branchData.branchStatus == BranchStatusEnum.pending) {
actionWidget = pendingApprovalAction(pendingText: "Approval Pending");
} else if (branchData.branchStatus == BranchStatusEnum.deactivated) {
} else if (widget.branchData.branchStatus == BranchStatusEnum.deactivated) {
actionWidget = pendingApprovalAction(pendingText: "Activate Now");
} else if (branchData.branchStatus == BranchStatusEnum.rejected) {
} else if (widget.branchData.branchStatus == BranchStatusEnum.rejected) {
actionWidget = Column(
children: [
Row(
@ -117,9 +131,9 @@ class BranchDetailPage extends StatelessWidget {
),
Row(
children: [
if (branchData.branchAuditTrial != null && branchData.branchAuditTrial!.isNotEmpty) ...[
if (widget.branchData.branchAuditTrial != null && widget.branchData.branchAuditTrial!.isNotEmpty) ...[
Flexible(
child: ("${branchData.branchAuditTrial!.first.comment}").toText(
child: ("${widget.branchData.branchAuditTrial!.first.comment}").toText(
fontSize: 14,
color: MyColors.primaryColor,
isItalic: true,
@ -203,165 +217,174 @@ class BranchDetailPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
getBranchUsers(context);
return Scaffold(
appBar: CustomAppBar(title: LocaleKeys.branchDetail.tr()),
body: Consumer<ServiceVM>(builder: (context, serviceVM, _) {
return SizedBox(
width: double.infinity,
height: double.infinity,
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
10.height,
Column(
children: [
Row(
children: [
Expanded(
child: Row(
children: [
branchData.branchProfileImage.buildNetworkImage(height: 66, width: 53, fit: BoxFit.cover),
11.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
(branchData.branchName!).toText(fontSize: 16, color: MyColors.darkTextColor),
showData("", branchData.branchDescription.toString()),
],
child: RefreshIndicator(
onRefresh: () async => await onInitState(),
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
10.height,
Column(
children: [
Row(
children: [
Expanded(
child: Row(
children: [
widget.branchData.branchProfileImage.buildNetworkImage(height: 66, width: 53, fit: BoxFit.cover),
11.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
(widget.branchData.branchName!).toText(fontSize: 16, color: MyColors.darkTextColor),
showData("", widget.branchData.branchDescription.toString()),
],
),
),
),
],
],
),
),
),
if (branchData.branchStatus != BranchStatusEnum.pending) ...[
SvgPicture.asset(MyAssets.icEdit).onPress(() {
navigateWithName(context, ProviderAppRoutes.defineBranch, arguments: branchData);
}),
if (widget.branchData.branchStatus != BranchStatusEnum.pending) ...[
SvgPicture.asset(MyAssets.icEdit).onPress(() {
navigateWithName(context, AppRoutes.defineBranch, arguments: widget.branchData);
}),
],
],
],
),
Column(
),
Column(
children: [
showData("${LocaleKeys.location.tr()}:", "${widget.branchData.cityName.toString()}, ${widget.branchData.countryName.toString()}"),
showData("${LocaleKeys.provider.tr()}:", widget.branchData.serviceProviderName.toString()),
showData("${LocaleKeys.time.tr()}:", "${widget.branchData.openTime.toString()} - ${widget.branchData.closeTime.toString()}"),
showData("${LocaleKeys.address.tr()}:", widget.branchData.address.toString()),
],
).paddingOnly(left: 65),
],
).horPaddingMain(),
10.height,
Container(
width: double.infinity,
color: MyColors.darkIconColor,
padding: const EdgeInsets.symmetric(horizontal: 21, vertical: 10),
child: Row(
children: [
showData("${LocaleKeys.location.tr()}:", "${branchData.cityName.toString()}, ${branchData.countryName.toString()}"),
showData("${LocaleKeys.provider.tr()}:", branchData.serviceProviderName.toString()),
showData("${LocaleKeys.time.tr()}:", "${branchData.openTime.toString()} - ${branchData.closeTime.toString()}"),
showData("${LocaleKeys.address.tr()}:", branchData.address.toString()),
const Icon(
Icons.calendar_month,
color: Colors.white,
),
8.width,
Expanded(
child: LocaleKeys.setorEditBranchSchedule.tr().toText(
isUnderLine: true,
fontSize: 12,
color: Colors.white,
decorationColor: MyColors.white,
),
),
],
).paddingOnly(left: 65),
],
).horPaddingMain(),
10.height,
Container(
width: double.infinity,
color: MyColors.darkIconColor,
padding: const EdgeInsets.symmetric(horizontal: 21, vertical: 10),
child: Row(
)
.withArrow(
isArrowEnabled: true,
color: Colors.white,
arrowWidth: 16.16,
arrowHeight: 11.75,
)
.margin(right: 5),
).onPress(() {
if (widget.branchData.branchStatus == BranchStatusEnum.pending || widget.branchData.branchStatus == BranchStatusEnum.rejected) {
Utils.showToast("Please wait for the branch verification.");
return;
}
navigateWithName(context, AppRoutes.schedulesList, arguments: widget.branchData.id.toString());
}),
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(
Icons.calendar_month,
Icons.add,
color: Colors.white,
size: 18,
).toContainer(
borderRadius: 100,
paddingAll: 2,
backgroundColor: MyColors.darkIconColor,
),
8.width,
Expanded(
child: LocaleKeys.setorEditBranchSchedule.tr().toText(
isUnderLine: true,
fontSize: 12,
color: Colors.white,
decorationColor: MyColors.white,
),
),
LocaleKeys.addNewService.tr().toText(fontSize: 15, color: MyColors.lightTextColor, letterSpacing: -0.52),
],
)
.withArrow(
isArrowEnabled: true,
color: Colors.white,
arrowWidth: 16.16,
arrowHeight: 11.75,
)
.margin(right: 5),
).onPress(() {
if (branchData.branchStatus == BranchStatusEnum.pending || branchData.branchStatus == BranchStatusEnum.rejected) {
Utils.showToast("Please wait for the branch verification.");
return;
}
navigateWithName(context, ProviderAppRoutes.schedulesList, arguments: branchData.id.toString());
}),
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(
Icons.add,
color: Colors.white,
size: 18,
).toContainer(
borderRadius: 100,
paddingAll: 2,
backgroundColor: MyColors.darkIconColor,
.toContainer(
borderRadius: 0,
backgroundColor: MyColors.darkWhiteColor,
width: double.infinity,
paddingAll: 25,
margin: const EdgeInsets.only(
left: 20,
right: 20,
top: 20,
))
.onPress(() {
if (widget.branchData.branchStatus == BranchStatusEnum.pending || widget.branchData.branchStatus == BranchStatusEnum.rejected) {
Utils.showToast("Please wait for the branch verification.");
return;
}
navigateWithName(
context,
AppRoutes.createServices3,
arguments: CreateBranchModel(
branchId: widget.branchData.id.toString(),
branchName: widget.branchData.branchName.toString(),
isForEdit: false,
),
);
}),
if (serviceVM.state == ViewState.busy) ...[
30.height,
const Center(
child: CircularProgressIndicator(),
),
8.width,
LocaleKeys.addNewService.tr().toText(fontSize: 15, color: MyColors.lightTextColor, letterSpacing: -0.52),
],
)
.toContainer(
borderRadius: 0,
backgroundColor: MyColors.darkWhiteColor,
width: double.infinity,
paddingAll: 25,
margin: const EdgeInsets.only(
left: 20,
right: 20,
top: 20,
))
.onPress(() {
if (branchData.branchStatus == BranchStatusEnum.pending || branchData.branchStatus == BranchStatusEnum.rejected) {
Utils.showToast("Please wait for the branch verification.");
return;
}
navigateWithName(
context,
ProviderAppRoutes.createServices3,
arguments: CreateBranchModel(
branchId: branchData.id.toString(),
branchName: branchData.branchName.toString(),
isForEdit: false,
] else ...[
ListView.separated(
itemBuilder: (context, pIndex) {
return buildServiceTileWidget(pIndex, serviceVM).onPress(() {
serviceVM.categories[pIndex].branchId = widget.branchData.id.toString();
serviceVM.categories[pIndex].branchName = widget.branchData.branchName.toString();
navigateWithName(context, AppRoutes.servicesList, arguments: serviceVM.categories[pIndex]);
});
},
itemCount: serviceVM.categories.length,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.all(20),
separatorBuilder: (BuildContext context, int index) {
return 12.height;
},
),
);
}),
ListView.separated(
itemBuilder: (context, pIndex) {
return buildServiceTileWidget(pIndex, serviceVM).onPress(() {
serviceVM.categories[pIndex].branchId = branchData.id.toString();
serviceVM.categories[pIndex].branchName = branchData.branchName.toString();
navigateWithName(context, ProviderAppRoutes.servicesList, arguments: serviceVM.categories[pIndex]);
});
},
itemCount: serviceVM.categories.length,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.all(20),
separatorBuilder: (BuildContext context, int index) {
return 12.height;
},
),
12.height,
],
],
12.height,
],
),
),
),
),
Container(
width: double.infinity,
height: 1,
color: Colors.grey[100],
),
buildFooterActionWidget(context),
],
Container(
width: double.infinity,
height: 1,
color: Colors.grey[100],
),
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: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/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:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.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 {
branchModel.countryID = serviceVM.branches!.data!.countryID;
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,
),
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:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.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/generated/locale_keys.g.dart';
import 'package:mc_common_app/theme/colors.dart';
@ -35,7 +35,7 @@ class DealershipView extends StatelessWidget {
),
title: LocaleKeys.defineBranches.tr().toText(fontSize: 12),
onTap: () {
navigateWithName(context, ProviderAppRoutes.branchList);
navigateWithName(context, AppRoutes.branchList);
},
),
ListTile(
@ -45,7 +45,7 @@ class DealershipView extends StatelessWidget {
),
title: LocaleKeys.defineServices.tr().toText(fontSize: 12),
onTap: () {
navigateWithName(context, ProviderAppRoutes.createServices2);
navigateWithName(context, AppRoutes.createServices2);
},
),
ListTile(

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

@ -1,5 +1,4 @@
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/extensions/string_extensions.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:flutter/material.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/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -119,7 +119,7 @@ class _SchedulesListPageState extends State<SchedulesListPage> {
),
).onPress(() {
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,
margin: const EdgeInsets.all(20),
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:easy_localization/easy_localization.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:provider/provider.dart';
@ -116,7 +117,7 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
list: model.servicesDropList,
hint: LocaleKeys.defineServices.tr(),
)
: Container(),
: EmptyWidget(text: LocaleKeys.noServicesAvailable.tr()),
12.height,
if (serviceId != -1) ...[
Column(
@ -281,7 +282,6 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
Utils.showLoading(context);
GenericRespModel mResponse = await model.updateServices(map);
model.getBranchAndServices();
model.filterUserBranchCategories();
Utils.hideLoading(context);
Utils.showToast(mResponse.message ?? "");
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:flutter/material.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;
navigateWithName(
context,
ProviderAppRoutes.matchServices,
AppRoutes.matchServices,
arguments: MatchServicesArguments(
oldBranch: branches[index].id ?? 0,
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:flutter/material.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/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -86,14 +86,11 @@ class ItemsListPage extends StatelessWidget {
),
).onPress(() {
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(
width: double.infinity,
allPading: 12,
);
).toWhiteContainer(width: double.infinity, allPading: 12);
},
separatorBuilder: (BuildContext context, int index) {
return 12.height;
@ -111,7 +108,7 @@ class ItemsListPage extends StatelessWidget {
onPressed: () {
navigateWithName(
context,
ProviderAppRoutes.createItem,
AppRoutes.createItem,
arguments: ItemData(
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_svg/svg.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/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -125,24 +126,26 @@ class _ServicesListPageState extends State<ServicesListPage> {
Expanded(
child: (services[index].serviceDescription ?? "").toText(fontSize: 16),
),
Padding(
padding: const EdgeInsets.all(4.0),
child: SvgPicture.asset(
MyAssets.icEdit,
width: 16,
height: 16,
),
).onPress(() {
navigateWithName(context, ProviderAppRoutes.createServices3,
arguments: CreateBranchModel(
branchId: categoryData.branchId ?? '',
branchName: categoryData.branchName ?? '',
categoryId: categoryData.id.toString(),
categoryName: categoryData.categoryName,
serviceProviderService: services[index],
isForEdit: true,
));
}),
if (services[index].serviceStatus != 1) ...[
Padding(
padding: const EdgeInsets.all(4.0),
child: SvgPicture.asset(
MyAssets.icEdit,
width: 16,
height: 16,
),
).onPress(() {
navigateWithName(context, AppRoutes.createServices3,
arguments: CreateBranchModel(
branchId: categoryData.branchId ?? '',
branchName: categoryData.branchName ?? '',
categoryId: categoryData.id.toString(),
categoryName: categoryData.categoryName,
serviceProviderService: services[index],
isForEdit: true,
));
}),
]
],
),
const SizedBox(height: 4),
@ -170,7 +173,7 @@ class _ServicesListPageState extends State<ServicesListPage> {
],
),
).toWhiteContainer(width: double.infinity, allPading: 12).onPress(
() => navigateWithName(context, ProviderAppRoutes.itemsList, arguments: services[index]),
() => navigateWithName(context, AppRoutes.itemsList, arguments: services[index]),
);
},
separatorBuilder: (context, index) {

@ -1,7 +1,7 @@
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: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/widgets/common_widgets/bottom_nav_bar.dart';
import 'package:provider/provider.dart';
@ -17,14 +17,14 @@ class DashboardView extends StatefulWidget {
}
class _DashboardViewState extends State<DashboardView> {
late DashboardVM dashboardVM;
late DashboardVMProvider dashboardVMProvider;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
super.initState();
dashboardVM = Provider.of<DashboardVM>(context, listen: false);
scheduleMicrotask(() => dashboardVM.onRefresh(context));
dashboardVMProvider = Provider.of<DashboardVMProvider>(context, listen: false);
scheduleMicrotask(() => dashboardVMProvider.onRefresh(context));
}
@override
@ -41,13 +41,13 @@ class _DashboardViewState extends State<DashboardView> {
canPop: false,
child: Scaffold(
key: _scaffoldKey,
body: fragments[context.watch<DashboardVM>().selectedNavbarBarIndex],
body: fragments[context.watch<DashboardVMProvider>().selectedNavbarBarIndex],
bottomNavigationBar: CustomBottomNavbar(
onSelected: (index) {
dashboardVM.onNavbarTapped(index);
dashboardVMProvider.onNavbarTapped(index);
},
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:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.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/utils/enums.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/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/tab/role_type_tab.dart';
import 'package:provider/provider.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:easy_localization/easy_localization.dart';
class BranchAppointmentFragment extends StatelessWidget {
@ -109,7 +104,7 @@ class BranchAppointmentFragment extends StatelessWidget {
).toContainer(borderRadius: 0, isShadowEnabled: true).onPress(() async {
branches[index].countryID = serviceVM.branches!.data!.countryID;
branches[index].countryName = serviceVM.branches!.data!.countryName;
navigateWithName(context, ProviderAppRoutes.appointment, arguments: branches[index]);
navigateWithName(context, AppRoutes.appointment, arguments: branches[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:flutter/material.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/view_models/ad_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/appointments/widgets/common_appointment_slider_widget.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
@ -35,24 +34,24 @@ class HomeFragment extends StatelessWidget {
toolbarHeight: 59,
onTap: () => navigateWithName(context, AppRoutes.settingOptionsMore),
actions: [
IconButton(
onPressed: () => context.read<AppointmentsVM>().onGeneralChatMessagesButtonPressed(context: context),
icon: b.Badge(
badgeContent: '3'.toText(color: MyColors.white),
badgeStyle: const b.BadgeStyle(
badgeColor: MyColors.primaryColor,
padding: EdgeInsets.all(5),
),
child: const Padding(padding: EdgeInsets.only(top: 8, bottom: 8, right: 25, left: 10), child: Icon(Icons.message, size: 21))),
),
10.width,
// IconButton(
// onPressed: () => context.read<AppointmentsVM>().onGeneralChatMessagesButtonPressed(context: context),
// icon: b.Badge(
// badgeContent: '3'.toText(color: MyColors.white),
// badgeStyle: const b.BadgeStyle(
// badgeColor: MyColors.primaryColor,
// padding: EdgeInsets.all(5),
// ),
// child: const Padding(padding: EdgeInsets.only(top: 8, bottom: 8, right: 25, left: 10), child: Icon(Icons.message, size: 21))),
// ),
// 10.width,
],
),
body: SizedBox(
width: double.infinity,
height: double.infinity,
child: RefreshIndicator(
onRefresh: () async => await context.read<DashboardVM>().onRefresh(context),
onRefresh: () async => await context.read<DashboardVMProvider>().onRefresh(context),
child: ListView(
padding: EdgeInsets.zero,
children: [
@ -63,7 +62,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.upcoming_appointment.tr(),
subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(1);
context.read<DashboardVMProvider>().onNavbarTapped(1);
},
).horPaddingMain(),
// const AppointmentSliderWidget().horPaddingMain(),
@ -74,7 +73,7 @@ class HomeFragment extends StatelessWidget {
] else ...[
CommonAppointmentSliderWidget(
onAppointmentClick: (AppointmentListModel value) {
navigateWithName(context, ProviderAppRoutes.appointmentDetailList, arguments: value);
navigateWithName(context, AppRoutes.appointmentDetailList, arguments: value);
},
)
.toWhiteContainer(
@ -88,7 +87,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.myBranches.tr(),
subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(0);
context.read<DashboardVMProvider>().onNavbarTapped(0);
},
).horPaddingMain(),
const ServiceProviderWidget().horPaddingMain(),
@ -114,7 +113,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.my_active_Ads.tr().toUpperCase(),
subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(3);
context.read<DashboardVMProvider>().onNavbarTapped(3);
context.read<AdVM>().updateIsExploreAds(true);
context.read<AdVM>().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds);
},
@ -136,7 +135,7 @@ class HomeFragment extends StatelessWidget {
title: LocaleKeys.myRecommendedAds.tr().toUpperCase(),
subTitle: LocaleKeys.view_all.tr(),
onSubtitleTapped: () {
context.read<DashboardVM>().onNavbarTapped(3);
context.read<DashboardVMProvider>().onNavbarTapped(3);
context.read<AdVM>().updateIsExploreAds(true);
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:mc_common_app/config/routes.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/theme/colors.dart';
@ -53,7 +52,8 @@ class ServiceProviderWidget extends StatelessWidget {
() {
serviceVM.homePageBranches[index].countryID = serviceVM.branches!.data!.countryID;
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> {
@override
void initState() {
// TODO: implement initState
super.initState();
scheduleMicrotask(() {
context.read<SubscriptionsVM>().getSubscriptionBySP(

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

@ -2,10 +2,12 @@ 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/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/theme/colors.dart';
import 'package:mc_common_app/utils/date_helper.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';
class AllSubscriptionsCard extends StatelessWidget {
@ -65,9 +67,9 @@ class AllSubscriptionsCard extends StatelessWidget {
],
),
6.height,
showItem("Ads:", subscription.subscriptionAds.toString()),
showItem("Users:", subscription.subscriptionSubUsers.toString()),
showItem("Branches:", subscription.subscriptionBranches.toString()),
showItem("${LocaleKeys.ads.tr()}:", subscription.subscriptionAds.toString()),
showItem("${LocaleKeys.users.tr()}:", subscription.subscriptionSubUsers.toString()),
showItem("${LocaleKeys.branches.tr()}:", subscription.subscriptionBranches.toString()),
14.height,
Row(
crossAxisAlignment: CrossAxisAlignment.center,
@ -80,7 +82,7 @@ class AllSubscriptionsCard extends StatelessWidget {
children: [
subscription.price.toString().toText(fontSize: 29, isBold: true, color: textColor, letterSpacing: -1.77, height: 1),
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