Files
flutter_wisetronic/lib/models/order.dart
2021-08-31 13:28:33 -04:00

113 lines
3.4 KiB
Dart

import 'dart:convert';
import 'address.dart';
import 'business.dart';
import 'cart_info.dart';
import 'cart_line_item.dart';
import 'distance_info.dart';
import 'fulfillment.dart';
import 'user_position.dart';
class Order {
int id;
int userId;
int businessId;
Business businessInfo;
CartInfo cartInfo;
int status;
double originPrice;
double discountPrice;
double totalPrice;
String consignee;
String phone;
String address;
Address shippingAddress;
int payMethod;
String remark;
String orderNum;
int bookedAt;
int createdAt;
String shippingMethod;
String paymentStatus; // UNPAID, PAID, PARTIALPAID
double amountPaid;
List<Fulfillment> fulfillments;
String extraData;
bool hasComment;
double fee;
UserPosition shipperPosition;
DistanceInfo deliveryDistance;
Order.fromJson(Map<String, dynamic> json)
: id = json['id'],
userId = json['user_id'],
businessId = json['business_id'],
businessInfo = json['business_info'] != null ? Business.fromJson(json['business_info']) : null,
cartInfo = json['cart_info'] != null ? CartInfo.fromJson(json['cart_info']) : null,
status = json['status'],
originPrice = double.parse(json['origin_price'].toString()),
discountPrice = double.parse(json['discount_price'].toString()),
totalPrice = double.parse(json['total_price'].toString()),
consignee = json['consignee'],
phone = json['phone'],
address = json['address'],
shippingAddress = (json['shipping_address'] != null) ? Address.fromJson(json['shipping_address']) : null,
payMethod = json['pay_method'],
remark = json['remark'],
orderNum = json['order_num'],
bookedAt = int.parse(json['booked_at'].toString()),
createdAt = int.parse(json['created_at'].toString()),
shippingMethod = json['shipping_method'],
paymentStatus = json['payment_status'],
amountPaid = double.parse(json['amount_paid'].toString()),
fulfillments = (json['fulfillments'] as List).map((e) => Fulfillment.fromJson(e)).toList(),
extraData = json['extra_data'],
hasComment = json['has_comment'],
fee = double.parse(json['fee'].toString()),
shipperPosition = UserPosition.fromJson(json['shipper_position']),
deliveryDistance = DistanceInfo.fromJson(json['delivery_distance']);
Map<String, dynamic> toJson() => {
'id': id,
'user_id': userId,
'business_id': businessId,
'business_info': businessInfo,
'cart_info': cartInfo,
'status': status,
'origin_price': originPrice,
'discount_price': discountPrice,
'total_price': totalPrice,
'consignee': consignee,
'phone': phone,
'address': address,
'shipping_address': shippingAddress,
'pay_method': payMethod,
'remark': remark,
'order_num': orderNum,
'booked_at': bookedAt,
'created_at': createdAt,
'shipping_method': shippingMethod,
'payment_status': paymentStatus,
'amount_paid': amountPaid,
'fulfillments': fulfillments,
'extra_data': extraData,
'has_comment': hasComment,
'fee': fee,
'shipper_position': shipperPosition,
'delivery_distance': deliveryDistance,
};
double getSubtotal() {
double subtotal = 0.0;
for (CartLineItem lineItem in cartInfo.productList) {
subtotal += lineItem.getTotalPrice();
}
return subtotal;
}
@override
String toString() {
return json.encode(this);
}
}