delivery_app/lib/models/stop.dart

83 lines
2.0 KiB
Dart

import 'package:latlong2/latlong.dart';
class Stop {
final int? id;
final String street;
final String houseNumber;
final String notes;
final List<String> newspapers;
final double lat;
final double lng;
final bool delivered;
final int sequence;
Stop({
this.id,
required this.street,
required this.houseNumber,
this.newspapers = const [],
required this.lat,
required this.lng,
this.delivered = false,
this.notes = '',
this.sequence = 0,
});
LatLng get location => LatLng(lat, lng);
Stop copyWith({
int? id,
String? street,
String? houseNumber,
List<String>? newspapers,
double? lat,
double? lng,
bool? delivered,
String? notes,
int? sequence,
}) {
return Stop(
id: id ?? this.id,
street: street ?? this.street,
houseNumber: houseNumber ?? this.houseNumber,
newspapers: newspapers ?? this.newspapers,
lat: lat ?? this.lat,
lng: lng ?? this.lng,
delivered: delivered ?? this.delivered,
notes: notes ?? this.notes,
sequence: sequence ?? this.sequence,
);
}
Map<String, dynamic> toMap() {
return {
if (id != null) 'id': id,
'street': street,
'house_number': houseNumber,
'newspapers': newspapers.join(','),
'lat': lat,
'lng': lng,
'delivered': delivered ? 1 : 0,
'notes': notes,
'sequence': sequence,
};
}
factory Stop.fromMap(Map<String, dynamic> map) {
return Stop(
id: map['id'] as int?,
street: map['street'] as String,
houseNumber: map['house_number'] as String,
newspapers: (map['newspapers'] as String?)?.split(',').where((x) => x.isNotEmpty).toList() ?? [],
lat: map['lat'] as double,
lng: map['lng'] as double,
delivered: map['delivered'] == 1,
notes: (map['notes'] as String?) ?? '',
sequence: map['sequence'] as int? ?? 0,
);
}
@override
String toString() => '$street $houseNumber (${newspapers.join(",")})';
}