diff --git a/lib/views/appoinments/add_new_service_appointment_page.dart b/lib/views/appoinments/add_new_service_appointment_page.dart index 112d6a8..2c44a04 100644 --- a/lib/views/appoinments/add_new_service_appointment_page.dart +++ b/lib/views/appoinments/add_new_service_appointment_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:developer'; import 'package:car_provider_app/views/dashboard/widget/general_appointment_widget.dart'; import 'package:car_provider_app/views/branch_management/schedule/widgets/chips_picker_item.dart'; import 'package:flutter/cupertino.dart'; @@ -23,6 +24,7 @@ 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'; 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/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -43,6 +45,8 @@ class _AddNewServiceAppointmentPageState extends State selectedList = []; + double totalPrice = 0.0; + List? pickedItems; ServiceVM? serviceVM; @@ -56,6 +60,29 @@ class _AddNewServiceAppointmentPageState extends State list) { + selectedList.clear(); + selectedList.addAll(list); + pickedItems = []; + totalPrice = 0.0; + for (var element in list) { + totalPrice = totalPrice + double.parse(element.price ?? "0"); + pickedItems!.add( + PickerItem(id: element.id ?? 0, title: element.name ?? ""), + ); + } + setState(() {}); + }, + ), + ); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -116,23 +143,7 @@ class _AddNewServiceAppointmentPageState extends State selectedList) { - this.selectedList.clear(); - this.selectedList = selectedList; - pickedItems = []; - for (var element in selectedList) { - pickedItems!.add( - PickerItem(id: element.id ?? 0, title: element.name ?? ""), - ); - } - serviceVm.notifyListeners(); - }, - ), - ); + openItemsSelectionBottomSheet(); }, dropdownValue: service, list: serviceVm.servicesDropList, @@ -141,7 +152,7 @@ class _AddNewServiceAppointmentPageState extends State selectedList) { - pickedItems = []; - for (var element in selectedList) { - pickedItems!.add( - PickerItem(id: element.id ?? 0, title: element.name ?? ""), - ); - } - serviceVm.notifyListeners(); - }, - ), - ); + openItemsSelectionBottomSheet(); }, ) : service != null - ? Text(LocaleKeys.noItemSelectedYet.tr()) + ? EmptyWidget(text: LocaleKeys.noItemSelectedYet.tr()) : const SizedBox(), if ((service != null && pickedItems != null && pickedItems!.isNotEmpty)) Column( @@ -183,7 +179,7 @@ class _AddNewServiceAppointmentPageState extends State) onSelectItems; - List? list; + final int serviceId; + final Function(List) onSelectItems; + final List? list; - SelectItemsSheet({Key? key, required this.serviceId, required this.onSelectItems, this.list}) : super(key: key); + const SelectItemsSheet({super.key, required this.serviceId, required this.onSelectItems, this.list}); @override Widget build(BuildContext context) { @@ -72,10 +74,11 @@ class SelectItemsSheet extends StatelessWidget { controlAffinity: ListTileControlAffinity.leading, title: itemsVM.serviceItems!.data![index].name!.toText(fontSize: 16), subtitle: itemsVM.serviceItems!.data![index].price.toString().toText(fontSize: 14, color: MyColors.lightTextColor), - value: itemsVM.serviceItems!.data![index].isUpdateOrSelected, onChanged: (bool? v) { itemsVM.serviceItems!.data![index].isUpdateOrSelected = v; + + log("itemsVM.serviceItems!.data![index].isUpdateOrSelected: ${itemsVM.serviceItems!.data![index].isUpdateOrSelected}"); itemsVM.notifyListeners(); }, ); @@ -97,9 +100,10 @@ class SelectItemsSheet extends StatelessWidget { maxWidth: double.infinity, margin: const EdgeInsets.all(20), onPressed: () { - if (context.read().serviceItems != null) { + final itemsVM = context.read(); + if (itemsVM.serviceItems != null) { List list = []; - for (var element in context.read().serviceItems!.data!) { + for (var element in itemsVM.serviceItems!.data!) { if (element.isUpdateOrSelected ?? false) { list.add(element); } diff --git a/lib/views/branch_management/services/services_list_page.dart b/lib/views/branch_management/services/services_list_page.dart index f49dfc7..5e2b47e 100644 --- a/lib/views/branch_management/services/services_list_page.dart +++ b/lib/views/branch_management/services/services_list_page.dart @@ -3,6 +3,7 @@ import 'dart:developer'; import 'package:car_provider_app/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart'; import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -80,6 +81,96 @@ class _ServicesListPageState extends State { setState(() {}); } + bool isCategoryActive = true; + bool isEditDisabled = false; + + Widget buildCategoryTileWidget() { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + flex: 1, + child: Padding( + padding: const EdgeInsets.only(top: 5), + child: SvgPicture.asset( + MyAssets.maintenanceIcon, + width: 14, + height: 14, + ), + ), + ), + 8.width, + Expanded( + flex: 20, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + categoryData.categoryName.toString().toText(fontSize: 16), + ], + ), + // 5.height, + if (categoryData.services != null) ...[ + Container( + child: ("${LocaleKeys.totalNumberOfServices.tr()}: ${categoryData.services!.length}").toText( + fontSize: 12, + color: MyColors.lightTextColor, + ), + ), + ], + Container( + child: ("${LocaleKeys.branchName.tr()}: ${categoryData.branchName}").toText( + fontSize: 12, + color: MyColors.lightTextColor, + ), + ), + ], + ), + ), + + // TODO: NEED TO CONFIRM CATEGORY DEACTIVATION FROM ZAHOOR + const Expanded( + flex: 4, + child: Column( + children: [ + // LocaleKeys.active.tr().toText(fontSize: 16), + // 8.width, + // Container( + // width: 50, + // height: 30, + // decoration: BoxDecoration( + // color: isCategoryActive ? MyColors.darkPrimaryColor : MyColors.white, + // borderRadius: BorderRadius.circular(25.0), + // border: Border.all(color: MyColors.lightTextColor, width: 1), + // ), + // child: Transform.scale( + // scale: 0.8, + // child: CupertinoSwitch( + // activeColor: MyColors.darkPrimaryColor, + // trackColor: MyColors.white, + // thumbColor: MyColors.greyACColor, + // value: isCategoryActive, + // onChanged: (value) async { + // if (isEditDisabled) return; + // isCategoryActive = value; + // // isCategoryActive = await updateServiceStatus(context, value); + // setState(() {}); + // }, + // ), + // ), + // ), + ], + ), + ), + ], + ).toWhiteContainer(width: double.infinity, allPading: 12); + } + @override Widget build(BuildContext context) { categoryData = ModalRoute.of(context)!.settings.arguments as CategoryData; @@ -116,6 +207,7 @@ class _ServicesListPageState extends State { width: double.infinity, child: Column( children: [ + buildCategoryTileWidget().paddingOnly(left: 20, right: 20, top: 10), 20.height, Consumer( builder: (BuildContext context, ServiceVM serviceVM, Widget? child) { @@ -130,36 +222,6 @@ class _ServicesListPageState extends State { ); }, ), - - // Padding( - // padding: const EdgeInsets.only(left: 20, right: 20, top: 20), - // child: RoleTypeTab( - // selectedTab, - // [ - // DropValue(0, 'Active', ''), - // DropValue(1, 'Requested', ''), - // DropValue(2, 'Deactivated', ''), - // ], - // width: (MediaQuery.of(context).size.width / 3) - 26, - // onSelect: (DropValue value) { - // setState(() { - // selectedTab = value.id; - // - // if (selectedTab == 0) { - // selectedService = ServiceStatusEnum.approvedOrActive; - // filteredServices = categoryData.services!.where((i) => i.serviceStatusEnum == ServiceStatusEnum.approvedOrActive).toList(); - // } else if (selectedTab == 2) { - // selectedService = ServiceStatusEnum.deactivated; - // filteredServices = categoryData.services!.where((i) => i.serviceStatusEnum == ServiceStatusEnum.deactivated).toList(); - // } else { - // selectedService = value.id.toServiceStatusEnum(); - // filteredServices = - // categoryData.services!.where((i) => (i.serviceStatusEnum != ServiceStatusEnum.approvedOrActive && i.serviceStatusEnum != ServiceStatusEnum.deactivated)).toList(); - // } - // }); - // }, - // ), - // ), const SizedBox(height: 10), Expanded( child: RefreshIndicator(