import 'package:get/get.dart'; import '../models/product_model.dart'; import '../models/product_model1.dart'; class CartController extends GetxController { var cartList = [].obs; var cartCount = 0.obs; var subtotal = 0.0.obs; var gstTotal = 0.0.obs; var grandTotal = 0.0.obs; // Track the selected products var selectedProducts = [].obs; @override void onInit() { super.onInit(); // Initialize the cart list or other initializations if needed initializeSelections(); } void addToCart(Product product) { var existingProduct = cartList.firstWhereOrNull((p) => p.id == product.id); if (existingProduct != null) { existingProduct.quantity++; } else { cartList.add(product); } cartCount.value = cartList.length; updateTotalPrice(); } void updateTotalPrice() { double subTotal = 0.0; double gstTotalAmount = 0.0; for (var product in selectedProducts) { subTotal += product.price * product.quantity; gstTotalAmount += (product.price * product.quantity * (product.gst / 100)); } subtotal.value = subTotal; gstTotal.value = gstTotalAmount; grandTotal.value = subtotal.value + gstTotal.value; } void increaseQuantity(Product product) { final index = cartList.indexWhere((item) => item.id == product.id); if (index != -1) { cartList[index].quantity++; if (selectedProducts.contains(cartList[index])) { updateTotalPrice(); } } } void decreaseQuantity(Product product) { final index = cartList.indexWhere((item) => item.id == product.id); if (index != -1 && cartList[index].quantity > 1) { cartList[index].quantity--; if (selectedProducts.contains(cartList[index])) { updateTotalPrice(); } } } void removeFromCart(Product product) { cartList.removeWhere((item) => item.id == product.id); selectedProducts.remove(product); cartCount.value = cartList.length; updateTotalPrice(); } void toggleProductSelection(Product product, bool isSelected) { if (isSelected) { if (!selectedProducts.contains(product)) { selectedProducts.add(product); } } else { selectedProducts.remove(product); } updateTotalPrice(); } void selectAllProducts(bool selectAll) { if (selectAll) { selectedProducts.assignAll(cartList); } else { selectedProducts.clear(); } updateTotalPrice(); } void initializeSelections() { selectAllProducts(true); } } // import 'package:get/get.dart'; // import '../models/product_model.dart'; // import 'package:collection/collection.dart'; // // import '../models/product_model1.dart'; // // class CartController extends GetxController { // // var cartList = [].obs; // var cartCount = 0.obs; // var subtotal = 0.0.obs; // var gstTotal = 0.0.obs; // var grandTotal = 0.0.obs; // // // Add item to cart // void addToCart(Product product) { // var existingProduct = cartList.firstWhereOrNull((p) => p.id == product.id); // if (existingProduct != null) { // // Update quantity if already in cart // existingProduct.quantity++; // } else { // // Add new product to cart // cartList.add(product); // } // cartCount.value = cartList.length; // updateTotalPrice(); // } // // void updateTotalPrice() { // double subTotal = 0.0; // double gstTotalAmount = 0.0; // // for (var product in cartList.where((p) => p.selected)) { // subTotal += product.price * product.quantity; // gstTotalAmount += (product.price * product.quantity * (product.gst / 100)); // } // // subtotal.value = subTotal; // gstTotal.value = gstTotalAmount; // grandTotal.value = subtotal.value + gstTotal.value; // } // // // Increase the quantity of a product // void increaseQuantity(Product product) { // final index = cartList.indexWhere((item) => item.id == product.id); // if (index != -1) { // cartList[index].quantity++; // updateTotalPrice(); // } // } // // // Decrease the quantity of a product // void decreaseQuantity(Product product) { // final index = cartList.indexWhere((item) => item.id == product.id); // if (index != -1 && cartList[index].quantity > 1) { // cartList[index].quantity--; // updateTotalPrice(); // } // } // // // Remove item from cart // void removeFromCart(Product product) { // cartList.removeWhere((item) => item.id == product.id); // cartCount.value = cartList.length; // updateTotalPrice(); // } // // // Toggle product selection // void toggleProductSelection(Product product, bool isSelected) { // final index = cartList.indexWhere((item) => item.id == product.id); // if (index != -1) { // cartList[index].selected = isSelected; // updateTotalPrice(); // } // } // }