update address, cancel order

This commit is contained in:
Phuoc Nguyen
2025-11-25 16:39:29 +07:00
parent 039dfb9fb5
commit 84669ac89c
11 changed files with 584 additions and 194 deletions

View File

@@ -3,6 +3,7 @@
/// Data model for order detail API response.
library;
import 'package:worker/features/account/data/models/address_model.dart';
import 'package:worker/features/orders/domain/entities/order_detail.dart';
/// Order Detail Model
@@ -19,8 +20,8 @@ class OrderDetailModel {
});
final OrderDetailInfoModel order;
final AddressInfoModel billingAddress;
final AddressInfoModel shippingAddress;
final AddressModel billingAddress;
final AddressModel shippingAddress;
final List<OrderItemDetailModel> items;
final PaymentTermsInfoModel paymentTerms;
final List<TimelineItemModel> timeline;
@@ -33,10 +34,10 @@ class OrderDetailModel {
order: OrderDetailInfoModel.fromJson(
json['order'] as Map<String, dynamic>,
),
billingAddress: AddressInfoModel.fromJson(
billingAddress: AddressModel.fromJson(
json['billing_address'] as Map<String, dynamic>,
),
shippingAddress: AddressInfoModel.fromJson(
shippingAddress: AddressModel.fromJson(
json['shipping_address'] as Map<String, dynamic>,
),
items: (json['items'] as List<dynamic>)
@@ -93,8 +94,8 @@ class OrderDetailModel {
factory OrderDetailModel.fromEntity(OrderDetail entity) {
return OrderDetailModel(
order: OrderDetailInfoModel.fromEntity(entity.order),
billingAddress: AddressInfoModel.fromEntity(entity.billingAddress),
shippingAddress: AddressInfoModel.fromEntity(entity.shippingAddress),
billingAddress: AddressModel.fromEntity(entity.billingAddress),
shippingAddress: AddressModel.fromEntity(entity.shippingAddress),
items: entity.items
.map((item) => OrderItemDetailModel.fromEntity(item))
.toList(),
@@ -229,105 +230,6 @@ class OrderDetailInfoModel {
}
}
/// Address Info Model
class AddressInfoModel {
const AddressInfoModel({
required this.name,
required this.addressTitle,
required this.addressLine1,
required this.phone,
required this.email,
this.fax,
required this.taxCode,
required this.cityCode,
required this.wardCode,
required this.cityName,
required this.wardName,
required this.isAllowEdit,
});
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 String cityName;
final String wardName;
final bool isAllowEdit;
factory AddressInfoModel.fromJson(Map<String, dynamic> json) {
return AddressInfoModel(
name: json['name'] as String,
addressTitle: json['address_title'] as String,
addressLine1: json['address_line1'] as String,
phone: json['phone'] as String,
email: json['email'] as String,
fax: json['fax'] as String?,
taxCode: json['tax_code'] as String,
cityCode: json['city_code'] as String,
wardCode: json['ward_code'] as String,
cityName: json['city_name'] as String,
wardName: json['ward_name'] as String,
isAllowEdit: json['is_allow_edit'] as bool,
);
}
Map<String, dynamic> toJson() {
return {
'name': name,
'address_title': addressTitle,
'address_line1': addressLine1,
'phone': phone,
'email': email,
'fax': fax,
'tax_code': taxCode,
'city_code': cityCode,
'ward_code': wardCode,
'city_name': cityName,
'ward_name': wardName,
'is_allow_edit': isAllowEdit,
};
}
AddressInfo toEntity() {
return AddressInfo(
name: name,
addressTitle: addressTitle,
addressLine1: addressLine1,
phone: phone,
email: email,
fax: fax,
taxCode: taxCode,
cityCode: cityCode,
wardCode: wardCode,
cityName: cityName,
wardName: wardName,
isAllowEdit: isAllowEdit,
);
}
factory AddressInfoModel.fromEntity(AddressInfo entity) {
return AddressInfoModel(
name: entity.name,
addressTitle: entity.addressTitle,
addressLine1: entity.addressLine1,
phone: entity.phone,
email: entity.email,
fax: entity.fax,
taxCode: entity.taxCode,
cityCode: entity.cityCode,
wardCode: entity.wardCode,
cityName: entity.cityName,
wardName: entity.wardName,
isAllowEdit: entity.isAllowEdit,
);
}
}
/// Order Item Detail Model
class OrderItemDetailModel {
const OrderItemDetailModel({