90 lines
1.8 KiB
Dart
90 lines
1.8 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
|
|
class Location extends Equatable {
|
|
final int id;
|
|
final int locationId;
|
|
final int version;
|
|
final String name;
|
|
final String? street;
|
|
final String? number;
|
|
final String? zip;
|
|
final String? city;
|
|
final double? latitude;
|
|
final double? longitude;
|
|
final String? remark;
|
|
|
|
const Location({
|
|
required this.id,
|
|
required this.locationId,
|
|
required this.version,
|
|
required this.name,
|
|
this.street,
|
|
this.number,
|
|
this.zip,
|
|
this.city,
|
|
this.latitude,
|
|
this.longitude,
|
|
this.remark,
|
|
});
|
|
|
|
Location copyWith({
|
|
int? id,
|
|
int? locationId,
|
|
int? version,
|
|
String? name,
|
|
String? street,
|
|
String? number,
|
|
String? zip,
|
|
String? city,
|
|
double? latitude,
|
|
double? longitude,
|
|
String? remark,
|
|
}) {
|
|
return Location(
|
|
id: id ?? this.id,
|
|
locationId: locationId ?? this.locationId,
|
|
version: version ?? this.version,
|
|
name: name ?? this.name,
|
|
street: street ?? this.street,
|
|
number: number ?? this.number,
|
|
zip: zip ?? this.zip,
|
|
city: city ?? this.city,
|
|
latitude: latitude ?? this.latitude,
|
|
longitude: longitude ?? this.longitude,
|
|
remark: remark ?? this.remark,
|
|
);
|
|
}
|
|
|
|
String get fullAddress {
|
|
final parts = <String>[];
|
|
if (street != null && street!.isNotEmpty) {
|
|
parts.add(street!);
|
|
if (number != null && number!.isNotEmpty) {
|
|
parts.add(number!);
|
|
}
|
|
}
|
|
if (zip != null && zip!.isNotEmpty) {
|
|
parts.add(zip!);
|
|
}
|
|
if (city != null && city!.isNotEmpty) {
|
|
parts.add(city!);
|
|
}
|
|
return parts.join(', ');
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [
|
|
id,
|
|
locationId,
|
|
version,
|
|
name,
|
|
street,
|
|
number,
|
|
zip,
|
|
city,
|
|
latitude,
|
|
longitude,
|
|
remark,
|
|
];
|
|
}
|