feat: get table

This commit is contained in:
efrilm
2025-08-03 23:53:06 +07:00
parent 8431b07057
commit 6afd62b617
14 changed files with 769 additions and 478 deletions
@@ -829,7 +829,8 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
DropdownMenuItem<
TableModel>(
value: value,
child: Text(value.tableName),
child: Text(
value.tableName ?? ""),
),
)
.toList(),
@@ -1192,28 +1193,28 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
savedDraftOrder: (orderDraftId) {
log("PRICEVALUE: ${priceValue}");
final newTabel = TableModel(
id: widget.isTable
? widget.table!.id
: selectTable?.id,
tableName: widget.isTable
? widget.table!.tableName
: selectTable?.tableName ??
'0',
status: 'occupied',
paymentAmount: priceValue,
orderId: orderDraftId,
startTime: DateTime.now()
.toIso8601String(),
position: widget.isTable
? widget.table!.position
: selectTable!.position);
log('new tabel: ${newTabel.toMap()}');
context
.read<StatusTableBloc>()
.add(StatusTableEvent.statusTabel(
newTabel,
));
// final newTabel = TableModel(
// id: widget.isTable
// ? widget.table!.id
// : selectTable?.id,
// tableName: widget.isTable
// ? widget.table!.tableName
// : selectTable?.tableName ??
// '0',
// status: 'occupied',
// paymentAmount: priceValue,
// orderId: orderDraftId,
// startTime: DateTime.now()
// .toIso8601String(),
// position: widget.isTable
// ? widget.table!.position
// : selectTable!.position);
// log('new tabel: ${newTabel.toMap()}');
// context
// .read<StatusTableBloc>()
// .add(StatusTableEvent.statusTabel(
// newTabel,
// ));
});
},
child:
@@ -1357,16 +1358,16 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
if (widget.isTable) {
log("discountAmountValue: $totalDiscount");
context.read<CheckoutBloc>().add(
CheckoutEvent
.saveDraftOrder(
widget.isTable == true
? widget.table!.id!
: selectTable!.id!,
customerController.text,
totalDiscount.toInt(),
),
);
// context.read<CheckoutBloc>().add(
// CheckoutEvent
// .saveDraftOrder(
// widget.isTable == true
// ? widget.table!.id!
// : selectTable!.id!,
// customerController.text,
// totalDiscount.toInt(),
// ),
// );
await showDialog(
context: context,
barrierDismissible: false,
@@ -1515,120 +1516,120 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
// Tambahkan ke pesanan meja yang sudah ada
if (selectTable != null) {
// Ambil draft order yang sudah ada
final existingDraftOrder =
await ProductLocalDatasource
.instance
.getDraftOrderById(
selectTable
?.orderId ??
0);
// final existingDraftOrder =
// await ProductLocalDatasource
// .instance
// .getDraftOrderById(
// selectTable
// ?.orderId ??
// 0);
if (existingDraftOrder !=
null) {
// Convert items ke DraftOrderItem
final newDraftItems = items
.map((item) =>
DraftOrderItem(
product:
item.product,
quantity:
item.quantity,
))
.toList();
// if (existingDraftOrder !=
// null) {
// // Convert items ke DraftOrderItem
// final newDraftItems = items
// .map((item) =>
// DraftOrderItem(
// product:
// item.product,
// quantity:
// item.quantity,
// ))
// .toList();
// Gabungkan dengan pesanan yang sudah ada
final updatedItems = [
...existingDraftOrder
.orders,
...newDraftItems
];
// // Gabungkan dengan pesanan yang sudah ada
// final updatedItems = [
// ...existingDraftOrder
// .orders,
// ...newDraftItems
// ];
final updatedDraftOrder =
existingDraftOrder
.copyWith(
orders: updatedItems,
totalQuantity:
updatedItems.fold<int>(
0,
(sum, item) =>
sum +
item.quantity),
subTotal: updatedItems.fold<
int>(
0,
(sum, item) =>
sum +
(item.product
.price ??
0) *
item.quantity),
);
// final updatedDraftOrder =
// existingDraftOrder
// .copyWith(
// orders: updatedItems,
// totalQuantity:
// updatedItems.fold<int>(
// 0,
// (sum, item) =>
// sum +
// item.quantity),
// subTotal: updatedItems.fold<
// int>(
// 0,
// (sum, item) =>
// sum +
// (item.product
// .price ??
// 0) *
// item.quantity),
// );
// Update draft order
await ProductLocalDatasource
.instance
.updateDraftOrder(
updatedDraftOrder);
// // Update draft order
// await ProductLocalDatasource
// .instance
// .updateDraftOrder(
// updatedDraftOrder);
// Tampilkan dialog sukses
await showDialog(
context: context,
barrierDismissible: false,
builder: (context) =>
SaveOrderDialog(
data: items,
totalQty: totalQty,
totalPrice:
totalPriceFinal,
totalTax:
finalTax.toInt(),
totalDiscount:
totalDiscount.toInt(),
subTotal:
subTotal.toInt(),
normalPrice: price,
table: selectTable!,
draftName:
customerController
.text,
),
);
} else {
// Jika tidak ada draft order, buat baru
context
.read<CheckoutBloc>()
.add(
CheckoutEvent
.saveDraftOrder(
selectTable!.id!,
customerController
.text,
totalDiscount.toInt(),
),
);
await showDialog(
context: context,
barrierDismissible: false,
builder: (context) =>
SaveOrderDialog(
data: items,
totalQty: totalQty,
totalPrice:
totalPriceFinal,
totalTax:
finalTax.toInt(),
totalDiscount:
totalDiscount.toInt(),
subTotal:
subTotal.toInt(),
normalPrice: price,
table: selectTable!,
draftName:
customerController
.text,
),
);
}
// // Tampilkan dialog sukses
// await showDialog(
// context: context,
// barrierDismissible: false,
// builder: (context) =>
// SaveOrderDialog(
// data: items,
// totalQty: totalQty,
// totalPrice:
// totalPriceFinal,
// totalTax:
// finalTax.toInt(),
// totalDiscount:
// totalDiscount.toInt(),
// subTotal:
// subTotal.toInt(),
// normalPrice: price,
// table: selectTable!,
// draftName:
// customerController
// .text,
// ),
// );
// } else {
// // Jika tidak ada draft order, buat baru
// context
// .read<CheckoutBloc>()
// .add(
// CheckoutEvent
// .saveDraftOrder(
// selectTable!.id!,
// customerController
// .text,
// totalDiscount.toInt(),
// ),
// );
// await showDialog(
// context: context,
// barrierDismissible: false,
// builder: (context) =>
// SaveOrderDialog(
// data: items,
// totalQty: totalQty,
// totalPrice:
// totalPriceFinal,
// totalTax:
// finalTax.toInt(),
// totalDiscount:
// totalDiscount.toInt(),
// subTotal:
// subTotal.toInt(),
// normalPrice: price,
// table: selectTable!,
// draftName:
// customerController
// .text,
// ),
// );
// }
} else {
ScaffoldMessenger.of(context)
.showSnackBar(
@@ -1640,16 +1641,16 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
);
}
} else {
context.read<CheckoutBloc>().add(
CheckoutEvent
.saveDraftOrder(
widget.isTable == true
? widget.table!.id!
: selectTable!.id!,
customerController.text,
totalDiscount.toInt(),
),
);
// context.read<CheckoutBloc>().add(
// CheckoutEvent
// .saveDraftOrder(
// widget.isTable == true
// ? widget.table!.id!
// : selectTable!.id!,
// customerController.text,
// totalDiscount.toInt(),
// ),
// );
await showDialog(
context: context,
barrierDismissible: false,