Added BranchFilters and their API integrations

aamir_dev
Faiz Hashmi 6 months ago
parent e2de476581
commit 0b953bbe7d

@ -2,7 +2,6 @@ import 'package:car_customer_app/config/customer_dependencies.dart';
import 'package:car_customer_app/config/customer_routes.dart'; import 'package:car_customer_app/config/customer_routes.dart';
import 'package:mc_common_app/repositories/branch_repo.dart'; import 'package:mc_common_app/repositories/branch_repo.dart';
import 'package:mc_common_app/repositories/chat_repo.dart'; import 'package:mc_common_app/repositories/chat_repo.dart';
import 'package:mc_common_app/repositories/provider_repo.dart';
import 'package:mc_common_app/repositories/appointment_repo.dart'; import 'package:mc_common_app/repositories/appointment_repo.dart';
import 'package:mc_common_app/repositories/request_repo.dart'; import 'package:mc_common_app/repositories/request_repo.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart';
@ -64,7 +63,6 @@ Future<void> main() async {
ChangeNotifierProvider<AppointmentsVM>( ChangeNotifierProvider<AppointmentsVM>(
create: (_) => AppointmentsVM( create: (_) => AppointmentsVM(
scheduleRepo: injector.get<AppointmentRepo>(), scheduleRepo: injector.get<AppointmentRepo>(),
providerRepo: injector.get<ProviderRepo>(),
commonServices: injector.get<CommonAppServices>(), commonServices: injector.get<CommonAppServices>(),
commonRepo: injector.get<CommonRepo>(), commonRepo: injector.get<CommonRepo>(),
branchRepo: injector.get<BranchRepo>(), branchRepo: injector.get<BranchRepo>(),

@ -58,8 +58,9 @@ class _DashboardPageState extends State<DashboardPage> {
await appointmentsVM.getMyAppointments(); await appointmentsVM.getMyAppointments();
} }
if (appointmentsVM.nearbyBranches.isEmpty) { if (appointmentsVM.nearbyBranches.isEmpty) {
await appointmentsVM.getAllNearBranches(); await appointmentsVM.getAllNearBranches(isFromRefresh: true);
} }
if (adVM.myAds.isEmpty) { if (adVM.myAds.isEmpty) {
await adVM.getMyAds(); await adVM.getMyAds();
} }
@ -160,11 +161,25 @@ class _DashboardPageState extends State<DashboardPage> {
navigateWithName(context, AppRoutes.adsFilterView); navigateWithName(context, AppRoutes.adsFilterView);
} }
if (dashboardVM.selectedNavbarBarIndex == 0) { if (dashboardVM.selectedNavbarBarIndex == 0) {
await context.read<AppointmentsVM>().populateDataForBranchesFilter();
navigateWithName(context, AppRoutes.branchSearchFilterPage); navigateWithName(context, AppRoutes.branchSearchFilterPage);
} }
}, },
child: MyAssets.searchIcon.buildSvg(), child: Consumer(
builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) {
return appointmentsVM.branchFiltersCounter > 0
? Padding(
padding: const EdgeInsets.only(top: 20),
child: Badge(
largeSize: 15,
smallSize: 20,
backgroundColor: MyColors.darkPrimaryColor,
label: Text('${appointmentsVM.branchFiltersCounter}'),
child: MyAssets.searchIcon.buildSvg(),
),
)
: MyAssets.searchIcon.buildSvg();
},
),
)) ))
.paddingOnly(right: 21) .paddingOnly(right: 21)
], ],

@ -27,16 +27,18 @@ class BranchesFragment extends StatelessWidget {
builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) {
return Column( return Column(
children: [ children: [
16.height, if (appointmentsVM.branchesFilterOptions.isNotEmpty) ...[
FiltersList( 16.height,
filterList: appointmentsVM.providersFilterOptions, FiltersList(
onFilterTapped: (index, selectedFilterId) => appointmentsVM.applyFilterOnProviders(index: index), filterList: appointmentsVM.branchesFilterOptions,
), onFilterTapped: (index, selectedFilterId) => appointmentsVM.applyFilterOnBranches(index: index),
),
],
16.height, 16.height,
Expanded( Expanded(
child: RefreshIndicator( child: RefreshIndicator(
onRefresh: () async { onRefresh: () async {
context.read<AppointmentsVM>().getAllNearBranches(isNeedToRebuild: true); context.read<AppointmentsVM>().getAllNearBranches(isNeedToRebuild: true, isFromRefresh: true);
}, },
child: Container( child: Container(
width: double.infinity, width: double.infinity,

@ -44,7 +44,7 @@ class HomeFragment extends StatelessWidget {
subTitle: "View All", subTitle: "View All",
onSubtitleTapped: () { onSubtitleTapped: () {
context.read<DashboardVmCustomer>().onNavbarTapped(0); context.read<DashboardVmCustomer>().onNavbarTapped(0);
context.read<AppointmentsVM>().applyFilterOnProviders(index: 0); context.read<AppointmentsVM>().applyFilterOnBranches(index: 0);
}).horPaddingMain(), }).horPaddingMain(),
Consumer(builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { Consumer(builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) {
return ServiceProviderWidget(nearbyBranches: context.read<AppointmentsVM>().nearbyBranches).horPaddingMain(); return ServiceProviderWidget(nearbyBranches: context.read<AppointmentsVM>().nearbyBranches).horPaddingMain();

Loading…
Cancel
Save