80 lines
2.3 KiB
Dart
80 lines
2.3 KiB
Dart
import 'package:customer/constant/constant.dart';
|
|
import 'package:customer/models/product_model.dart';
|
|
import 'package:customer/models/vendor_model.dart';
|
|
import '../service/fire_store_utils.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
class SearchScreenController extends GetxController {
|
|
@override
|
|
void onInit() {
|
|
// TODO: implement onInit
|
|
getArgument();
|
|
super.onInit();
|
|
}
|
|
|
|
RxBool isLoading = true.obs;
|
|
RxList<VendorModel> vendorList = <VendorModel>[].obs;
|
|
RxList<VendorModel> vendorSearchList = <VendorModel>[].obs;
|
|
|
|
RxList<ProductModel> productList = <ProductModel>[].obs;
|
|
RxList<ProductModel> productSearchList = <ProductModel>[].obs;
|
|
|
|
Future<void> getArgument() async {
|
|
dynamic argumentData = Get.arguments;
|
|
if (argumentData != null) {
|
|
vendorList.value = argumentData['vendorList'];
|
|
productList.clear();
|
|
}
|
|
isLoading.value = false;
|
|
|
|
for (var element in vendorList) {
|
|
await FireStoreUtils.getProductByVendorId(element.id.toString()).then((
|
|
value,
|
|
) {
|
|
if ((Constant.isSubscriptionModelApplied == true ||
|
|
element.adminCommission?.isEnabled == true) &&
|
|
element.subscriptionPlan != null) {
|
|
if (element.subscriptionPlan?.itemLimit == '-1') {
|
|
productList.addAll(value);
|
|
} else {
|
|
int selectedProduct =
|
|
value.length <
|
|
int.parse(element.subscriptionPlan?.itemLimit ?? '0')
|
|
? (value.isEmpty ? 0 : (value.length))
|
|
: int.parse(element.subscriptionPlan?.itemLimit ?? '0');
|
|
productList.addAll(value.sublist(0, selectedProduct));
|
|
}
|
|
} else {
|
|
productList.addAll(value);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
void onSearchTextChanged(String text) {
|
|
if (text.isEmpty) {
|
|
return;
|
|
}
|
|
vendorSearchList.clear();
|
|
productSearchList.clear();
|
|
for (var element in vendorList) {
|
|
if (element.title!.toLowerCase().contains(text.toLowerCase())) {
|
|
vendorSearchList.add(element);
|
|
}
|
|
}
|
|
|
|
for (var element in productList) {
|
|
if (element.name!.toLowerCase().contains(text.toLowerCase())) {
|
|
productSearchList.add(element);
|
|
}
|
|
}
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
vendorSearchList.clear();
|
|
productSearchList.clear();
|
|
super.dispose();
|
|
}
|
|
}
|