From 667d2f66c76b1f46072e25f5bb94f7d09e8213d5 Mon Sep 17 00:00:00 2001 From: Parmis Jamami Date: Thu, 25 Jun 2026 19:18:39 +0330 Subject: [PATCH] Complete OrderService --- src/main/java/dev/service/OrderService.java | 129 ++++++++++++++++++-- 1 file changed, 122 insertions(+), 7 deletions(-) diff --git a/src/main/java/dev/service/OrderService.java b/src/main/java/dev/service/OrderService.java index 14708f8..7f32a62 100644 --- a/src/main/java/dev/service/OrderService.java +++ b/src/main/java/dev/service/OrderService.java @@ -1,26 +1,141 @@ package dev.service; +import dev.dao.MenuItemDao; +import dev.dao.OrderDao; +import dev.dao.OrderDetailDao; +import dev.model.MenuItem; +import dev.model.Order; +import dev.model.OrderDetail; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + public class OrderService { + private final Scanner scanner = new Scanner(System.in); + + private final MenuItemDao menuItemDao = new MenuItemDao(); + private final OrderDao orderDao = new OrderDao(); + private final OrderDetailDao orderDetailDao = new OrderDetailDao(); + public void placeOrder(int userId) { - // TODO: - // Create order + List cart = new ArrayList<>(); + double totalPrice = 0; + while (true) { + + System.out.print("Enter item id or 0 to finish: "); + int itemId = scanner.nextInt(); + + if (itemId == 0) { + break; + } + + MenuItem menuItem = menuItemDao.findById(itemId); + + if (menuItem == null) { + System.out.println("Item not found."); + continue; + } + + System.out.print("Enter quantity: "); + int quantity = scanner.nextInt(); + + if (quantity <= 0) { + System.out.println("Quantity must be greater than 0."); + continue; + } + + OrderDetail detail = new OrderDetail(); + detail.setMenuItemId(menuItem.getId()); + detail.setQuantity(quantity); + detail.setPrice(menuItem.getPrice()); + + cart.add(detail); + + totalPrice += menuItem.getPrice() * quantity; + + System.out.println("Added " + quantity + "x " + menuItem.getName()); + } + + if (cart.isEmpty()) { + System.out.println("Order cancelled."); + return; + } + + Order order = new Order(); + order.setUserId(userId); + order.setTotalPrice(totalPrice); + + int orderId = orderDao.save(order); + + if (orderId == -1) { + System.out.println("Order could not be saved."); + return; + } + + for (OrderDetail detail : cart) { + detail.setOrderId(orderId); + orderDetailDao.save(detail); + } + + System.out.println("Order saved successfully."); + printReceipt(orderId); } public void printReceipt(int orderId) { - // TODO: - // Print order receipt + List details = orderDetailDao.findByOrderId(orderId); + if (details.isEmpty()) { + System.out.println("No details found for this order."); + return; + } + + double finalTotal = 0; + + System.out.println(); + System.out.println("===== RECEIPT ====="); + + for (OrderDetail detail : details) { + + MenuItem item = menuItemDao.findById(detail.getMenuItemId()); + + double subtotal = detail.getPrice() * detail.getQuantity(); + finalTotal += subtotal; + + System.out.println( + item.getName() + + " | Qty: " + detail.getQuantity() + + " | Unit: $" + detail.getPrice() + + " | Total: $" + subtotal + ); + } + + System.out.println("-------------------"); + System.out.println("Final Total: $" + finalTotal); } public void showOrderHistory(int userId) { - // TODO: - // Display user's order history + List orders = orderDao.findByUserId(userId); + if (orders.isEmpty()) { + System.out.println("No orders found."); + return; + } + + System.out.println(); + System.out.println("===== ORDER HISTORY ====="); + + for (Order order : orders) { + System.out.println( + "Order #" + order.getId() + + " | Date: " + order.getCreatedAt() + + " | Total: $" + order.getTotalPrice() + ); + } } - } \ No newline at end of file