import '../util.dart'; class Product { String accountID; String id; String name; int price; int color; String action; int quantity; int displayOrder; Map priceHistory; bool isDisable; // used for buyer registration int dailySale; int storageCapacity; int dailyQuota; int oldPirce; //used for do item String storageID; String storageName; String get getname => this.name; int get getprice => this.price; List get getPrices => this .priceHistory .entries .map((k) => ProductPrice( name: name, price: k.value, date: DateUtil.toLocal(DateTime.parse(k.key)), displayOrder: displayOrder)) .toList(); Product( {this.accountID, this.id, this.name, this.price, this.color, this.action, this.priceHistory, this.dailySale, this.storageCapacity, this.dailyQuota, this.quantity, this.oldPirce, this.displayOrder, this.storageID, this.storageName, this.isDisable}); factory Product.clone(Product p) { return Product( accountID: p.accountID, id: p.id, name: p.name, price: p.price, color: p.color, displayOrder: p.displayOrder, action: p.action, isDisable: p.isDisable); } factory Product.fromJson(Map json) { return Product( name: json['name'], price: int.parse(json['price']), ); } Map toMap() { return { 'account_id': accountID, 'id': id, 'name': name, 'price': price, 'color': color, 'display_order': displayOrder, 'action': action, 'disable': isDisable }; } factory Product.fromMap(Map map, String id) { return Product( id: id, name: map['name'] ?? map['product_name'], price: map['price'], color: map['color'], quantity: map['quantity'], displayOrder: map['display_order'], priceHistory: map['price_history']?.cast(), storageID: map['storage_id'], storageName: map['storage_name'], isDisable: map['disable']); } @override String toString() { return 'User{name: $name, price: $price,storageID:$storageID,storageName:$storageName,isDisable:$isDisable}'; } } class ProductPrice { DateTime date; int price; String name; int displayOrder; ProductPrice({this.date, this.price, this.name, this.displayOrder}); int compareTo(ProductPrice other) { int r = other.date.compareTo(this.date); if (r == 0) { return this.displayOrder.compareTo(other.displayOrder); } return r; } }