diff --git a/packages/chicken/lib/presentation/pages/buy_out_of_province/logic.dart b/packages/chicken/lib/presentation/pages/buy_out_of_province/logic.dart index 3a71c4e..17d7907 100644 --- a/packages/chicken/lib/presentation/pages/buy_out_of_province/logic.dart +++ b/packages/chicken/lib/presentation/pages/buy_out_of_province/logic.dart @@ -59,7 +59,7 @@ class BuyOutOfProvinceLogic extends GetxController { getStewardPurchaseOutOfProvince(); selectedProvince.listen((p0) => getCites()); - selectedProduct.value = outOfTheProvinceLogic.rolesProductsModel.first; + selectedProduct.value = rootLogic.rolesProductsModel.first; setupListeners(); debounce( @@ -220,7 +220,7 @@ class BuyOutOfProvinceLogic extends GetxController { carcassWeightController.text = item.weightOfCarcasses?.toInt().toString() ?? ''; selectedProvince.value = IranProvinceCityModel(name: item.province); selectedCity.value = IranProvinceCityModel(name: item.city); - selectedProduct.value = outOfTheProvinceLogic.rolesProductsModel.firstWhere( + selectedProduct.value = rootLogic.rolesProductsModel.firstWhere( (element) => element.key == item.product!.key, ); isSubmitButtonEnabled.value = true; diff --git a/packages/chicken/lib/presentation/pages/buy_out_of_province/view.dart b/packages/chicken/lib/presentation/pages/buy_out_of_province/view.dart index ca39b0a..d7a2881 100644 --- a/packages/chicken/lib/presentation/pages/buy_out_of_province/view.dart +++ b/packages/chicken/lib/presentation/pages/buy_out_of_province/view.dart @@ -407,7 +407,7 @@ class BuyOutOfProvincePage extends GetView { Widget _productDropDown() { return Obx(() { return OverlayDropdownWidget( - items: controller.outOfTheProvinceLogic.rolesProductsModel, + items: controller.rootLogic.rolesProductsModel, height: 56, hasDropIcon: false, background: Colors.white, diff --git a/packages/chicken/lib/presentation/pages/root/logic.dart b/packages/chicken/lib/presentation/pages/root/logic.dart index 457ef1a..733b962 100644 --- a/packages/chicken/lib/presentation/pages/root/logic.dart +++ b/packages/chicken/lib/presentation/pages/root/logic.dart @@ -6,6 +6,7 @@ import 'package:rasadyar_auth/data/utils/safe_call.dart'; import 'package:rasadyar_chicken/data/di/chicken_di.dart'; import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart'; import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart'; +import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart'; import 'package:rasadyar_chicken/data/repositories/chicken_repository.dart'; import 'package:rasadyar_chicken/data/repositories/chicken_repository_imp.dart'; import 'package:rasadyar_chicken/presentation/pages/buy/view.dart'; @@ -24,7 +25,7 @@ class RootLogic extends GetxController { List pages = [BuyPage(), SalePage(), HomePage(), SegmentationPage(), ProfilePage()]; final defaultRoutes = {0: ChickenRoutes.buy, 1: ChickenRoutes.sale}; - + RxList rolesProductsModel = RxList(); late DioRemote dioRemote; var tokenService = Get.find(); @@ -58,6 +59,9 @@ class RootLogic extends GetxController { if (inventoryModel.value == null) { getInventory(); } + if (rolesProductsModel.isEmpty) { + getRolesProducts(); + } } @override @@ -129,4 +133,17 @@ class RootLogic extends GetxController { provinces.clear(); } } + + Future getRolesProducts() async { + safeCall( + call: () async => + await chickenRepository.getRolesProducts(token: tokenService.accessToken.value!), + onSuccess: (result) { + if (result != null) { + rolesProductsModel.value = result; + } + }, + onError: (error, stacktrace) {}, + ); + } } diff --git a/packages/chicken/lib/presentation/pages/sale/logic.dart b/packages/chicken/lib/presentation/pages/sale/logic.dart index b180d1b..5f3ff7e 100644 --- a/packages/chicken/lib/presentation/pages/sale/logic.dart +++ b/packages/chicken/lib/presentation/pages/sale/logic.dart @@ -9,7 +9,6 @@ import 'package:rasadyar_core/core.dart'; class SaleLogic extends GetxController { Rxn?> allocatedMadeModel = Rxn?>(); - RxList rolesProductsModel = RxList(); RxList guildsModel = [].obs; @@ -24,7 +23,7 @@ class SaleLogic extends GetxController { void onReady() { super.onReady(); getStewardDashBord(); - getRolesProducts(); + } Future getAllocatedMade() async { @@ -83,19 +82,6 @@ class SaleLogic extends GetxController { ); } - Future getRolesProducts() async { - safeCall( - call: () async => await rootLogic.chickenRepository.getRolesProducts( - token: rootLogic.tokenService.accessToken.value!, - ), - onSuccess: (result) { - if (result != null) { - rolesProductsModel.value = result; - } - }, - onError: (error, stacktrace) {}, - ); - } Future getGuilds() async {} diff --git a/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/logic.dart b/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/logic.dart index ea1223b..944f546 100644 --- a/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/logic.dart +++ b/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/logic.dart @@ -56,7 +56,7 @@ class SalesOutOfProvinceSalesListLogic extends GetxController { void onReady() { super.onReady(); - selectedProduct.value = saleLogic.rolesProductsModel.first; + selectedProduct.value = rootLogic.rolesProductsModel.first; debounce( searchedValue, (callback) => getOutProvinceSales(), @@ -140,7 +140,7 @@ class SalesOutOfProvinceSalesListLogic extends GetxController { selectedBuyer.value = buyerLogic.buyerList.value.data?.results?.firstWhere( (element) => element.key == item.buyer?.key, ); - selectedProduct.value = saleLogic.rolesProductsModel.first; + selectedProduct.value = rootLogic.rolesProductsModel.first; key = item.key; isSaleSubmitButtonEnabled.value = true; } diff --git a/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/view.dart b/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/view.dart index 28d4058..20f5f46 100644 --- a/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/view.dart +++ b/packages/chicken/lib/presentation/pages/sales_out_of_province_sales_list/view.dart @@ -343,7 +343,7 @@ class SalesOutOfProvinceSalesListPage extends GetView( - items: controller.saleLogic.rolesProductsModel, + items: controller.rootLogic.rolesProductsModel, height: 56, hasDropIcon: false, background: Colors.white, diff --git a/packages/chicken/lib/presentation/pages/segmentation/logic.dart b/packages/chicken/lib/presentation/pages/segmentation/logic.dart index 257e699..250bfae 100644 --- a/packages/chicken/lib/presentation/pages/segmentation/logic.dart +++ b/packages/chicken/lib/presentation/pages/segmentation/logic.dart @@ -22,10 +22,9 @@ class SegmentationLogic extends GetxController { RxnString searchedValue = RxnString(); GlobalKey formKey = GlobalKey(); - TextEditingController weightController = TextEditingController(); - RxBool isSaleSubmitButtonEnabled = false.obs; + TextEditingController weightController = TextEditingController(text: '0'); + RxBool isSubmitButtonEnabled = false.obs; - RxList rolesProductsModel = RxList(); Rxn selectedProduct = Rxn(); Rxn selectedSegment = Rxn(); @@ -36,6 +35,7 @@ class SegmentationLogic extends GetxController { void onInit() { super.onInit(); routesName = ['قطعه‌بندی'].toList(); + once(rootLogic.rolesProductsModel, (callback) => selectedProduct.value = callback.first); getAllSegmentation(); } @@ -61,6 +61,11 @@ class SegmentationLogic extends GetxController { (callback) => getAllSegmentation(), time: Duration(milliseconds: timeDebounce), ); + ever(selectedSegment, (_) { + validateForm(); + }); + + weightController.addListener(() => validateForm()); } void setEditData(SegmentationModel item) { @@ -69,13 +74,23 @@ class SegmentationLogic extends GetxController { } void clearForm() { - weightController.clear(); - isSaleSubmitButtonEnabled.value = false; + weightController.text = '0'; + isSubmitButtonEnabled.value = false; selectedProduct.value = null; selectedSegment.value = null; formKey.currentState?.reset(); } + void validateForm() { + isSubmitButtonEnabled = RxBool( + selectedProduct.value != null && + selectedSegment.value != null && + weightController.text.isNotEmpty && + int.tryParse(weightController.text) != null && + int.tryParse(weightController.text)! > 0, + ); + } + Future getAllSegmentation([bool isLoadingMore = false]) async { if (isLoadingMore) { isLoadingMoreAllocationsMade.value = true; @@ -134,22 +149,6 @@ class SegmentationLogic extends GetxController { ); } - Future getRolesProducts() async { - safeCall( - call: () async => await rootLogic.chickenRepository.getRolesProducts( - token: rootLogic.tokenService.accessToken.value!, - ), - onSuccess: (result) { - if (result != null) { - rolesProductsModel.value = result; - - selectedProduct.value = rolesProductsModel.first; - } - }, - onError: (error, stacktrace) {}, - ); - } - Future editSegment() async { var res = true; safeCall( diff --git a/packages/chicken/lib/presentation/routes/pages.dart b/packages/chicken/lib/presentation/routes/pages.dart index b207d91..abab154 100644 --- a/packages/chicken/lib/presentation/routes/pages.dart +++ b/packages/chicken/lib/presentation/routes/pages.dart @@ -35,13 +35,14 @@ sealed class ChickenPages { page: () => RootPage(), middlewares: [AuthMiddleware()], binding: BindingsBuilder(() { - Get.lazyPut(() => RootLogic()); Get.lazyPut(() => BaseLogic()); + Get.lazyPut(() => RootLogic()); Get.lazyPut(() => HomeLogic()); Get.lazyPut(() => BuyLogic()); Get.lazyPut(() => SaleLogic()); Get.lazyPut(() => ProfileLogic()); Get.lazyPut(() => SegmentationLogic()); + Get.lazyPut(() => SearchLogic()); }), ),