Merge remote-tracking branch 'origin/faiz_dev' into faiz_dev

aamir_dev
faizatflutter 1 year ago
commit 71de9c5c8e

@ -190,5 +190,3 @@ class MyApp extends StatelessWidget {
); );
} }
} }

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:developer';
import 'package:car_provider_app/views/dashboard/widget/general_appointment_widget.dart'; 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:car_provider_app/views/branch_management/schedule/widgets/chips_picker_item.dart';
import 'package:flutter/cupertino.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/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.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/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:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
@ -43,6 +45,8 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
List<ItemData> selectedList = []; List<ItemData> selectedList = [];
double totalPrice = 0.0;
List<PickerItem>? pickedItems; List<PickerItem>? pickedItems;
ServiceVM? serviceVM; ServiceVM? serviceVM;
@ -56,6 +60,29 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
}); });
} }
openItemsSelectionBottomSheet() async {
return showMyBottomSheet(
context,
child: SelectItemsSheet(
serviceId: service?.id ?? 0,
list: pickedItems,
onSelectItems: (List<ItemData> 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -116,23 +143,7 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
service = value; service = value;
pickedItems = null; pickedItems = null;
serviceVm.setState(ViewState.idle); serviceVm.setState(ViewState.idle);
showMyBottomSheet( openItemsSelectionBottomSheet();
context,
child: SelectItemsSheet(
serviceId: service?.id ?? 0,
onSelectItems: (List<ItemData> 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();
},
),
);
}, },
dropdownValue: service, dropdownValue: service,
list: serviceVm.servicesDropList, list: serviceVm.servicesDropList,
@ -141,7 +152,7 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
: category == null : category == null
? Container() ? Container()
: serviceVm.services != null && serviceVm.servicesDropList.isEmpty : serviceVm.services != null && serviceVm.servicesDropList.isEmpty
? Text(LocaleKeys.noServiceFound.tr()) ? EmptyWidget(text: LocaleKeys.noServicesAvailable.tr())
: const CircularProgressIndicator(), : const CircularProgressIndicator(),
12.height, 12.height,
(service != null && pickedItems != null && pickedItems!.isNotEmpty) (service != null && pickedItems != null && pickedItems!.isNotEmpty)
@ -149,26 +160,11 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
hint: LocaleKeys.selectItems.tr(), hint: LocaleKeys.selectItems.tr(),
itemsList: [...pickedItems ?? []], itemsList: [...pickedItems ?? []],
onClick: () { onClick: () {
showMyBottomSheet( openItemsSelectionBottomSheet();
context,
child: SelectItemsSheet(
serviceId: service?.id ?? 0,
list: pickedItems,
onSelectItems: (List<ItemData> selectedList) {
pickedItems = [];
for (var element in selectedList) {
pickedItems!.add(
PickerItem(id: element.id ?? 0, title: element.name ?? ""),
);
}
serviceVm.notifyListeners();
},
),
);
}, },
) )
: service != null : service != null
? Text(LocaleKeys.noItemSelectedYet.tr()) ? EmptyWidget(text: LocaleKeys.noItemSelectedYet.tr())
: const SizedBox(), : const SizedBox(),
if ((service != null && pickedItems != null && pickedItems!.isNotEmpty)) if ((service != null && pickedItems != null && pickedItems!.isNotEmpty))
Column( Column(
@ -183,7 +179,7 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
calculatePrice().toString().toText( totalPrice.toString().toText(
fontSize: 29, fontSize: 29,
isBold: true, isBold: true,
), ),
@ -198,6 +194,7 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
.paddingOnly(bottom: 5), .paddingOnly(bottom: 5),
], ],
), ),
10.height,
], ],
), ),
], ],
@ -208,6 +205,7 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
); );
}, },
), ),
55.height,
], ],
), ),
), ),
@ -278,12 +276,4 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
}, },
); );
} }
double calculatePrice() {
double total = 0;
for (var element in selectedList) {
total = total + double.parse(element.price ?? "0");
}
return total;
}
} }

