95 lines
2.2 KiB
Dart
95 lines
2.2 KiB
Dart
|
|
import 'dart:convert';
|
||
|
|
import 'dart:developer';
|
||
|
|
|
||
|
|
import 'package:enaklo_pos/data/models/response/product_response_model.dart';
|
||
|
|
|
||
|
|
class ProductQuantity {
|
||
|
|
final Product product;
|
||
|
|
int quantity;
|
||
|
|
String notes;
|
||
|
|
ProductQuantity({
|
||
|
|
required this.product,
|
||
|
|
required this.quantity,
|
||
|
|
this.notes = '',
|
||
|
|
});
|
||
|
|
|
||
|
|
@override
|
||
|
|
bool operator ==(Object other) {
|
||
|
|
if (identical(this, other)) return true;
|
||
|
|
|
||
|
|
return other is ProductQuantity &&
|
||
|
|
other.product == product &&
|
||
|
|
other.quantity == quantity &&
|
||
|
|
other.notes == notes;
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
int get hashCode => product.hashCode ^ quantity.hashCode ^ notes.hashCode;
|
||
|
|
|
||
|
|
Map<String, dynamic> toMap() {
|
||
|
|
return {
|
||
|
|
'product': product.toMap(),
|
||
|
|
'quantity': quantity,
|
||
|
|
'notes': notes,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
Map<String, dynamic> toLocalMap(int orderId) {
|
||
|
|
log("OrderProductId: ${product.id}");
|
||
|
|
|
||
|
|
return {
|
||
|
|
'id_order': orderId,
|
||
|
|
'id_product': product.productId,
|
||
|
|
'quantity': quantity,
|
||
|
|
'price': product.price,
|
||
|
|
'notes': notes,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
Map<String, dynamic> toServerMap(int? orderId) {
|
||
|
|
log("toServerMap: ${product.productId}");
|
||
|
|
|
||
|
|
return {
|
||
|
|
'id_order': orderId ?? 0,
|
||
|
|
'id_product': product.productId,
|
||
|
|
'quantity': quantity,
|
||
|
|
'price': product.price,
|
||
|
|
'notes': notes,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
factory ProductQuantity.fromMap(Map<String, dynamic> map) {
|
||
|
|
return ProductQuantity(
|
||
|
|
product: Product.fromMap(map['product']),
|
||
|
|
quantity: map['quantity']?.toInt() ?? 0,
|
||
|
|
notes: map['notes'] ?? '',
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
factory ProductQuantity.fromLocalMap(Map<String, dynamic> map) {
|
||
|
|
log("ProductQuantity: $map");
|
||
|
|
return ProductQuantity(
|
||
|
|
product: Product.fromOrderMap(map),
|
||
|
|
quantity: map['quantity']?.toInt() ?? 0,
|
||
|
|
notes: map['notes'] ?? '',
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
String toJson() => json.encode(toMap());
|
||
|
|
|
||
|
|
factory ProductQuantity.fromJson(String source) =>
|
||
|
|
ProductQuantity.fromMap(json.decode(source));
|
||
|
|
|
||
|
|
ProductQuantity copyWith({
|
||
|
|
Product? product,
|
||
|
|
int? quantity,
|
||
|
|
String? notes,
|
||
|
|
}) {
|
||
|
|
return ProductQuantity(
|
||
|
|
product: product ?? this.product,
|
||
|
|
quantity: quantity ?? this.quantity,
|
||
|
|
notes: notes ?? this.notes,
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|