69 lines
1.8 KiB
Dart
69 lines
1.8 KiB
Dart
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 = <Product>[].obs;
|
|
var cartCount = 0.obs;
|
|
var totalPrice = 0.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) {
|
|
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();
|
|
}
|
|
}
|