import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:fcs/domain/entities/box.dart'; import 'package:fcs/domain/vo/delivery_address.dart'; import 'cargo_type.dart'; class Shipment { String id; String shipmentNumber; String shipmentType; DeliveryAddress pickupAddress; DateTime pickupDate; String pickupTimeStart; String pickupTimeEnd; String userName; String phoneNumber; int numberOfPackage; int weight; int handlingFee; String address; String currentStatus; bool isCourier; int radioIndex; List boxes; Shipment( {this.id, this.shipmentNumber, this.shipmentType, this.userName, this.phoneNumber, this.pickupTimeStart, this.pickupTimeEnd, this.numberOfPackage, this.weight, this.handlingFee, this.address, this.currentStatus, this.pickupDate, this.isCourier = false, this.radioIndex = 1, this.boxes}); int get last => DateTime.now().difference(pickupDate).inDays; factory Shipment.fromMap(Map map, String id) { var pd = (map['pickup_date'] as Timestamp); return Shipment( id: id, userName: map['user_name'], shipmentNumber: map['shipment_number'], phoneNumber: map['phone_number'], pickupDate: pd == null ? null : pd.toDate(), pickupTimeStart: map['pickup_time_start'], pickupTimeEnd: map['pickup_time_end'], currentStatus: map['current_status']); } Map toMap() { List _boxes = boxes.map((l) => l.toMap()).toList(); return { "id": id, 'boxes': _boxes, 'shipment_type': shipmentType, 'pickup_address': pickupAddress.toMap(), "pickup_date": pickupDate?.toUtc()?.toIso8601String(), 'pickup_time_start': pickupTimeStart, 'pickup_time_end': pickupTimeEnd, }; } @override String toString() { return 'PickUp{id:$id, userName:$userName,phoneNumber:$phoneNumber,numberOfPackage:$numberOfPackage,weight:$weight,currentStatus:$currentStatus}'; } }