diff --git a/lib/views/branch_management/branch/branch_list_page.dart b/lib/views/branch_management/branch/branch_list_page.dart index 388aa0e..67c7725 100644 --- a/lib/views/branch_management/branch/branch_list_page.dart +++ b/lib/views/branch_management/branch/branch_list_page.dart @@ -1,26 +1,25 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/gestures.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/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/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'; +import 'package:mc_common_app/utils/dialogs_and_bottomsheets.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/dashboard_view_model_provider.dart'; +import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.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:mc_common_app/widgets/row_with_arrow.dart'; - +import 'package:mc_common_app/widgets/tab/role_type_tab.dart'; import 'package:provider/provider.dart'; class BranchListPage extends StatelessWidget { @@ -144,7 +143,7 @@ class BranchListPage extends StatelessWidget { ), ], ), - 2.height, + 5.height, // branchModel.distanceKm == null // ? const SizedBox() // : Row( diff --git a/lib/views/branch_management/services/create_services_page3.dart b/lib/views/branch_management/services/create_services_page3.dart index d3dca90..7508fbc 100644 --- a/lib/views/branch_management/services/create_services_page3.dart +++ b/lib/views/branch_management/services/create_services_page3.dart @@ -1,6 +1,5 @@ import 'dart:async'; import 'dart:developer'; -import 'package:car_provider_app/main.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'; diff --git a/lib/views/branch_management/services/duplication/matched_services_page.dart b/lib/views/branch_management/services/duplication/matched_services_page.dart index 541c404..ef5ae76 100644 --- a/lib/views/branch_management/services/duplication/matched_services_page.dart +++ b/lib/views/branch_management/services/duplication/matched_services_page.dart @@ -1,15 +1,16 @@ -import 'package:mc_common_app/generated/locale_keys.g.dart'; -import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:car_provider_app/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart'; import 'package:car_provider_app/views/branch_management/services/duplication/sheet/items_selection_sheet.dart'; +import 'package:easy_localization/easy_localization.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/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; -import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/theme/colors.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/bottom_sheet.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; @@ -17,12 +18,11 @@ import 'package:mc_common_app/widgets/dropdown/dropdown_text.dart'; import 'package:mc_common_app/widgets/empty_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class MatchedServicesPage extends StatefulWidget { final MatchServicesArguments? matchServicesArguments; - const MatchedServicesPage(this.matchServicesArguments, {Key? key}) : super(key: key); + const MatchedServicesPage(this.matchServicesArguments, {super.key}); @override State createState() => _MatchedServicesPageState(); @@ -39,7 +39,11 @@ class _MatchedServicesPageState extends State { } getMatchedServices() { - serviceVM.getAllMatchedServices(widget.matchServicesArguments!.oldBranch, widget.matchServicesArguments!.newBranch, widget.matchServicesArguments!.categoryId); + serviceVM.getAllMatchedServices( + widget.matchServicesArguments!.oldBranch, + widget.matchServicesArguments!.newBranch, + widget.matchServicesArguments!.categoryId, + ); } @override @@ -53,47 +57,41 @@ class _MatchedServicesPageState extends State { height: double.infinity, child: Column( children: [ - DropDownText(widget.matchServicesArguments!.oldBranchName).toContainer( - padding: const EdgeInsets.only( - left: 14, - right: 14, - top: 21, - ), + 12.height, + DropDownText( + title: widget.matchServicesArguments!.oldBranchName, + showDropDownIcon: false, ), 12.height, - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Checkbox( + GestureDetector( + onTap: () { + // Toggle the checkbox value when the row is tapped + bool newValue = !context.read().isAllSelected; + serviceVM.selectAllServices(newValue); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + SizedBox( + height: 30, + width: 30, + child: Checkbox( value: context.watch().isAllSelected, onChanged: (v) { serviceVM.selectAllServices(v ?? false); }, ), - LocaleKeys.selectAll.tr().toText(isBold: true) - ], - ), - Container( - alignment: Alignment.centerRight, - margin: const EdgeInsets.symmetric(horizontal: 14, vertical: 7), - child: LocaleKeys.unselectAll.tr().toText( - color: MyColors.primaryColor, - isUnderLine: true, - isBold: true, - ), - ).onPress(() { - serviceVM.selectAllServices(false); - }), - ], + ), + LocaleKeys.selectAll.tr().toText(fontSize: 14), + ], + ), ), 12.height, Expanded( - child: Consumer(builder: (context, model, _) { - if (model.matchedServices == null) { + child: Consumer(builder: (context, ServiceVM serviceVM, _) { + if (serviceVM.matchedServices == null) { return const Center(child: CircularProgressIndicator()); - } else if (model.matchedServices!.isEmpty) { + } else if (serviceVM.matchedServices!.isEmpty) { return EmptyWidget(text: LocaleKeys.noServicesAvailable.tr(), isWrappedColumn: false); } return ListView.separated( @@ -103,13 +101,13 @@ class _MatchedServicesPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Checkbox( - value: model.matchedServices![index].isExpandedOrSelected, + value: serviceVM.matchedServices![index].isExpandedOrSelected, onChanged: (v) { - if (model.matchedServices![index].serviceItems!.isEmpty) { - Utils.showToast(LocaleKeys.noItemsToShow.tr()); + if (serviceVM.matchedServices![index].serviceItems!.isEmpty) { + Utils.showToast(LocaleKeys.noAvailableItems.tr()); } else { - model.matchedServices![index].isExpandedOrSelected = v ?? false; - model.updateServiceItem(index, model.matchedServices![index].isExpandedOrSelected); + serviceVM.matchedServices![index].isExpandedOrSelected = v ?? false; + serviceVM.updateServiceItem(index, serviceVM.matchedServices![index].isExpandedOrSelected); } }, ), @@ -118,8 +116,9 @@ class _MatchedServicesPageState extends State { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - model.matchedServices![index].serviceDescription.toString().toText(fontSize: 16, isBold: true), - "${model.matchedServices![index].serviceItems!.where((c) => c.isUpdateOrSelected == true).length} items selected out of ${model.matchedServices![index].serviceItems!.length}".toText(color: MyColors.lightTextColor) + serviceVM.matchedServices![index].serviceDescription.toString().toText(fontSize: 16, isBold: true), + "${serviceVM.matchedServices![index].serviceItems!.where((c) => c.isUpdateOrSelected == true).length} items selected out of ${serviceVM.matchedServices![index].serviceItems!.length}" + .toText(color: MyColors.lightTextColor) ], ), ), @@ -134,9 +133,9 @@ class _MatchedServicesPageState extends State { showMyBottomSheet( context, child: ItemsSelectionSheet( - model.matchedServices![index].serviceItems ?? [], + serviceVM.matchedServices![index].serviceItems ?? [], onItemCopied: (List selected) { - model.copyItems(index, selected); + serviceVM.copyItems(index, selected); }, ), ); @@ -147,7 +146,7 @@ class _MatchedServicesPageState extends State { return 8.height; }, padding: const EdgeInsets.symmetric(horizontal: 14), - itemCount: model.matchedServices!.length, + itemCount: serviceVM.matchedServices!.length, ); }), ), @@ -164,7 +163,7 @@ class _MatchedServicesPageState extends State { }, ), ], - ), + ).padding(const EdgeInsets.symmetric(horizontal: 14)), ), ); } diff --git a/lib/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart b/lib/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart index 23fd781..d6c62d7 100644 --- a/lib/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart +++ b/lib/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart @@ -1,8 +1,6 @@ -import 'package:mc_common_app/config/routes.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/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,11 +8,9 @@ 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/view_models/service_view_model.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:geolocator/geolocator.dart'; class MatchServicesArguments { int oldBranch, newBranch, categoryId; @@ -24,9 +20,9 @@ class MatchServicesArguments { } class ApprovedBranchesListSheet extends StatelessWidget { - int newBranch, categoryId; + final int branchId, categoryId; - ApprovedBranchesListSheet({required this.newBranch, required this.categoryId, Key? key}) : super(key: key); + const ApprovedBranchesListSheet({required this.branchId, required this.categoryId, super.key}); @override Widget build(BuildContext context) { @@ -37,10 +33,8 @@ class ApprovedBranchesListSheet extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Select Branch".toText(fontSize: 20, isBold: true), - "Select the branch to copy their items to this branch. You can modify the selection at any time.".toText( - fontSize: 12, - ), + LocaleKeys.selectBranch.tr().toText(fontSize: 20, isBold: true), + LocaleKeys.selectBranchToCopyServices.tr().toText(fontSize: 12), 12.height, Expanded( child: Consumer( @@ -50,25 +44,20 @@ class ApprovedBranchesListSheet extends StatelessWidget { } else { List branches = []; if (model.branches!.data != null) { - branches = model.branches!.data!.serviceProviderBranch!.where((element) => model.selectedBranchStatus == element.statusId).toList(); + branches = model.branches!.data!.serviceProviderBranch!.where((element) => element.branchStatus == BranchStatusEnum.approvedOrActive && element.id != branchId).toList(); } return branches.isEmpty - ? Center(child: Text(LocaleKeys.no_branch.tr())) + ? Center(child: Text(LocaleKeys.noBranchFound.tr())) : ListView.separated( itemBuilder: (context, index) { return Row( children: [ - Container( - width: 74, - height: 50, - decoration: const BoxDecoration( - color: MyColors.darkPrimaryColor, - borderRadius: BorderRadius.all(Radius.circular(8)), - ), - padding: const EdgeInsets.all(6), - child: SvgPicture.asset( - MyAssets.icBranches, - color: Colors.white, + SizedBox( + width: 70, + height: 55, + child: ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: branches[index].branchProfileImage.buildNetworkImage(fit: BoxFit.cover), ), ), 12.width, @@ -77,22 +66,6 @@ class ApprovedBranchesListSheet extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - Row( - children: [ - const Icon( - Icons.place, - size: 12, - color: MyColors.darkPrimaryColor, - ), - Geolocator.distanceBetween(AppState().currentLocation.latitude, AppState().currentLocation.latitude, double.parse(branches[index].latitude ?? "0"), - double.parse(branches[index].longitude ?? "0")) - .toStringAsFixed(2) - .toText( - fontSize: 12, - color: MyColors.darkPrimaryColor, - ) - ], - ), Text( branches[index].branchName ?? "", style: const TextStyle( @@ -100,15 +73,12 @@ class ApprovedBranchesListSheet extends StatelessWidget { fontWeight: FontWeight.bold, ), ), - "Tap to select".toText(fontSize: 10, color: MyColors.grey70Color), + "${LocaleKeys.totalNumberOfServices.tr()} ${branches[index].branchServices!.length}".toText(fontSize: 10, color: MyColors.grey70Color), ], ), ), 12.width, - const Icon( - Icons.arrow_forward_rounded, - size: 16, - ), + const Icon(Icons.arrow_forward_rounded, size: 16), ], ).toContainer(isShadowEnabled: true).onPress(() async { // branches[index].countryID = model.branchs!.data!.countryID; @@ -119,7 +89,7 @@ class ApprovedBranchesListSheet extends StatelessWidget { arguments: MatchServicesArguments( oldBranch: branches[index].id ?? 0, oldBranchName: branches[index].branchName ?? "", - newBranch: newBranch, + newBranch: branchId, categoryId: categoryId, ), ); diff --git a/lib/views/branch_management/services/services_list_page.dart b/lib/views/branch_management/services/services_list_page.dart index f414ee1..343011d 100644 --- a/lib/views/branch_management/services/services_list_page.dart +++ b/lib/views/branch_management/services/services_list_page.dart @@ -104,7 +104,7 @@ class _ServicesListPageState extends State { showMyBottomSheet( context, child: ApprovedBranchesListSheet( - newBranch: int.parse(categoryData.branchId ?? ''), + branchId: int.parse(categoryData.branchId ?? ''), categoryId: categoryData.id ?? 0, ), ); diff --git a/lib/views/dashboard/fragments/home_fragment.dart b/lib/views/dashboard/fragments/home_fragment.dart index 9235339..1c4241c 100644 --- a/lib/views/dashboard/fragments/home_fragment.dart +++ b/lib/views/dashboard/fragments/home_fragment.dart @@ -1,17 +1,13 @@ import 'package:car_provider_app/views/dashboard/widget/my_service_provider.dart'; +import 'package:easy_localization/easy_localization.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'; import 'package:mc_common_app/models/appointments_models/appointment_list_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/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'; @@ -19,10 +15,9 @@ import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/view_all_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class HomeFragment extends StatelessWidget { - const HomeFragment({Key? key}) : super(key: key); + const HomeFragment({super.key}); @override Widget build(BuildContext context) { @@ -64,23 +59,15 @@ class HomeFragment extends StatelessWidget { context.read().onNavbarTapped(1); }, ).horPaddingMain(), - // const AppointmentSliderWidget().horPaddingMain(), - - //TODO TESTING PENDING - if (AppState().currentAppType == AppType.provider && context.read().myUpComingAppointments.isEmpty) ...[ - LocaleKeys.noUpcomingAppointments.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium).paddingAll(21), - ] else ...[ - CommonAppointmentSliderWidget( - onAppointmentClick: (AppointmentListModel value) { - navigateWithName(context, AppRoutes.appointmentDetailList, arguments: value); - }, - ) - .toWhiteContainer( - width: double.infinity, - backgroundColor: Colors.transparent, - ) - .margin(left: 21, right: 21), - ], + CommonAppointmentSliderWidget( + onAppointmentClick: (AppointmentListModel value) => navigateWithName( + context, + AppRoutes.appointmentDetailList, + arguments: value, + )).toWhiteContainer(width: double.infinity, backgroundColor: Colors.transparent).margin( + left: 21, + right: 21, + ), 24.height, ViewAllWidget( title: LocaleKeys.myBranches.tr(), diff --git a/pubspec.yaml b/pubspec.yaml index 9bf8d2d..49dd9ca 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -42,7 +42,9 @@ dependencies: mc_common_app: # path: D:\Development\car_common_app # path: /Users/amir/StudioProjects/car_common_app - path: /Volumes/Data/Projects/Flutter/car_common_app + # path: /Volumes/Data/Projects/Flutter/car_common_app + path: /Users/faizhashmi/Development/Projects/MyProjects/CloudSolutions/car_common_app +