Develop #1

Merged
Aeen merged 12 commits from develop into main 2026-07-30 10:15:05 +00:00
Showing only changes of commit 667d2f66c7 - Show all commits
+122 -7
View File
@@ -1,26 +1,141 @@
package dev.service; 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 { 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) { public void placeOrder(int userId) {
// TODO: List<OrderDetail> cart = new ArrayList<>();
// Create order 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) { public void printReceipt(int orderId) {
// TODO: List<OrderDetail> details = orderDetailDao.findByOrderId(orderId);
// Print order receipt
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) { public void showOrderHistory(int userId) {
// TODO: List<Order> orders = orderDao.findByUserId(userId);
// Display user's order history
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()
);
}
} }
} }