import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:fcs/domain/vo/delivery_address.dart'; import 'package:fcs/domain/vo/shipment_status.dart'; class Package { String id; String trackingID; String userID; String fcsID; String userName; String phoneNumber; DateTime currentStatusDate; List photoUrls; List shipmentHistory; String desc; String status; String shipmentNumber; String senderFCSID; String senderName; String receiverFCSID; String receiverName; String receiverAddress; String receiverNumber; String boxNumber; String cargoDesc; String market; bool isChecked; int rate; int weight; String packageType; String pickUpID; List photos; String remark; DateTime arrivedDate; DeliveryAddress deliveryAddress; int get amount => rate != null && weight != null ? rate * weight : 0; String get packageNumber => shipmentNumber + "-" + receiverNumber + " #" + boxNumber; double get price => rate.toDouble() * weight; Package( {this.id, this.trackingID, this.userID, this.userName, this.fcsID, this.phoneNumber, this.shipmentNumber, this.senderFCSID, this.senderName, this.receiverFCSID, this.receiverName, this.receiverNumber, this.receiverAddress, this.boxNumber, this.rate, this.weight, this.packageType, this.pickUpID, this.remark, this.status, this.arrivedDate, this.cargoDesc, this.market, this.shipmentHistory, this.currentStatusDate, this.photoUrls, this.desc, this.deliveryAddress, this.isChecked = false}); factory Package.fromMap(Map map, String docID) { var _currentStatusDate = (map['status_date'] as Timestamp); List _shipmentStatus = List.from(map['all_status']) .map((e) => ShipmentStatus.fromMap(Map.from(e))) .toList(); List _photoUrls = map['photo_urls'] == null ? [] : List.from(map['photo_urls']); var da = map['delivery_address']; var _da = da != null ? DeliveryAddress.fromMap(da, da["id"]) : null; return Package( id: docID, userID: map['user_id'], fcsID: map['fcs_id'], trackingID: map['tracking_id'], market: map['market'], userName: map['user_name'], phoneNumber: map['phone_number'], remark: map['remark'], desc: map['desc'], status: map['status'], deliveryAddress: _da, currentStatusDate: _currentStatusDate != null ? _currentStatusDate.toDate() : null, photoUrls: _photoUrls, shipmentHistory: _shipmentStatus); } Map toJson() => { 'id': id, 'tracking_id': trackingID, 'market': market, 'fcs_id': fcsID, "desc": desc, "remark": remark, "photo_urls": photoUrls }; factory Package.fromJson(Map json) { return Package( id: json['id'], trackingID: json['tracking_id'], market: json['market'], userName: json['user_name'], phoneNumber: json['phone_number'], status: json['status'], currentStatusDate: DateTime.parse(json['status_date'])); } @override String toString() { return 'Package{id: $id, status: $status, market:$market, trackingID: $trackingID,}'; } }