106 lines
2.5 KiB
Dart
106 lines
2.5 KiB
Dart
/// Address Entity
|
|
///
|
|
/// Represents a delivery/billing address for the user.
|
|
/// Corresponds to Frappe ERPNext Address doctype.
|
|
library;
|
|
|
|
import 'package:equatable/equatable.dart';
|
|
|
|
/// Address Entity
|
|
///
|
|
/// Domain entity representing a user's delivery or billing address.
|
|
class Address extends Equatable {
|
|
final String name;
|
|
final String addressTitle;
|
|
final String addressLine1;
|
|
final String phone;
|
|
final String? email;
|
|
final String? fax;
|
|
final String? taxCode;
|
|
final String cityCode;
|
|
final String wardCode;
|
|
final bool isDefault;
|
|
final String? cityName;
|
|
final String? wardName;
|
|
|
|
const Address({
|
|
required this.name,
|
|
required this.addressTitle,
|
|
required this.addressLine1,
|
|
required this.phone,
|
|
this.email,
|
|
this.fax,
|
|
this.taxCode,
|
|
required this.cityCode,
|
|
required this.wardCode,
|
|
this.isDefault = false,
|
|
this.cityName,
|
|
this.wardName,
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [
|
|
name,
|
|
addressTitle,
|
|
addressLine1,
|
|
phone,
|
|
email,
|
|
fax,
|
|
taxCode,
|
|
cityCode,
|
|
wardCode,
|
|
isDefault,
|
|
cityName,
|
|
wardName,
|
|
];
|
|
|
|
/// Get full address display string
|
|
String get fullAddress {
|
|
final parts = <String>[];
|
|
parts.add(addressLine1);
|
|
if (wardName != null && wardName!.isNotEmpty) {
|
|
parts.add(wardName!);
|
|
}
|
|
if (cityName != null && cityName!.isNotEmpty) {
|
|
parts.add(cityName!);
|
|
}
|
|
return parts.join(', ');
|
|
}
|
|
|
|
/// Create a copy with modified fields
|
|
Address copyWith({
|
|
String? name,
|
|
String? addressTitle,
|
|
String? addressLine1,
|
|
String? phone,
|
|
String? email,
|
|
String? fax,
|
|
String? taxCode,
|
|
String? cityCode,
|
|
String? wardCode,
|
|
bool? isDefault,
|
|
String? cityName,
|
|
String? wardName,
|
|
}) {
|
|
return Address(
|
|
name: name ?? this.name,
|
|
addressTitle: addressTitle ?? this.addressTitle,
|
|
addressLine1: addressLine1 ?? this.addressLine1,
|
|
phone: phone ?? this.phone,
|
|
email: email ?? this.email,
|
|
fax: fax ?? this.fax,
|
|
taxCode: taxCode ?? this.taxCode,
|
|
cityCode: cityCode ?? this.cityCode,
|
|
wardCode: wardCode ?? this.wardCode,
|
|
isDefault: isDefault ?? this.isDefault,
|
|
cityName: cityName ?? this.cityName,
|
|
wardName: wardName ?? this.wardName,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return 'Address(name: $name, addressTitle: $addressTitle, addressLine1: $addressLine1, phone: $phone, isDefault: $isDefault)';
|
|
}
|
|
}
|