import 'package:cloud_firestore/cloud_firestore.dart'; class PD { String id; DateTime date; String userID; String userName; String pdNumber; List pdLines = []; PD({this.id, this.date, this.userID, this.userName, this.pdNumber}); factory PD.fromMap(Map map, String id) { var _dateTime = (map['date'] as Timestamp); return PD( id: id, userID: map['user_id'], userName: map['user_name'], date: _dateTime?.toDate(), pdNumber: map['pd_number']); } Map toMap() { List lines = pdLines.map((l) => l.toMap()).toList(); return { 'id': id, 'date': date, 'pd_lines': lines, }; } @override String toString() { return 'PD{id:$id, date:$date,pdLines:$pdLines}'; } } class PDLine { String storageID, storageName, productID, productName; int quantity; String action; PDLine( {this.storageID, this.storageName, this.productID, this.productName, this.quantity}); Map toMap() { return { 'storage_id': storageID, 'storage_name': storageName, 'product_id': productID, 'product_name': productName, 'quantity': quantity }; } factory PDLine.fromMap(Map map) { return PDLine( storageID: map['storage_id'], storageName: map['storage_name'], productID: map['product_id'], productName: map['product_name'], quantity: map['quantity'], ); } @override bool operator ==(other) { if (identical(this, other)) { return true; } return (other.storageID == this.storageID && other.productID == this.productID); } @override int get hashCode { int result = 17; result = 37 * result + storageID.hashCode; result = 37 * result + productID.hashCode; return result; } @override String toString() { return 'PDLine{storageName:$storageName,productName:$productName,quantity:$quantity}'; } }