import '../api/types.dart'; import 'delivery_address.dart'; import 'delivery_order.dart'; import 'user_info.dart'; class Delivery implements Serializable { final int id; final int routeFragmentId; final int deliveryIndex; final List orders; final UserInfo? deliveredBy; final DeliveryAddress? deliveryAddress; final String? deliveredAt; final String? skippedAt; final String createdAt; final String? updatedAt; final bool delivered; final bool hasBeenSkipped; final bool isSkipped; final String name; const Delivery({ required this.id, required this.routeFragmentId, required this.deliveryIndex, required this.orders, this.deliveredBy, this.deliveryAddress, this.deliveredAt, this.skippedAt, required this.createdAt, this.updatedAt, required this.delivered, required this.hasBeenSkipped, required this.isSkipped, required this.name, }); factory Delivery.fromJson(Map json) { return Delivery( id: json['id'] as int, routeFragmentId: json['routeFragmentId'] as int, deliveryIndex: json['deliveryIndex'] as int, orders: (json['orders'] as List?) ?.map((e) => DeliveryOrder.fromJson(e as Map)) .toList() ?? [], deliveredBy: json['deliveredBy'] != null ? UserInfo.fromJson(json['deliveredBy'] as Map) : null, deliveryAddress: json['deliveryAddress'] != null ? DeliveryAddress.fromJson(json['deliveryAddress'] as Map) : null, deliveredAt: json['deliveredAt'] as String?, skippedAt: json['skippedAt'] as String?, createdAt: json['createdAt'] as String, updatedAt: json['updatedAt'] as String?, delivered: json['delivered'] as bool, hasBeenSkipped: json['hasBeenSkipped'] as bool, isSkipped: json['isSkipped'] as bool, name: json['name'] as String, ); } @override Map toJson() => { 'id': id, 'routeFragmentId': routeFragmentId, 'deliveryIndex': deliveryIndex, 'orders': orders.map((o) => o.toJson()).toList(), 'deliveredBy': deliveredBy?.toJson(), 'deliveryAddress': deliveryAddress?.toJson(), 'deliveredAt': deliveredAt, 'skippedAt': skippedAt, 'createdAt': createdAt, 'updatedAt': updatedAt, 'delivered': delivered, 'hasBeenSkipped': hasBeenSkipped, 'isSkipped': isSkipped, 'name': name, }; }