import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:customer/constant/constant.dart'; import 'package:customer/models/favourite_model.dart'; import 'package:customer/models/vendor_category_model.dart'; import 'package:customer/models/vendor_model.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import '../models/banner_model.dart'; import '../service/fire_store_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class DineInController extends GetxController { RxBool isLoading = true.obs; RxBool isPopular = true.obs; @override void onInit() { getCategory(); getData(); // TODO: implement onInit super.onInit(); } RxList vendorCategoryModel = [].obs; RxList allNearestRestaurant = [].obs; RxList newArrivalRestaurantList = [].obs; RxList popularRestaurantList = [].obs; RxList bannerBottomModel = [].obs; Rx pageBottomController = PageController(viewportFraction: 0.877).obs; RxInt currentBottomPage = 0.obs; RxList favouriteList = [].obs; Future getData() async { isLoading.value = true; await getZone(); FireStoreUtils.getAllNearestRestaurant(isDining: true).listen((event) async { newArrivalRestaurantList.clear(); allNearestRestaurant.clear(); popularRestaurantList.clear(); allNearestRestaurant.addAll(event); newArrivalRestaurantList.addAll(event); popularRestaurantList.addAll(event); popularRestaurantList.sort( (a, b) => Constant.calculateReview(reviewCount: b.reviewsCount.toString(), reviewSum: b.reviewsSum.toString()) .compareTo(Constant.calculateReview(reviewCount: a.reviewsCount.toString(), reviewSum: a.reviewsSum.toString())), ); newArrivalRestaurantList.sort( (a, b) => (b.createdAt ?? Timestamp.now()).toDate().compareTo((a.createdAt ?? Timestamp.now()).toDate()), ); }); update(); isLoading.value = false; } Future getCategory() async { await FireStoreUtils.getHomeVendorCategory().then( (value) { vendorCategoryModel.value = value; }, ); await FireStoreUtils.getHomeBottomBanner().then( (value) { bannerBottomModel.value = value; }, ); if (Constant.userModel != null) { await FireStoreUtils.getFavouriteRestaurant().then( (value) { favouriteList.value = value; }, ); } } Future getZone() async { await FireStoreUtils.getZone().then((value) { if (value != null) { for (int i = 0; i < value.length; i++) { if (Constant.isPointInPolygon(LatLng(Constant.selectedLocation.location!.latitude ?? 0.0, Constant.selectedLocation.location!.longitude ?? 0.0), value[i].area!)) { Constant.selectedZone = value[i]; Constant.isZoneAvailable = true; break; } else { Constant.isZoneAvailable = false; } } } }); } }