import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:car_provider_app/generated/locale_keys.g.dart'; import 'package:car_provider_app/view_models/branch_view_model.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/m_response.dart'; import 'package:mc_common_app/models/model/branch2.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/utils.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/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; class CreateServicesPage extends StatelessWidget { ServiceProviderBranch? serviceProviderBranch; CreateServicesPage(this.serviceProviderBranch); @override Widget build(BuildContext context) { BranchVM branchVM = context.read(); branchVM.getBranchAndServices(); branchVM.fetchBranches(); if (serviceProviderBranch != null) { branchVM.branchId = serviceProviderBranch!.id ?? -1; branchVM.branchValue = DropValue(branchVM.branchId, serviceProviderBranch!.branchName ?? "", ""); print("llll1 ${branchVM.branchId} ${serviceProviderBranch!.branchName} ${branchVM.branchValue!.value}"); if (branchVM.branchId != 1) branchVM.fetchBranchCategory(EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA"); } return Scaffold( appBar: CustomAppBar(title: LocaleKeys.defineServices.tr()), body: SizedBox( width: double.infinity, height: double.infinity, child: Consumer(builder: (context, model, _) { return Column( children: [ Expanded( child: SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(12.0), child: Column( children: [ model.branch != null ? (model.branchValue != null && model.branchId != -1) ? Text( model.branchValue!.value ?? "", style: const TextStyle( fontSize: 12, fontWeight: FontWeight.bold, ), ).toContainer( padding: const EdgeInsets.only(left: 8, right: 8, bottom: 12, top: 12), backgroundColor: MyColors.textFieldColor, borderRadius: 0, width: double.infinity, ) : DropdownField( (DropValue value) { // countryCode = value.subValue; // countryId = value.id; // fetchCites(); model.branchId = value.id; model.fetchBranchCategory(EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA"); model.setState(ViewState.idle); }, list: model.countryDropListForService, hint: LocaleKeys.selectBranch.tr(), dropdownValue: model.branchValue, ) : const CircularProgressIndicator(), 12.height, (model.category != null) ? DropdownField((DropValue value) { // countryCode = value.subValue; // countryId = value.id; // fetchCites(); model.categoryId = value.id; model.fetchServicesByCategoryId(); model.setState(ViewState.idle); }, list: model.categoryDropList, hint: LocaleKeys.selectServiceCategory.tr()) : model.branchId == -1 ? Container() : const CircularProgressIndicator(), 12.height, if ((model.categoryId != -1)) model.services == null ? const CircularProgressIndicator() : ListView.separated( itemBuilder: (context, index) { return Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ Checkbox( value: model.services!.data![index].isSelected, onChanged: (v) { model.services!.data![index].isSelected = v; model.setState(ViewState.idle); }, ), 12.width, ((EasyLocalization.of(context)?.currentLocale?.countryCode == "SA" ? model.services!.data![index].descriptionN : model.services!.data![index].description) ?? "") .toText(fontSize: 12) ], ), ); }, separatorBuilder: (context, index) { return 1.height; }, itemCount: model.services!.data!.length, physics: NeverScrollableScrollPhysics(), shrinkWrap: true, ) ], ), ), ), ), if (checkServicesSelection(model)) Padding( padding: const EdgeInsets.all(12.0), child: ShowFillButton( title: LocaleKeys.save.tr(), maxWidth: double.infinity, onPressed: () { createService(context, model); }, ), ), ], ); }), ), ); } bool checkServicesSelection(BranchVM model) { bool isServiceSelected = false; try { for (var element in model.services!.data!) { if (element.isSelected ?? false) isServiceSelected = true; } } catch (e) { isServiceSelected = false; } return isServiceSelected; } createService(BuildContext context, BranchVM model) async { List> map = []; if (serviceProviderBranch != null && model.branchId != -1) { for (int i = 0; i < model.services!.data!.length; i++) { if (model.services!.data![i].isSelected ?? false) { var postParams = { // "id": services!.data![i].id, "providerBranchID": model.branchId, "serviceID": model.services!.data![i].id, "isAllowAppointment": true, "isActive": true }; map.add(postParams); } } Utils.showLoading(context); MResponse mResponse = await model.createService(map); Utils.hideLoading(context); if (serviceProviderBranch != null) { Utils.showToast(mResponse.message ?? ""); if (mResponse.messageStatus != 2) { pop(context); pop(context); model.getBranchAndServices(); } } } else { for (int i = 0; i < model.services!.data!.length; i++) { if (model.services!.data![i].isSelected ?? false) { var postParams = { // "id": services!.data![i].id, "providerBranchID": model.branchId, "serviceID": model.services!.data![i].id, "isAllowAppointment": true, "isActive": true }; map.add(postParams); } } Utils.showLoading(context); MResponse mResponse = await model.createService(map); model.getBranchAndServices(); Utils.hideLoading(context); Utils.showToast(mResponse.message ?? ""); } } }