Commit 0d8c9359 authored by Dio Maulana's avatar Dio Maulana

perbaikan untuk multi

parent 89abd9a1
......@@ -6,7 +6,7 @@ import '../models/orders.dart';
class OrdersBloc extends Cubit<List<Orders>> {
OrdersBloc() : super([]);
void insertData(List<dynamic> list, BuildContext context) {
void insertData(List<dynamic> list) {
if (list[0][0] == 'editVariant') {
// hanya ketika bottom sheet muncul untuk order yang mempunyai variant
// Orders singleOrder = list[0][1];
......
......@@ -25,15 +25,15 @@ class OrderDetailVariant extends Cubit<OrderDetail> {
Orders orders,
List<Orders> listCurrentOrder) {
OrderDetail orderDetailNow = OrderDetail(
allIdVariant: allIdVariant,
totalItem: totalItem,
totalHarga: totalHarga,
note: note,
orderVariant: orderVariant);
allIdVariant: allIdVariant,
totalItem: totalItem,
totalHarga: totalHarga,
note: note,
orderVariant: orderVariant,
);
context.read<OrdersBloc>().insertData([
['editVariant', orders, listCurrentOrder, orderDetailNow]
], context);
]);
emit(orderDetailNow);
}
}
......@@ -98,7 +98,7 @@ class NoteModalBottomSheet extends StatelessWidget {
amountParseToInt(menuItem.price),
noteController.text
]
], context);
]);
} else if (from == fromBill) {
if (idOrderan != '') {
Api.changeOrderDetail(
......
......@@ -185,8 +185,9 @@ class _ShowMenuModalState extends State<ShowMenuModal> {
context: context,
builder: (context) {
return CustomizeVariant(
orders: list[indexListOrderan],
variantCat: widget.variantCat);
orders: list[indexListOrderan],
variantCat: widget.variantCat,
);
},
);
}
......@@ -206,7 +207,7 @@ class _ShowMenuModalState extends State<ShowMenuModal> {
? list[indexListOrderan].note
: '',
]
], context);
]);
Navigator.pop(context);
}
}
......
......@@ -151,8 +151,9 @@ class ShowMenuBottomSheet extends StatelessWidget {
context: context,
builder: (context) {
return CustomizeVariant(
orders: list[indexListOrderan],
variantCat: menuDetail[i].variantCat);
orders: list[indexListOrderan],
variantCat: menuDetail[i].variantCat,
);
},
);
}
......@@ -172,7 +173,7 @@ class ShowMenuBottomSheet extends StatelessWidget {
? list[indexListOrderan].note
: '',
]
], context);
]);
Navigator.pop(context);
}
}
......
......@@ -121,7 +121,7 @@ GestureDetector noteMenu(
hargaFix,
noteController.text
]
], context);
]);
} else if (callFrom == fromBill) {
await Api.changeOrderDetail(
context,
......
......@@ -234,7 +234,7 @@ class FavGridMenu extends StatelessWidget {
amountParseToInt(menuFav.price),
(indexListOrderan != -1) ? list[indexListOrderan].note : ''
]
], context);
]);
// setState(() {});
}
}
......@@ -258,7 +258,7 @@ class FavGridMenu extends StatelessWidget {
amountParseToInt(menuFav.price),
(indexListOrderan != -1) ? list[indexListOrderan].note : '',
]
], context);
]);
}
return AnimatedSwitcher(
......@@ -312,8 +312,9 @@ class FavGridMenu extends StatelessWidget {
context: context,
builder: (context) {
return CustomizeVariant(
orders: list[indexListOrderan],
variantCat: menuFav.variantCat);
orders: list[indexListOrderan],
variantCat: menuFav.variantCat,
);
},
);
}
......@@ -334,7 +335,7 @@ class FavGridMenu extends StatelessWidget {
? list[indexListOrderan].note
: ''
]
], context);
]);
// setState(() {});
}
}
......
......@@ -270,29 +270,32 @@ class _MenuViewState extends State<MenuView> {
context: context,
builder: (context) {
return CustomizeVariant(
orders: list[indexListOrderan],
variantCat: widget.variantCat);
orders: list[indexListOrderan],
variantCat: widget.variantCat,
);
},
);
}
} else {
if (initialValue == 0) {
initialValue += 1;
context.read<OrdersBloc>().insertData([
context.read<OrdersBloc>().insertData(
[
widget.id,
widget.namaMenu,
initialValue,
widget.hargaFix,
list,
widget.imageUrl,
orderVariants,
widget.hargaFix,
(indexListOrderan != -1)
? list[indexListOrderan].note
: ''
]
], context);
[
widget.id,
widget.namaMenu,
initialValue,
widget.hargaFix,
list,
widget.imageUrl,
orderVariants,
widget.hargaFix,
(indexListOrderan != -1)
? list[indexListOrderan].note
: ''
]
],
);
// setState(() {});
}
}
......@@ -341,22 +344,24 @@ class _MenuViewState extends State<MenuView> {
initialValue -= 1;
context
.read<OrdersBloc>()
.insertData([
.insertData(
[
widget.id,
widget.namaMenu,
initialValue,
widget.hargaFix,
list,
widget.imageUrl,
orderVariants,
widget.hargaFix,
(indexListOrderan != -1)
? list[indexListOrderan]
.note
: ''
]
], context);
[
widget.id,
widget.namaMenu,
initialValue,
widget.hargaFix,
list,
widget.imageUrl,
orderVariants,
widget.hargaFix,
(indexListOrderan != -1)
? list[indexListOrderan]
.note
: ''
]
],
);
// setState(() {});
}
},
......@@ -394,23 +399,24 @@ class _MenuViewState extends State<MenuView> {
GestureDetector(
onTap: () {
initialValue += 1;
context
.read<OrdersBloc>()
.insertData([
context.read<OrdersBloc>().insertData(
[
widget.id,
widget.namaMenu,
initialValue,
widget.hargaFix,
list,
widget.imageUrl,
orderVariants,
widget.hargaFix,
(indexListOrderan != -1)
? list[indexListOrderan].note
: '',
]
], context);
[
widget.id,
widget.namaMenu,
initialValue,
widget.hargaFix,
list,
widget.imageUrl,
orderVariants,
widget.hargaFix,
(indexListOrderan != -1)
? list[indexListOrderan]
.note
: '',
]
],
);
// setState(() {});
},
child: Container(
......
......@@ -100,7 +100,7 @@ class _MenuFavoriteState extends State<MenuFavorite> {
initialValue += 1;
context.read<OrdersBloc>().insertData([
[widget.id, widget.namaMenu, 1, widget.hargaFix, list]
], context);
]);
setState(() {});
}
},
......@@ -123,15 +123,17 @@ class _MenuFavoriteState extends State<MenuFavorite> {
onTap: () {
if (initialValue > 0) {
initialValue -= 1;
context.read<OrdersBloc>().insertData([
context.read<OrdersBloc>().insertData(
[
widget.id,
widget.namaMenu,
-1,
widget.hargaFix,
list
]
], context);
[
widget.id,
widget.namaMenu,
-1,
widget.hargaFix,
list
]
],
);
setState(() {});
}
},
......@@ -152,15 +154,17 @@ class _MenuFavoriteState extends State<MenuFavorite> {
GestureDetector(
onTap: () {
initialValue += 1;
context.read<OrdersBloc>().insertData([
context.read<OrdersBloc>().insertData(
[
widget.id,
widget.namaMenu,
1,
widget.hargaFix,
list
]
], context);
[
widget.id,
widget.namaMenu,
1,
widget.hargaFix,
list
]
],
);
setState(() {});
},
child: Icon(
......
......@@ -190,12 +190,12 @@ class MenuListUtama extends StatelessWidget {
BlocBuilder addRemoveQuantity(BuildContext context, FilterMenu menuUtama) {
List<OrderVariant> orderVariants = [];
return BlocBuilder<OrdersBloc, List<Orders>>(
builder: (contextOrders, list) {
builder: (context, listOrders) {
bool
addCondition; // true untuk menampilkan tambah, false untuk menampilkan quantity plus minus
int indexListOrderan =
list.indexWhere((listOrderan) => listOrderan.id == menuUtama.id);
int initialValue;
int indexListOrderan = listOrders
.indexWhere((listOrderan) => listOrderan.id == menuUtama.id);
int initialValue = 0;
if (indexListOrderan != -1) {
if (menuUtama.variantCat.isNotEmpty) {
addCondition = true; // kalau menu itu ada variantnya, biarin true
......@@ -203,7 +203,16 @@ class MenuListUtama extends StatelessWidget {
addCondition = false;
}
initialValue = list[indexListOrderan].totalItem;
if (listOrders[indexListOrderan].orderDetail.isNotEmpty) {
for (int d = 0;
d < listOrders[indexListOrderan].orderDetail.length;
d++) {
initialValue +=
listOrders[indexListOrderan].orderDetail[d].totalItem;
}
} else {
initialValue = listOrders[indexListOrderan].totalItem;
}
} else {
addCondition = true;
initialValue = 0;
......@@ -215,7 +224,9 @@ class MenuListUtama extends StatelessWidget {
variantButtonCount = '$initialValue Items';
}
final noteController = TextEditingController(
text: (indexListOrderan != -1) ? list[indexListOrderan].note : '');
text: (indexListOrderan != -1)
? listOrders[indexListOrderan].note
: '');
void minus() {
FocusScopeNode currentFocus = FocusScope.of(context);
......@@ -231,13 +242,15 @@ class MenuListUtama extends StatelessWidget {
menuUtama.name,
initialValue,
amountParseToInt(menuUtama.price),
list,
listOrders,
menuUtama.imageUrlMedium,
orderVariants,
amountParseToInt(menuUtama.price),
(indexListOrderan != -1) ? list[indexListOrderan].note : ''
(indexListOrderan != -1)
? listOrders[indexListOrderan].note
: ''
]
], context);
]);
// setState(() {});
}
}
......@@ -249,19 +262,23 @@ class MenuListUtama extends StatelessWidget {
currentFocus.unfocus();
}
initialValue += 1;
context.read<OrdersBloc>().insertData([
context.read<OrdersBloc>().insertData(
[
menuUtama.id,
menuUtama.name,
initialValue,
amountParseToInt(menuUtama.price),
list,
menuUtama.imageUrlMedium,
orderVariants,
amountParseToInt(menuUtama.price),
(indexListOrderan != -1) ? list[indexListOrderan].note : '',
]
], context);
[
menuUtama.id,
menuUtama.name,
initialValue,
amountParseToInt(menuUtama.price),
listOrders,
menuUtama.imageUrlMedium,
orderVariants,
amountParseToInt(menuUtama.price),
(indexListOrderan != -1)
? listOrders[indexListOrderan].note
: '',
]
],
);
}
return AnimatedSwitcher(
......@@ -325,6 +342,9 @@ class MenuListUtama extends StatelessWidget {
amountParseToInt(menuUtama.price),
variantCategories: menuUtama.variantCat,
namaMenu: menuUtama.name,
idItem: menuUtama.id,
listCurrentOrder: listOrders,
imageUrl: menuUtama.imageUrlMedium,
),
),
);
......@@ -335,29 +355,32 @@ class MenuListUtama extends StatelessWidget {
context: context,
builder: (context) {
return CustomizeVariant(
orders: list[indexListOrderan],
variantCat: menuUtama.variantCat);
orders: listOrders[indexListOrderan],
variantCat: menuUtama.variantCat,
);
},
);
}
} else {
if (initialValue == 0) {
initialValue += 1;
context.read<OrdersBloc>().insertData([
context.read<OrdersBloc>().insertData(
[
menuUtama.id,
menuUtama.name,
initialValue,
amountParseToInt(menuUtama.price),
list,
menuUtama.imageUrlMedium,
orderVariants,
amountParseToInt(menuUtama.price),
(indexListOrderan != -1)
? list[indexListOrderan].note
: ''
]
], context);
[
menuUtama.id,
menuUtama.name,
initialValue,
amountParseToInt(menuUtama.price),
listOrders,
menuUtama.imageUrlMedium,
orderVariants,
amountParseToInt(menuUtama.price),
(indexListOrderan != -1)
? listOrders[indexListOrderan].note
: ''
]
],
);
// setState(() {});
}
}
......@@ -426,7 +449,7 @@ class MenuListUtama extends StatelessWidget {
initialValue: initialValue,
orderVariants: orderVariants,
menuItem: menuUtama,
lisrOrders: list,
lisrOrders: listOrders,
from: fromMenu,
contextFrom: context,
);
......
......@@ -441,7 +441,7 @@ class _NewHome2State extends State<NewHome2> {
return BlocBuilder<OrdersBloc,
List<Orders>>(
builder: (contextOrders, listOrders) {
builder: (context, listOrders) {
int totalItem = 0;
int totalHarga = 0;
if (listOrders.isNotEmpty) {
......@@ -907,11 +907,11 @@ class _NewHome2State extends State<NewHome2> {
int tableMode,
String namaPelanggan,
double widthScreen) {
String itemString;
String totalItemString;
if (totalItem > 1) {
itemString = '$totalItem Items';
totalItemString = '$totalItem Items';
} else {
itemString = '$totalItem Item';
totalItemString = '$totalItem Item';
}
final nameController = TextEditingController();
return GestureDetector(
......@@ -1111,7 +1111,7 @@ class _NewHome2State extends State<NewHome2> {
alignment: Alignment.centerLeft,
child: defaultText(
context,
itemString,
totalItemString,
style: textCountItem(),
),
),
......
......@@ -345,21 +345,23 @@ class _VariantCatState extends State<VariantCat> {
}
}
if (prosesOrderan) {
context.read<OrdersBloc>().insertData([
context.read<OrdersBloc>().insertData(
[
widget.idItem,
widget.namaMenu,
initialValue,
widget.initPrice,
widget.listCurrentOrder,
widget.imageUrl,
orderVariants,
totalPrice,
(noteCatController.text.isEmpty)
? ''
: noteCatController.text
]
], context);
[
widget.idItem,
widget.namaMenu,
initialValue,
widget.initPrice,
widget.listCurrentOrder,
widget.imageUrl,
orderVariants,
totalPrice,
(noteCatController.text.isEmpty)
? ''
: noteCatController.text
]
],
);
Navigator.pop(context);
} else {
EasyLoading.showToast(
......
// ignore_for_file: sized_box_for_whitespace, must_be_immutable
import 'package:byod/helper/helper.dart';
import 'package:byod/helper/widget/button_modal.dart';
import 'package:byod/helper/widget/style.dart';
import 'package:byod/models/order_details.dart';
import 'package:byod/ui/home/variant_new.dart';
import 'package:byod/ui/screen_responsive.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import '../../bloc/order_bloc.dart';
import '../../bloc/order_variant_temporary.dart';
import '../../bloc/order_variant_value.dart';
import '../../helper/widget/plus_minus_button.dart';
import '../../main.dart';
import '../../models/order_variants.dart';
import '../../models/orders.dart';
import '../../models/variant_categories.dart';
class VariantCatNew extends StatefulWidget {
final List<VariantCategories> variantCategories;
final int initPrice;
final String namaMenu;
final String idItem;
final List<Orders> listCurrentOrder;
final String imageUrl;
const VariantCatNew({
Key? key,
required this.variantCategories,
required this.initPrice,
required this.namaMenu,
required this.idItem,
required this.listCurrentOrder,
required this.imageUrl,
}) : super(key: key);
@override
......@@ -93,6 +103,8 @@ class _VariantCatNewState extends State<VariantCatNew> {
satuanPrice: satuanPrice,
totalPrice: totalPrice,
context: context,
orderVariants: orderVariants,
noteCatController: noteCatController,
),
isCoreLayout: true,
widthScreen: MediaQuery.of(context).size.width,
......@@ -118,6 +130,8 @@ class CoreVariant extends StatelessWidget {
required this.satuanPrice,
required this.totalPrice,
required this.context,
required this.orderVariants,
required this.noteCatController,
}) : super(key: key);
final double widthScreen;
......@@ -129,6 +143,8 @@ class CoreVariant extends StatelessWidget {
final int satuanPrice;
final int totalPrice;
final BuildContext context;
final List<OrderVariant> orderVariants;
final TextEditingController noteCatController;
void plus() {
initialValue += 1;
context
......@@ -301,6 +317,7 @@ class CoreVariant extends StatelessWidget {
Container(
height: 35,
child: TextField(
controller: noteCatController,
maxLength: maxLengthTextField,
autofocus: false,
style: const TextStyle(
......@@ -397,21 +414,49 @@ class CoreVariant extends StatelessWidget {
const SizedBox(
height: 14,
),
Container(
height: 43,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(33),
color: buttonColor,
),
child: Center(
child: defaultText(
context,
'Tambahkan - Rp ${formatNumber().format(totalPrice)}',
style: addButton(
font: 14,
),
),
),
GestureDetector(
onTap: () {
bool prosesOrderan = true;
for (int y = 0;
y < widget.variantCategories.length;
y++) {
if (widget.variantCategories[y].type == typeMandatory) {
int index = orderVariants.indexWhere((order) =>
order.categoryId ==
widget.variantCategories[y].id);
if (index == -1) {
prosesOrderan = false;
}
}
}
if (prosesOrderan) {
context.read<OrdersBloc>().insertData(
[
[
widget.idItem,
widget.namaMenu,
initialValue,
widget.initPrice,
widget.listCurrentOrder,
widget.imageUrl,
orderVariants,
totalPrice,
(noteCatController.text.isEmpty)
? ''
: noteCatController.text
]
],
);
Navigator.pop(context);
} else {
EasyLoading.showToast(
'Masih ada variant yang belum dipilih');
}
},
child: ButtonComponent(
buttonColor: buttonColor,
teksButton:
'Tambahkan - Rp ${formatNumber().format(totalPrice)}'),
)
],
),
......
......@@ -512,10 +512,9 @@ class CoreBill extends StatelessWidget {
isHistory: isHistory,
tableStatus: dataBill[0].tableStatus,
),
const SizedBox(
height: 24,
),
const AddMoreOrder(),
(dataBill[0].tableStatus == tableStatusOpen)
? const AddMoreOrder()
: const SizedBox(),
const SizedBox(
height: 24,
),
......@@ -1838,52 +1837,59 @@ class AddMoreOrder extends StatelessWidget {
color: backgroundWhite,
padding: const EdgeInsets.symmetric(horizontal: paddingLeftRight),
// color: Colors.red,
child: Row(
child: Column(
children: [
Expanded(
child: Container(
child: defaultText(
context,
'Tambahkan menu lainnya?',
maxLines: 2,
overFlow: TextOverflow.ellipsis,
style: viewbillStyle(
font: 16,
fontWeight: FontWeight.w400,
),
),
),
),
const SizedBox(
width: 19,
height: 24,
),
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => const NewHome2(),
Row(
children: [
Expanded(
child: Container(
child: defaultText(
context,
'Tambahkan menu lainnya?',
maxLines: 2,
overFlow: TextOverflow.ellipsis,
style: viewbillStyle(
font: 16,
fontWeight: FontWeight.w400,
),
),
),
);
},
child: Container(
width: 98,
height: 30,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(21),
color: buttonColor,
),
child: Center(
child: defaultText(
context,
'Tambah',
style: addButton(
font: 8,
const SizedBox(
width: 19,
),
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => const NewHome2(),
),
);
},
child: Container(
width: 98,
height: 30,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(21),
color: buttonColor,
),
child: Center(
child: defaultText(
context,
'Tambah',
style: addButton(
font: 8,
),
),
),
),
),
),
)
)
],
),
],
),
);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment