Files
flutter_wisetronic/lib/models/cart_info.dart
2026-07-12 04:33:48 +08:00

94 lines
2.6 KiB
Dart

import 'dart:convert';
import 'business.dart';
import 'cart_line_item.dart';
import 'extra_fee.dart';
class CartInfo {
int? id;
double? originPrice;
double? discountPrice;
double? totalPrice;
Business? businessInfo;
List<CartLineItem>? productList;
List<ExtraFee>? extraFeeList;
List<ExtraFee>? discountList;
int? deliveryMethod;
String? shippingMethod;
double? amountPaid;
String? extraData;
CartInfo.fromJson(Map<String, dynamic> json)
: id = json['id'],
originPrice = json['origin_price'] != null ? double.parse(json['origin_price'].toString()) : 0.0,
discountPrice = json['discount_price'] != null ? double.parse(json['discount_price'].toString()) : 0.0,
totalPrice = json['total_price'] != null ? double.parse(json['total_price'].toString()) : 0.0,
businessInfo = json['business_info'] != null ? Business.fromJson(json['business_info']) : null,
productList = (json['product_list'] as List).map((i) => CartLineItem.fromJson(i)).toList(),
extraFeeList = (json['extra_fee_list'] as List).map((i) => ExtraFee.fromJson(i)).toList(),
discountList = (json['discount_list'] as List).map((e) => ExtraFee.fromJson(e)).toList(),
deliveryMethod = json['delivery_method'],
shippingMethod = json['shipping_method'],
amountPaid = double.parse(json['amount_paid'].toString()),
extraData = json['extra_data'];
Map<String, dynamic> toJson() => {
'id': id,
'origin_price': originPrice,
'discount_price': discountPrice,
'total_price': totalPrice,
'business_info': businessInfo,
'product_list': productList,
'extra_fee_list': extraFeeList,
'discount_list': discountList,
'delivery_method': deliveryMethod,
'shipping_method': shippingMethod,
'amount_paid': amountPaid,
'extra_data': extraData,
};
addToCart(CartLineItem item) {
if (productList == null) {
productList = [item];
} else {
productList!.add(item);
}
}
removeFromCart() {
}
@override
String toString() {
return json.encode(this);
}
CartInfo();
double getTotalPrice() {
double newTotal = 0.0;
originPrice = 0.0;
discountPrice = 0.0;
totalPrice = 0.0;
for (var i = 0; i < productList!.length; i++) {
newTotal += productList![i].getTotalPrice();
}
originPrice = newTotal;
totalPrice = newTotal;
return totalPrice!;
}
int getProductListTotalQuantity() {
int qty = 0;
if (productList != null && productList!.length > 0) {
for (var i = 0; i < productList!.length; i++) {
qty += productList![i].quantity!.round();
}
}
return qty;
}
}