@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:car_provider_app/view_models/items_view_model.dart'; import 'package:car_provider_app/view_models/items_view_model.dart';
import 'package:car_provider_app/views/branch_management/schedule/widgets/chips_picker_item.dart'; import 'package:car_provider_app/views/branch_management/schedule/widgets/chips_picker_item.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -13,11 +15,11 @@ import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
class SelectItemsSheet extends StatelessWidget { class SelectItemsSheet extends StatelessWidget {
int serviceId; final int serviceId;
Function(List<ItemData>) onSelectItems; final Function(List<ItemData>) onSelectItems;
List<PickerItem>? list; final List<PickerItem>? 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -72,10 +74,11 @@ class SelectItemsSheet extends StatelessWidget {
controlAffinity: ListTileControlAffinity.leading, controlAffinity: ListTileControlAffinity.leading,
title: itemsVM.serviceItems!.data![index].name!.toText(fontSize: 16), title: itemsVM.serviceItems!.data![index].name!.toText(fontSize: 16),
subtitle: itemsVM.serviceItems!.data![index].price.toString().toText(fontSize: 14, color: MyColors.lightTextColor), subtitle: itemsVM.serviceItems!.data![index].price.toString().toText(fontSize: 14, color: MyColors.lightTextColor),
value: itemsVM.serviceItems!.data![index].isUpdateOrSelected, value: itemsVM.serviceItems!.data![index].isUpdateOrSelected,
onChanged: (bool? v) { onChanged: (bool? v) {
itemsVM.serviceItems!.data![index].isUpdateOrSelected = v; itemsVM.serviceItems!.data![index].isUpdateOrSelected = v;
log("itemsVM.serviceItems!.data![index].isUpdateOrSelected: ${itemsVM.serviceItems!.data![index].isUpdateOrSelected}");
itemsVM.notifyListeners(); itemsVM.notifyListeners();
}, },
); );
@ -97,9 +100,10 @@ class SelectItemsSheet extends StatelessWidget {
maxWidth: double.infinity, maxWidth: double.infinity,
margin: const EdgeInsets.all(20), margin: const EdgeInsets.all(20),
onPressed: () { onPressed: () {
if (context.read<ItemsVM>().serviceItems != null) { final itemsVM = context.read<ItemsVM>();
if (itemsVM.serviceItems != null) {
List<ItemData> list = []; List<ItemData> list = [];
for (var element in context.read<ItemsVM>().serviceItems!.data!) { for (var element in itemsVM.serviceItems!.data!) {
if (element.isUpdateOrSelected ?? false) { if (element.isUpdateOrSelected ?? false) {
list.add(element); list.add(element);
} }

@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:developer'; import 'dart:developer';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/appointments_models/appointment_basic_detail_model.dart';
import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
import 'package:mc_common_app/utils/navigator.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/view_models/service_view_model.dart';
@ -48,14 +49,13 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
DropValue? service; DropValue? service;
bool isEditDisabled = false; bool isEditDisabled = false;
bool isServiceActive = true; bool isServiceActive = false;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
scheduleMicrotask(() async { scheduleMicrotask(() async {
ServiceVM serviceVM = context.read<ServiceVM>(); ServiceVM serviceVM = context.read<ServiceVM>();
log("widget.branchModel!.categoryId: ${widget.branchModel!.categoryId}");
if (widget.branchModel!.categoryId != null) { if (widget.branchModel!.categoryId != null) {
await serviceVM.fetchServicesByCategoryId(int.parse(widget.branchModel!.categoryId ?? "0")); await serviceVM.fetchServicesByCategoryId(int.parse(widget.branchModel!.categoryId ?? "0"));
category = DropValue(int.parse(widget.branchModel!.categoryId ?? "0"), widget.branchModel!.categoryName ?? "", ""); category = DropValue(int.parse(widget.branchModel!.categoryId ?? "0"), widget.branchModel!.categoryName ?? "", "");
@ -63,7 +63,7 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
isAppointmentAvailable = widget.branchModel?.serviceProviderService?.isAllowAppointment ?? false; isAppointmentAvailable = widget.branchModel?.serviceProviderService?.isAllowAppointment ?? false;
serviceRage = widget.branchModel?.serviceProviderService?.customerLocationRange ?? 0; serviceRage = widget.branchModel?.serviceProviderService?.customerLocationRange ?? 0;
serviceStatusEnum = widget.branchModel?.serviceProviderService?.serviceStatusEnum ?? ServiceStatusEnum.pending; serviceStatusEnum = widget.branchModel?.serviceProviderService?.serviceStatusEnum ?? ServiceStatusEnum.pending;
isServiceActive = widget.branchModel?.serviceProviderService?.isActive ?? true; isServiceActive = widget.branchModel?.serviceProviderService?.serviceStatusEnum != ServiceStatusEnum.deactivated;
isEditDisabled = serviceStatusEnum == ServiceStatusEnum.blocked; isEditDisabled = serviceStatusEnum == ServiceStatusEnum.blocked;
if (serviceRage > 0) { if (serviceRage > 0) {
isHomeAppointmentAvailable = true; isHomeAppointmentAvailable = true;
@ -85,7 +85,7 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
child: Consumer<ServiceVM>( child: Consumer<ServiceVM>(
builder: (context, model, _) { builder: (context, serviceVM, _) {
return Column( return Column(
children: [ children: [
Expanded( Expanded(
@ -103,10 +103,10 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
serviceId = -1; serviceId = -1;
isAppointmentAvailable = false; isAppointmentAvailable = false;
isHomeAppointmentAvailable = false; isHomeAppointmentAvailable = false;
model.fetchServicesByCategoryId(value.id); serviceVM.fetchServicesByCategoryId(value.id);
}, },
dropdownValue: category, dropdownValue: category,
list: model.categoryDropList, list: serviceVM.categoryDropList,
hint: category != null ? category!.value : LocaleKeys.selectServiceCategory.tr(), hint: category != null ? category!.value : LocaleKeys.selectServiceCategory.tr(),
), ),
if (widget.branchModel!.isForEdit) ...[ if (widget.branchModel!.isForEdit) ...[
@ -132,9 +132,10 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
trackColor: MyColors.white, trackColor: MyColors.white,
thumbColor: MyColors.greyACColor, thumbColor: MyColors.greyACColor,
value: isServiceActive, value: isServiceActive,
onChanged: (value) { onChanged: (value) async {
if (isEditDisabled) return; if (isEditDisabled) return;
isServiceActive = value;
isServiceActive = await updateServiceStatus(context, value);
setState(() {}); setState(() {});
}, },
), ),
@ -146,23 +147,23 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
] else ...[ ] else ...[
12.height, 12.height,
], ],
(model.state == ViewState.idle) (serviceVM.state == ViewState.idle)
? categoryId != -1 && model.servicesDropList.isNotEmpty ? categoryId != -1 && serviceVM.servicesDropList.isNotEmpty
? DropdownField( ? DropdownField(
(DropValue value) { (DropValue value) {
service = value; service = value;
serviceId = value.id; serviceId = value.id;
isAppointmentAvailable = false; isAppointmentAvailable = false;
isHomeAppointmentAvailable = false; isHomeAppointmentAvailable = false;
model.setState(ViewState.idle); serviceVM.setState(ViewState.idle);
}, },
dropdownValue: service, dropdownValue: service,
list: model.servicesDropList, list: serviceVM.servicesDropList,
hint: LocaleKeys.defineServices.tr(), hint: LocaleKeys.defineServices.tr(),
) )
: categoryId == -1 : categoryId == -1
? const SizedBox() ? const SizedBox()
: model.state == ViewState.idle : serviceVM.state == ViewState.idle
? EmptyWidget(text: LocaleKeys.noServicesAvailable.tr()) ? EmptyWidget(text: LocaleKeys.noServicesAvailable.tr())
: const SizedBox() : const SizedBox()
: const CircularProgressIndicator(), : const CircularProgressIndicator(),
@ -181,7 +182,7 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
if (!isAppointmentAvailable) { if (!isAppointmentAvailable) {
isHomeAppointmentAvailable = false; isHomeAppointmentAvailable = false;
} }
model.setState(ViewState.idle); serviceVM.setState(ViewState.idle);
}, },
), ),
20.height, 20.height,
@ -196,7 +197,7 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
if (isHomeAppointmentAvailable && !isAppointmentAvailable) { if (isHomeAppointmentAvailable && !isAppointmentAvailable) {
isAppointmentAvailable = true; isAppointmentAvailable = true;
} }
model.setState(ViewState.idle); serviceVM.setState(ViewState.idle);
}, },
), ),
20.height, 20.height,
@ -264,10 +265,10 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
margin: const EdgeInsets.all(20), margin: const EdgeInsets.all(20),
onPressed: () { onPressed: () {
if (widget.branchModel!.serviceProviderService != null) { if (widget.branchModel!.serviceProviderService != null) {
updateService(context, model); updateService(context, serviceVM);
} else { } else {
if (model.services != null) { if (serviceVM.services != null) {
createService(context, model); createService(context, serviceVM);
} }
} }
}, },
@ -337,7 +338,7 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
{ {
"id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(), "id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(),
"isAllowAppointment": isAppointmentAvailable, "isAllowAppointment": isAppointmentAvailable,
"isActive": isServiceActive, "isActive": true,
"customerLocationRange": serviceRage, "customerLocationRange": serviceRage,
"rangePricePerKm": chargersPerKm.isEmpty ? "0.0" : chargersPerKm, "rangePricePerKm": chargersPerKm.isEmpty ? "0.0" : chargersPerKm,
} }
@ -347,21 +348,70 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
{ {
"id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(), "id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(),
"isAllowAppointment": isAppointmentAvailable, "isAllowAppointment": isAppointmentAvailable,
"isActive": isServiceActive, "isActive": true,
} }
]; ];
} }
try {
// print(map);
Utils.showLoading(context);
GenericRespModel mResponse = await model.updateServices(map);
model.getBranchAndServices();
Utils.hideLoading(context);
Utils.showToast(mResponse.message ?? "");
if (mResponse.messageStatus == 1) {
context.read<ServiceVM>().filterUserBranchCategories();
context.read<ServiceVM>().isNeedRefreshServicesList = true;
pop(context);
}
} catch (e) {
Utils.hideLoading(context);
log(e.toString());
Utils.showToast(e.toString() ?? "");
}
}
// print(map); Future<bool> updateServiceStatus(BuildContext context, bool value) async {
Utils.showLoading(context); List<Map<String, dynamic>> map = [
GenericRespModel mResponse = await model.updateServices(map); {
model.getBranchAndServices(); "id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(),
Utils.hideLoading(context); "isActive": true,
Utils.showToast(mResponse.message ?? "");
if (mResponse.messageStatus == 1) { //TODO: ZAHOOR WILL ADD SERVICE STATUS HERE TO UPDATE
context.read<ServiceVM>().filterUserBranchCategories(); }
context.read<ServiceVM>().isNeedRefreshServicesList = true; ];
pop(context); try {
final serviceVM = context.read<ServiceVM>();
List<AppointmentBasicDetailsModel> list = await serviceVM.getAppointmentsByServiceID(
context: context,
branchId: int.parse(widget.branchModel!.branchId),
serviceId: widget.branchModel!.serviceProviderService!.serviceProviderServiceId!,
);
List<int> providerServiceIds = [];
providerServiceIds.add(widget.branchModel!.serviceProviderService!.serviceProviderServiceId!);
if (list.isEmpty) {
bool status = await serviceVM.updateServiceStatus(
context: context,
serviceStatusEnum: ServiceStatusEnum.deactivated,
branchId: int.parse(widget.branchModel!.branchId),
providerServiceIds: providerServiceIds,
);
return !status;
} else {
serviceVM.buildDealNotCompletedBottomSheetOptions(
mainContext: context,
appointments: list,
branchName: widget.branchModel!.branchName,
);
}
return value;
} catch (e) {
Utils.hideLoading(context);
log(e.toString());
Utils.showToast(e.toString() ?? "");
return value;
} }
} }
} }

@ -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:car_provider_app/views/branch_management/services/duplication/sheet/approved_branches_list_sheet.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
@ -80,6 +81,96 @@ class _ServicesListPageState extends State<ServicesListPage> {
setState(() {}); 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
categoryData = ModalRoute.of(context)!.settings.arguments as CategoryData; categoryData = ModalRoute.of(context)!.settings.arguments as CategoryData;
@ -116,6 +207,7 @@ class _ServicesListPageState extends State<ServicesListPage> {
width: double.infinity, width: double.infinity,
child: Column( child: Column(
children: [ children: [
buildCategoryTileWidget().paddingOnly(left: 20, right: 20, top: 10),
20.height, 20.height,
Consumer( Consumer(
builder: (BuildContext context, ServiceVM serviceVM, Widget? child) { builder: (BuildContext context, ServiceVM serviceVM, Widget? child) {
@ -130,36 +222,6 @@ class _ServicesListPageState extends State<ServicesListPage> {
); );
}, },
), ),
// 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), const SizedBox(height: 10),
Expanded( Expanded(
child: RefreshIndicator( child: RefreshIndicator(
@ -231,7 +293,7 @@ class _ServicesListPageState extends State<ServicesListPage> {
], ],
), ),
), ),
if (filteredServices[index].serviceStatusEnum != ServiceStatusEnum.blocked) ...[ if (filteredServices[index].serviceStatusEnum != ServiceStatusEnum.blocked && filteredServices[index].serviceStatusEnum != ServiceStatusEnum.deactivated) ...[
const Icon(Icons.arrow_forward_rounded, size: 20), const Icon(Icons.arrow_forward_rounded, size: 20),
], ],
], ],
@ -243,6 +305,11 @@ class _ServicesListPageState extends State<ServicesListPage> {
Utils.showToast(LocaleKeys.blockedByAdmin.tr()); Utils.showToast(LocaleKeys.blockedByAdmin.tr());
return; return;
} }
if (filteredServices[index].serviceStatusEnum == ServiceStatusEnum.deactivated) {
Utils.showToast(LocaleKeys.serviceDeactivated.tr());
return;
}
navigateWithName(context, AppRoutes.itemsList, arguments: filteredServices[index]); navigateWithName(context, AppRoutes.itemsList, arguments: filteredServices[index]);
}); });
}, },

@ -1,4 +1,3 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
@ -16,9 +15,7 @@ import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
class BranchAppointmentFragment extends StatelessWidget { class BranchAppointmentFragment extends StatelessWidget {
const BranchAppointmentFragment({ const BranchAppointmentFragment({super.key});
Key? key,
}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -45,7 +42,9 @@ class BranchAppointmentFragment extends StatelessWidget {
return RefreshIndicator( return RefreshIndicator(
onRefresh: () async => serviceVM.getBranchAndServices(), onRefresh: () async => serviceVM.getBranchAndServices(),
child: branches.isEmpty child: branches.isEmpty
? Center(child: LocaleKeys.noBranchFound.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium),) ? Center(
child: LocaleKeys.noBranchFound.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium),
)
: ListView.separated( : ListView.separated(
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Row( return Row(
@ -71,7 +70,6 @@ class BranchAppointmentFragment extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
// Row( // Row(
// children: [ // children: [
// const Icon( // const Icon(

Loading…
Cancel
Save