package com.floreantpos.ui.views.order; import com.floreantpos.main.Application; import com.floreantpos.model.ActionHistory; import com.floreantpos.model.MenuCategory; import com.floreantpos.model.MenuGroup; import com.floreantpos.model.MenuItem; import com.floreantpos.model.MenuModifier; import com.floreantpos.model.Ticket; import com.floreantpos.model.TicketItem; import com.floreantpos.model.dao.ActionHistoryDAO; import com.floreantpos.model.dao.MenuItemDAO; import com.floreantpos.model.dao.TicketDAO; import com.floreantpos.swing.MessageDialog; import com.floreantpos.ui.dialog.PaymentTypeSelectionDialog; import com.floreantpos.ui.views.SettleTicketView; import com.floreantpos.ui.views.order.actions.CategorySelectionListener; import com.floreantpos.ui.views.order.actions.GroupSelectionListener; import com.floreantpos.ui.views.order.actions.ItemSelectionListener; import com.floreantpos.ui.views.order.actions.ModifierSelectionListener; import com.floreantpos.ui.views.order.actions.OrderListener; public class OrderController implements OrderListener, CategorySelectionListener, GroupSelectionListener, ItemSelectionListener, ModifierSelectionListener { private OrderView orderView; public OrderController(OrderView orderView) { this.orderView = orderView; orderView.getCategoryView().addCategorySelectionListener(this); orderView.getGroupView().addGroupSelectionListener(this); orderView.getItemView().addItemSelectionListener(this); orderView.getModifierView().addModifierSelectionListener(this); orderView.getTicketView().addOrderListener(this); } public void categorySelected(MenuCategory foodCategory) { orderView.getGroupView().setMenuCategory(foodCategory); orderView.showView(GroupView.VIEW_NAME); } public void groupSelected(MenuGroup foodGroup) { orderView.getItemView().setMenuGroup(foodGroup); orderView.showView(MenuItemView.VIEW_NAME); // ItemView itemView = new ItemView(); // itemView.setMenuGroup(foodGroup); // PanelTester.width = 600; // PanelTester.height = 600; // PanelTester.test(itemView); } public void itemSelected(MenuItem menuItem) { MenuItemDAO dao = new MenuItemDAO(); menuItem = dao.initialize(menuItem); boolean hasModifiers = (menuItem.getMenuItemModiferGroups() != null && menuItem.getMenuItemModiferGroups().size() > 0); TicketItem ticketItem = new TicketItem(); ticketItem.setItemId(menuItem.getId()); ticketItem.setItemCount(1); ticketItem.setName(menuItem.getName()); ticketItem.setGroupName(menuItem.getParent().getName()); ticketItem.setCategoryName(menuItem.getParent().getParent().getName()); ticketItem.setUnitPrice(menuItem.getPrice(Application.getInstance().getCurrentShift())); ticketItem.setDiscountRate(menuItem.getDiscountRate()); ticketItem.setTaxRate(menuItem.getTax() == null ? 0 : menuItem.getTax().getRate()); ticketItem.setHasModifiers(hasModifiers); if (menuItem.getParent().getParent().isBeverage()) { ticketItem.setBeverage(true); ticketItem.setShouldPrintToKitchen(false); } else { ticketItem.setBeverage(false); ticketItem.setShouldPrintToKitchen(true); } orderView.getTicketView().addTicketItem(ticketItem); if (hasModifiers) { ModifierView modifierView = orderView.getModifierView(); modifierView.setMenuItem(menuItem, ticketItem); orderView.showView(ModifierView.VIEW_NAME); // ModifierView modifierView = new ModifierView(); // modifierView.setMenuItem(menuItem, ticketItem); // PanelTester.width = 800; // PanelTester.height = 600; // PanelTester.test(modifierView); } } public void modifierSelected(MenuItem parent, MenuModifier modifier) { // TicketItemModifier itemModifier = new TicketItemModifier(); // itemModifier.setItemId(modifier.getId()); // itemModifier.setName(modifier.getName()); // itemModifier.setPrice(modifier.getPrice()); // itemModifier.setExtraPrice(modifier.getExtraPrice()); // itemModifier.setMinQuantity(modifier.getMinQuantity()); // itemModifier.setMaxQuantity(modifier.getMaxQuantity()); // itemModifier.setTaxRate(modifier.getTax() == null ? 0 : modifier.getTax().getRate()); // // orderView.getTicketView().addModifier(itemModifier); } public void itemSelectionFinished(MenuGroup parent) { MenuCategory menuCategory = parent.getParent(); GroupView groupView = orderView.getGroupView(); if (!menuCategory.equals(groupView.getMenuCategory())) { groupView.setMenuCategory(menuCategory); } orderView.showView(GroupView.VIEW_NAME); } public void modifierSelectionFiniched(MenuItem parent) { MenuGroup menuGroup = parent.getParent(); MenuItemView itemView = orderView.getItemView(); if (!menuGroup.equals(itemView.getMenuGroup())) { itemView.setMenuGroup(menuGroup); } orderView.showView(MenuItemView.VIEW_NAME); } public void payOrderSelected(Ticket ticket) { PaymentTypeSelectionDialog dialog = new PaymentTypeSelectionDialog(); dialog.setSize(250, 400); dialog.open(); if (!dialog.isCanceled()) { try { saveOrder(ticket); SettleTicketView view = SettleTicketView.getInstance(); view.setPaymentView(dialog.getSelectedPaymentView()); view.setCurrentTicket(ticket); RootView.getInstance().showView(SettleTicketView.VIEW_NAME); } catch (Exception e) { MessageDialog.showError(e); } } } public static void saveOrder(Ticket ticket) { if (ticket == null) return; boolean newTicket = ticket.getId() == null; TicketDAO ticketDAO = new TicketDAO(); ticketDAO.saveOrUpdate(ticket); // save the action if (newTicket) { ActionHistoryDAO.getInstance().saveHistory(Application.getCurrentUser(), ActionHistory.NEW_CHECK, "CHK#:" + ticket.getId()); } else { ActionHistoryDAO.getInstance().saveHistory(Application.getCurrentUser(), ActionHistory.EDIT_CHECK, "CHK#:" + ticket.getId()); } } }