From 0215abbff825477482d43adf70f49da55137dbdb Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 3 Dec 2024 17:21:27 +0300 Subject: [PATCH] Duration Dis --- .../services/create_services_page3.dart | 110 +++++++++++++----- .../services/services_list_page.dart | 7 +- 2 files changed, 86 insertions(+), 31 deletions(-) diff --git a/lib/views/branch_management/services/create_services_page3.dart b/lib/views/branch_management/services/create_services_page3.dart index d3dca90..48cf0d7 100644 --- a/lib/views/branch_management/services/create_services_page3.dart +++ b/lib/views/branch_management/services/create_services_page3.dart @@ -3,6 +3,7 @@ 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/appointments_models/appointment_basic_detail_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/view_models/service_view_model.dart'; @@ -49,14 +50,13 @@ class _CreateServicesPage3State extends State { DropValue? service; bool isEditDisabled = false; - bool isServiceActive = true; + bool isServiceActive = false; @override void initState() { super.initState(); scheduleMicrotask(() async { ServiceVM serviceVM = context.read(); - log("widget.branchModel!.categoryId: ${widget.branchModel!.categoryId}"); if (widget.branchModel!.categoryId != null) { await serviceVM.fetchServicesByCategoryId(int.parse(widget.branchModel!.categoryId ?? "0")); category = DropValue(int.parse(widget.branchModel!.categoryId ?? "0"), widget.branchModel!.categoryName ?? "", ""); @@ -64,7 +64,7 @@ class _CreateServicesPage3State extends State { isAppointmentAvailable = widget.branchModel?.serviceProviderService?.isAllowAppointment ?? false; serviceRage = widget.branchModel?.serviceProviderService?.customerLocationRange ?? 0; serviceStatusEnum = widget.branchModel?.serviceProviderService?.serviceStatusEnum ?? ServiceStatusEnum.pending; - isServiceActive = widget.branchModel?.serviceProviderService?.isActive ?? true; + isServiceActive = widget.branchModel?.serviceProviderService?.serviceStatusEnum != ServiceStatusEnum.deactivated; isEditDisabled = serviceStatusEnum == ServiceStatusEnum.blocked; if (serviceRage > 0) { isHomeAppointmentAvailable = true; @@ -86,7 +86,7 @@ class _CreateServicesPage3State extends State { width: double.infinity, height: double.infinity, child: Consumer( - builder: (context, model, _) { + builder: (context, serviceVM, _) { return Column( children: [ Expanded( @@ -104,10 +104,10 @@ class _CreateServicesPage3State extends State { serviceId = -1; isAppointmentAvailable = false; isHomeAppointmentAvailable = false; - model.fetchServicesByCategoryId(value.id); + serviceVM.fetchServicesByCategoryId(value.id); }, dropdownValue: category, - list: model.categoryDropList, + list: serviceVM.categoryDropList, hint: category != null ? category!.value : LocaleKeys.selectServiceCategory.tr(), ), if (widget.branchModel!.isForEdit) ...[ @@ -133,9 +133,10 @@ class _CreateServicesPage3State extends State { trackColor: MyColors.white, thumbColor: MyColors.greyACColor, value: isServiceActive, - onChanged: (value) { + onChanged: (value) async { if (isEditDisabled) return; - isServiceActive = value; + + isServiceActive = await updateServiceStatus(context, value); setState(() {}); }, ), @@ -147,23 +148,23 @@ class _CreateServicesPage3State extends State { ] else ...[ 12.height, ], - (model.state == ViewState.idle) - ? categoryId != -1 && model.servicesDropList.isNotEmpty + (serviceVM.state == ViewState.idle) + ? categoryId != -1 && serviceVM.servicesDropList.isNotEmpty ? DropdownField( (DropValue value) { service = value; serviceId = value.id; isAppointmentAvailable = false; isHomeAppointmentAvailable = false; - model.setState(ViewState.idle); + serviceVM.setState(ViewState.idle); }, dropdownValue: service, - list: model.servicesDropList, + list: serviceVM.servicesDropList, hint: LocaleKeys.defineServices.tr(), ) : categoryId == -1 ? const SizedBox() - : model.state == ViewState.idle + : serviceVM.state == ViewState.idle ? EmptyWidget(text: LocaleKeys.noServicesAvailable.tr()) : const SizedBox() : const CircularProgressIndicator(), @@ -182,7 +183,7 @@ class _CreateServicesPage3State extends State { if (!isAppointmentAvailable) { isHomeAppointmentAvailable = false; } - model.setState(ViewState.idle); + serviceVM.setState(ViewState.idle); }, ), 20.height, @@ -197,7 +198,7 @@ class _CreateServicesPage3State extends State { if (isHomeAppointmentAvailable && !isAppointmentAvailable) { isAppointmentAvailable = true; } - model.setState(ViewState.idle); + serviceVM.setState(ViewState.idle); }, ), 20.height, @@ -265,10 +266,10 @@ class _CreateServicesPage3State extends State { margin: const EdgeInsets.all(20), onPressed: () { if (widget.branchModel!.serviceProviderService != null) { - updateService(context, model); + updateService(context, serviceVM); } else { - if (model.services != null) { - createService(context, model); + if (serviceVM.services != null) { + createService(context, serviceVM); } } }, @@ -338,7 +339,7 @@ class _CreateServicesPage3State extends State { { "id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(), "isAllowAppointment": isAppointmentAvailable, - "isActive": isServiceActive, + "isActive": true, "customerLocationRange": serviceRage, "rangePricePerKm": chargersPerKm.isEmpty ? "0.0" : chargersPerKm, } @@ -348,21 +349,70 @@ class _CreateServicesPage3State extends State { { "id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(), "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().filterUserBranchCategories(); + context.read().isNeedRefreshServicesList = true; + pop(context); + } + } catch (e) { + Utils.hideLoading(context); + log(e.toString()); + Utils.showToast(e.toString() ?? ""); + } + } - // 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().filterUserBranchCategories(); - context.read().isNeedRefreshServicesList = true; - pop(context); + Future updateServiceStatus(BuildContext context, bool value) async { + List> map = [ + { + "id": widget.branchModel!.serviceProviderService!.serviceProviderServiceId.toString(), + "isActive": true, + + //TODO: ZAHOOR WILL ADD SERVICE STATUS HERE TO UPDATE + } + ]; + try { + final serviceVM = context.read(); + List list = await serviceVM.getAppointmentsByServiceID( + context: context, + branchId: int.parse(widget.branchModel!.branchId), + serviceId: widget.branchModel!.serviceProviderService!.serviceProviderServiceId!, + ); + + List 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; } } } diff --git a/lib/views/branch_management/services/services_list_page.dart b/lib/views/branch_management/services/services_list_page.dart index f414ee1..f49dfc7 100644 --- a/lib/views/branch_management/services/services_list_page.dart +++ b/lib/views/branch_management/services/services_list_page.dart @@ -231,7 +231,7 @@ class _ServicesListPageState extends State { ], ), ), - 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), ], ], @@ -243,6 +243,11 @@ class _ServicesListPageState extends State { Utils.showToast(LocaleKeys.blockedByAdmin.tr()); return; } + + if (filteredServices[index].serviceStatusEnum == ServiceStatusEnum.deactivated) { + Utils.showToast(LocaleKeys.serviceDeactivated.tr()); + return; + } navigateWithName(context, AppRoutes.itemsList, arguments: filteredServices[index]); }); },