import 'package:customer/constant/constant.dart'; import 'package:customer/controllers/on_demand_home_controller.dart'; import 'package:get/get.dart'; import '../models/provider_serivce_model.dart'; import '../service/fire_store_utils.dart'; class ViewCategoryServiceController extends GetxController { RxBool isLoading = true.obs; RxList providerList = [].obs; RxString categoryId = "".obs, categoryTitle = "".obs; Rx onDemandHomeController = Get.find().obs; @override void onInit() { super.onInit(); final args = Get.arguments as Map; categoryId.value = args['categoryId'] ?? ""; categoryTitle.value = args['categoryTitle'] ?? ""; getData(); } Future getData() async { providerList.clear(); isLoading.value = true; List providerServiceList = await FireStoreUtils.getProviderFuture(categoryId: categoryId.value); List uniqueAuthId = providerServiceList.map((service) => service.author).toList(); List uniqueServiceId = providerServiceList.map((service) => service.id).toList(); List filterByItemLimit = []; List uniqueId = []; if ((Constant.isSubscriptionModelApplied == true || Constant.sectionConstantModel!.adminCommision?.isEnabled == true)) { for (var authUser in uniqueAuthId) { List listofAllServiceByAuth = await FireStoreUtils.getAllProviderServiceByAuthorId(authUser!); for (int i = 0; i < listofAllServiceByAuth.length; i++) { if (listofAllServiceByAuth[i].subscriptionPlan?.itemLimit != null && (i < int.parse( listofAllServiceByAuth[i].subscriptionPlan?.itemLimit ?? '0', ) || listofAllServiceByAuth[i].subscriptionPlan?.itemLimit == '-1')) { if (uniqueServiceId.contains(listofAllServiceByAuth[i].id)) { filterByItemLimit.add(listofAllServiceByAuth[i]); } } } for (var service in filterByItemLimit) { for (var unique in uniqueServiceId) { if (service.id == unique && !uniqueId.contains(service.id) && service.subscriptionTotalOrders != '0') { uniqueId.add(service.id); providerList.add(service); } } } } } else { providerList.addAll(providerServiceList); } isLoading.value = false; } }