create order
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
part of '../order_dtos.dart';
|
||||
|
||||
@freezed
|
||||
class OrderRequestDto with _$OrderRequestDto {
|
||||
const OrderRequestDto._();
|
||||
|
||||
const factory OrderRequestDto({
|
||||
@JsonKey(name: "outlet_id") String? outletId,
|
||||
@JsonKey(name: "customer_id") String? customerId,
|
||||
@JsonKey(name: "table_number") String? tableNumber,
|
||||
@JsonKey(name: "table_id") String? tableId,
|
||||
@JsonKey(name: "order_type") String? orderType,
|
||||
@JsonKey(name: "notes") String? notes,
|
||||
@JsonKey(name: "order_items") List<OrderItemRequestDto>? orderItems,
|
||||
@JsonKey(name: "customer_name") String? customerName,
|
||||
}) = _OrderRequestDto;
|
||||
|
||||
factory OrderRequestDto.fromJson(Map<String, dynamic> json) =>
|
||||
_$OrderRequestDtoFromJson(json);
|
||||
|
||||
// Optional: mapper ke domain entity
|
||||
OrderRequest toDomain() => OrderRequest(
|
||||
outletId: outletId ?? '',
|
||||
customerId: customerId ?? '',
|
||||
tableNumber: tableNumber ?? '',
|
||||
tableId: tableId ?? '',
|
||||
orderType: orderType ?? '',
|
||||
notes: notes ?? '',
|
||||
orderItems: orderItems?.map((e) => e.toDomain()).toList() ?? const [],
|
||||
customerName: customerName ?? '',
|
||||
);
|
||||
|
||||
factory OrderRequestDto.fromDomain(OrderRequest request) => OrderRequestDto(
|
||||
outletId: request.outletId,
|
||||
customerId: request.customerId,
|
||||
tableNumber: request.tableNumber,
|
||||
tableId: request.tableId,
|
||||
orderType: request.orderType,
|
||||
notes: request.notes,
|
||||
orderItems: request.orderItems
|
||||
.map((e) => OrderItemRequestDto.fromDomain(e))
|
||||
.toList(),
|
||||
customerName: request.customerName,
|
||||
);
|
||||
|
||||
Map<String, dynamic> toRequest() {
|
||||
Map<String, dynamic> data = {
|
||||
"outlet_id": outletId,
|
||||
"table_number": tableNumber,
|
||||
"order_type": orderType,
|
||||
"notes": notes,
|
||||
"order_items": orderItems?.map((e) => e.toRequest()).toList(),
|
||||
"customer_name": customerName,
|
||||
};
|
||||
|
||||
if (customerId != null && customerId != '') {
|
||||
data["customer_id"] = customerId;
|
||||
}
|
||||
|
||||
if (tableId != null && tableId != '') {
|
||||
data["table_id"] = tableId;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
@freezed
|
||||
class OrderItemRequestDto with _$OrderItemRequestDto {
|
||||
const OrderItemRequestDto._();
|
||||
|
||||
const factory OrderItemRequestDto({
|
||||
@JsonKey(name: "product_id") String? productId,
|
||||
@JsonKey(name: "product_variant_id") String? productVariantId,
|
||||
@JsonKey(name: "quantity") int? quantity,
|
||||
@JsonKey(name: "unit_price") int? unitPrice,
|
||||
@JsonKey(name: "notes") String? notes,
|
||||
}) = _OrderItemRequestDto;
|
||||
|
||||
factory OrderItemRequestDto.fromJson(Map<String, dynamic> json) =>
|
||||
_$OrderItemRequestDtoFromJson(json);
|
||||
|
||||
// Optional: mapper ke domain entity
|
||||
OrderItemRequest toDomain() => OrderItemRequest(
|
||||
productId: productId ?? '',
|
||||
productVariantId: productVariantId ?? '',
|
||||
quantity: quantity ?? 0,
|
||||
unitPrice: unitPrice ?? 0,
|
||||
notes: notes ?? '',
|
||||
);
|
||||
|
||||
factory OrderItemRequestDto.fromDomain(OrderItemRequest request) =>
|
||||
OrderItemRequestDto(
|
||||
productId: request.productId,
|
||||
productVariantId: request.productVariantId,
|
||||
quantity: request.quantity,
|
||||
unitPrice: request.unitPrice,
|
||||
notes: request.notes,
|
||||
);
|
||||
|
||||
Map<String, dynamic> toRequest() => {
|
||||
"product_id": productId,
|
||||
"product_variant_id": productVariantId,
|
||||
"quantity": quantity,
|
||||
"unit_price": unitPrice,
|
||||
"notes": notes,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user