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/models/services_models/item_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/views/appointments/widgets/service_item_with_price_checkbox.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/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; class BookAppointmentsItemView extends StatelessWidget { const BookAppointmentsItemView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: CustomAppBar( title: "Select Items", isRemoveBackButton: false, isDrawerEnabled: false, actions: [MyAssets.searchIcon.buildSvg().paddingOnly(right: 21)], onBackButtonTapped: () => Navigator.pop(context), ), body: Consumer( builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( height: 40, width: double.infinity, color: MyColors.darkTextColor, alignment: Alignment.centerLeft, child: "${appointmentsVM.selectedSubServicesCounter} Item(s) Selected".toText(fontSize: 16, color: MyColors.white).horPaddingMain(), ), 16.height, Column( children: [ "Few services are not available on home location. Change the location to workshop to full access the services".toText(fontSize: 12, isItalic: true, color: MyColors.lightTextColor), 8.height, Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ "Change location or service: ".toText(fontSize: 14, isBold: true), "Edit".toText(fontSize: 14, isBold: true, isUnderLine: true, color: MyColors.adPendingStatusColor), 5.width, MyAssets.icEdit.buildSvg(width: 17), ], ).onPress(() {}), 16.height, Divider(), ], ).horPaddingMain(), appointmentsVM.serviceItemsFromApi.isEmpty ? Expanded(child: Center(child: "No Items to show.".toText(fontSize: 16, color: MyColors.lightTextColor))) : ListView.separated( separatorBuilder: (BuildContext context, int index) => Divider(), itemCount: appointmentsVM.serviceItemsFromApi.length, itemBuilder: (BuildContext context, int index) { ItemData itemData = appointmentsVM.serviceItemsFromApi[index]; return ServiceItemWithPriceCheckBox( description: itemData.description ?? "Some description about the sub-services", title: itemData.name!, isSelected: itemData.isUpdateOrSelected!, onSelection: (bool value) { print("itemId: ${itemData.id}"); appointmentsVM.onItemUpdateOrSelected(index, !itemData.isUpdateOrSelected!, itemData.id!); }, priceWidget: Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ // TODO: This Price will be decided according to the service selected itemData.price!.split(".").first.toText(fontSize: 30, isBold: true), " SAR".toText(fontSize: 15, isBold: true, color: MyColors.lightTextColor).paddingOnly(bottom: 5), ], ), ); }, ).expand(), Column( children: [ Divider( height: 1, thickness: 0.7, ), 8.height, if (appointmentsVM.selectSubServicesError != "") Row( mainAxisAlignment: MainAxisAlignment.end, children: [ appointmentsVM.selectSubServicesError.toText(fontSize: 14, color: Colors.red), ], ).paddingOnly(right: 10), 8.height, Row( children: [ Expanded( child: ShowFillButton( txtColor: MyColors.black, maxHeight: 55, title: "Cancel", onPressed: () { appointmentsVM.resetCategorySelectionBottomSheet(); pop(context); }, backgroundColor: MyColors.greyButtonColor, ), ), 12.width, Expanded( child: Builder( builder: (BuildContext context) { return ShowFillButton( maxHeight: 55, title: "Next", onPressed: () async { bool resp = appointmentsVM.validateItemsSelection(); if (resp) { appointmentsVM.onItemsSelectedInService(); Navigator.pop(context); } // bool resp = appointmentsVM.validateItemsSelection(); // if (resp) { // Utils.showLoading(context); // await appointmentsVM.mergeServiceIntoAvailableSchedules(); // appointmentsVM.resetCategorySelectionBottomSheet(); // Utils.hideLoading(context); // Navigator.of(context).pushReplacementNamed(AppRoutes.bookAppointmenServicesView); // } }, backgroundColor: !appointmentsVM.isServiceSelectionValidated() ? MyColors.lightTextColor.withOpacity(0.6) : MyColors.darkPrimaryColor, ); }, ), ), ], ).horPaddingMain(), 16.height, ], ), ], ); }, )); } }