From df8d211b2230407f255fb7b209d5d3f6cf422d3c Mon Sep 17 00:00:00 2001 From: Bita Date: Mon, 22 Jun 2026 22:46:36 +0330 Subject: [PATCH] Complete the project --- .idea/.gitignore | 10 ++ .idea/compiler.xml | 13 ++ .idea/encodings.xml | 9 ++ .idea/jarRepositories.xml | 20 +++ .idea/misc.xml | 12 ++ .idea/vcs.xml | 6 + src/.idea/.gitignore | 10 ++ src/.idea/misc.xml | 6 + src/.idea/modules.xml | 8 ++ src/.idea/vcs.xml | 6 + src/WS-10-Database.iml | 11 ++ src/main/java/dev/dao/MenuItemDao.java | 63 ++++++++- src/main/java/dev/dao/OrderDao.java | 50 ++++++- src/main/java/dev/dao/OrderDetailDao.java | 54 ++++++-- src/main/java/dev/dao/UserDao.java | 52 ++++++- .../java/dev/database/DatabaseConnection.java | 14 +- src/main/java/dev/model/MenuItem.java | 39 ++++++ src/main/java/dev/model/Order.java | 25 ++++ src/main/java/dev/model/OrderDetail.java | 17 ++- src/main/java/dev/model/User.java | 15 +++ src/main/java/dev/service/AuthService.java | 35 +++-- src/main/java/dev/service/MenuService.java | 25 +++- src/main/java/dev/service/OrderService.java | 127 ++++++++++++++++-- src/main/java/dev/ui/ConsoleMenu.java | 127 +++++++++++++++--- 24 files changed, 670 insertions(+), 84 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 src/.idea/.gitignore create mode 100644 src/.idea/misc.xml create mode 100644 src/.idea/modules.xml create mode 100644 src/.idea/vcs.xml create mode 100644 src/WS-10-Database.iml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..bf2c501 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..e1ff5fe --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..4158879 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..eba6e1f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/.idea/.gitignore b/src/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/src/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/src/.idea/misc.xml b/src/.idea/misc.xml new file mode 100644 index 0000000..a20905f --- /dev/null +++ b/src/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/.idea/modules.xml b/src/.idea/modules.xml new file mode 100644 index 0000000..35ca41c --- /dev/null +++ b/src/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/.idea/vcs.xml b/src/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/src/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/WS-10-Database.iml b/src/WS-10-Database.iml new file mode 100644 index 0000000..5b22c51 --- /dev/null +++ b/src/WS-10-Database.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/dev/dao/MenuItemDao.java b/src/main/java/dev/dao/MenuItemDao.java index 3bbebe9..bd004fa 100644 --- a/src/main/java/dev/dao/MenuItemDao.java +++ b/src/main/java/dev/dao/MenuItemDao.java @@ -1,25 +1,74 @@ package dev.dao; +import dev.database.DatabaseConnection; import dev.model.MenuItem; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; public class MenuItemDao { - public List findAll() { + public List findAll() + { + List items = new ArrayList<>(); + String sql = "SELECT * FROM menu_items"; - // TODO: - // Retrieve all menu items + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) + { + ResultSet rs = ps.executeQuery(); - return null; + while (rs.next()) + { + MenuItem menuItem = new MenuItem(); + + menuItem.setId(rs.getInt("id")); + menuItem.setName(rs.getString("name")); + menuItem.setDescription(rs.getString("description")); + menuItem.setPrice(rs.getDouble("price")); + menuItem.setCategory(rs.getString("category")); + + items.add(menuItem); + } + } + catch (SQLException e) + { + e.printStackTrace(); + } + return items; } public MenuItem findById(int id) { - // TODO: - // Find menu item by id + String sql = "SELECT * FROM menu_items WHERE id=?"; + try(Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) + { + ps.setInt(1,id); + ResultSet rs = ps.executeQuery(); + + if(rs.next()) + { + MenuItem item = new MenuItem(); + + item.setId(rs.getInt("id")); + item.setName(rs.getString("name")); + item.setDescription(rs.getString("description")); + item.setPrice(rs.getDouble("price")); + item.setCategory(rs.getString("category")); + + return item; + } + } + catch (SQLException e) + { + e.printStackTrace(); + } return null; } - } \ No newline at end of file diff --git a/src/main/java/dev/dao/OrderDao.java b/src/main/java/dev/dao/OrderDao.java index 00999a2..f76d088 100644 --- a/src/main/java/dev/dao/OrderDao.java +++ b/src/main/java/dev/dao/OrderDao.java @@ -1,25 +1,63 @@ package dev.dao; +import dev.database.DatabaseConnection; import dev.model.Order; +import java.sql.*; +import java.util.ArrayList; import java.util.List; public class OrderDao { public int save(Order order) { - // TODO: - // Insert order and return generated id + String sql = "INSERT INTO orders(user_id,total_price) VALUES(?,?)"; + try(Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) + { + ps.setInt(1,order.getUserId()); + ps.setDouble(2,order.getTotalPrice()); + ps.executeUpdate(); + ResultSet rs = ps.getGeneratedKeys(); + + if(rs.next()) return rs.getInt(1); + } + catch (SQLException e) + { + e.printStackTrace(); + } return -1; } public List findByUserId(int userId) { - // TODO: - // Retrieve all orders of a user + List orders = new ArrayList<>(); + String sql = "SELECT * FROM orders WHERE user_id=?"; - return null; + try(Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) + { + ps.setInt(1,userId); + ResultSet rs = ps.executeQuery(); + + while(rs.next()) + { + + Order order = new Order(); + + order.setId(rs.getInt("id")); + order.setUserId(rs.getInt("user_id")); + order.setTotalPrice(rs.getDouble("total_price")); + order.setCreatedAt(rs.getTimestamp("created_at").toLocalDateTime()); + + orders.add(order); + } + } + catch (SQLException e) + { + e.printStackTrace(); + } + return orders; } - } \ No newline at end of file diff --git a/src/main/java/dev/dao/OrderDetailDao.java b/src/main/java/dev/dao/OrderDetailDao.java index ed42f56..9289cc6 100644 --- a/src/main/java/dev/dao/OrderDetailDao.java +++ b/src/main/java/dev/dao/OrderDetailDao.java @@ -1,24 +1,62 @@ package dev.dao; +import dev.database.DatabaseConnection; import dev.model.OrderDetail; +import java.sql.*; +import java.util.ArrayList; import java.util.List; public class OrderDetailDao { - public void save(OrderDetail detail) { + public void save(OrderDetail detail) + { + String sql = "INSERT INTO order_details(order_id,menu_item_id,quantity,price) VALUES(?,?,?,?)"; - // TODO: - // Insert order detail + try(Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) + { + ps.setInt(1,detail.getOrderId()); + ps.setInt(2,detail.getMenuItemId()); + ps.setInt(3,detail.getQuantity()); + ps.setDouble(4,detail.getPrice()); + ps.executeUpdate(); + + } + catch (SQLException e) + { + e.printStackTrace(); + } } - public List findByOrderId(int orderId) { + public List findByOrderId(int orderId) + { + List details = new ArrayList<>(); + String sql = "SELECT * FROM order_details WHERE order_id=?"; - // TODO: - // Retrieve order details + try(Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) + { + ps.setInt(1,orderId); + ResultSet rs = ps.executeQuery(); - return null; + while(rs.next()) + { + OrderDetail detail = new OrderDetail(); + + detail.setOrderId(rs.getInt("order_id")); + detail.setMenuItemId(rs.getInt("menu_item_id")); + detail.setQuantity(rs.getInt("quantity")); + detail.setPrice(rs.getDouble("price")); + + details.add(detail); + } + } + catch (SQLException e) + { + e.printStackTrace(); + } + return details; } - } \ No newline at end of file diff --git a/src/main/java/dev/dao/UserDao.java b/src/main/java/dev/dao/UserDao.java index af08106..3392b62 100644 --- a/src/main/java/dev/dao/UserDao.java +++ b/src/main/java/dev/dao/UserDao.java @@ -1,23 +1,61 @@ package dev.dao; +import dev.database.DatabaseConnection; import dev.model.User; +import javax.xml.transform.Result; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + public class UserDao { - public boolean save(User user) { + public boolean save(User user) + { + String sql = "INSERT INTO users(username,password,email) VALUES(?,?,?)"; - // TODO: - // Insert user into database + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) + { + ps.setString(1, user.getUsername()); + ps.setString(2, user.getPassword()); + ps.setString(3, user.getEmail()); + return ps.executeUpdate() > 0; + } + catch (SQLException e) + { + e.printStackTrace(); + } return false; } - public User findByUsername(String username) { + public User findByUsername(String username) + { + String sql = "SELECT * FROM users WHERE username=?"; - // TODO: - // Find a user by username + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) + { + ps.setString(1, username); + ResultSet rs = ps.executeQuery(); + if (rs.next()) + { + User user = new User(); + user.setId(rs.getInt("id")); + user.setUsername(rs.getString("username")); + user.setPassword(rs.getString("email")); + user.setPassword(rs.getString("password")); + + return user; + } + } + catch (SQLException e) + { + throw new RuntimeException(e); + } return null; } - } \ No newline at end of file diff --git a/src/main/java/dev/database/DatabaseConnection.java b/src/main/java/dev/database/DatabaseConnection.java index da45535..4c614a5 100644 --- a/src/main/java/dev/database/DatabaseConnection.java +++ b/src/main/java/dev/database/DatabaseConnection.java @@ -1,6 +1,7 @@ package dev.database; import java.sql.Connection; +import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseConnection { @@ -9,19 +10,14 @@ public class DatabaseConnection { private static final String USER = "postgres"; // Your Username - private static final String PASSWORD = "password"; // Your Password + private static final String PASSWORD = "bita3773"; // Your Password private DatabaseConnection() { } - public static Connection getConnection() - throws SQLException { - - // TODO: - // Return a valid PostgreSQL connection - - return null; + public static Connection getConnection() throws SQLException + { + return DriverManager.getConnection(URL, USER, PASSWORD); } - } \ No newline at end of file diff --git a/src/main/java/dev/model/MenuItem.java b/src/main/java/dev/model/MenuItem.java index 265ecc1..492249a 100644 --- a/src/main/java/dev/model/MenuItem.java +++ b/src/main/java/dev/model/MenuItem.java @@ -12,4 +12,43 @@ public class MenuItem { private String category; + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } } \ No newline at end of file diff --git a/src/main/java/dev/model/Order.java b/src/main/java/dev/model/Order.java index 32049cb..0ec6165 100644 --- a/src/main/java/dev/model/Order.java +++ b/src/main/java/dev/model/Order.java @@ -12,4 +12,29 @@ public class Order { private double totalPrice; + public LocalDateTime getCreatedAt() { return createdAt; } + + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + + public double getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(double totalPrice) { + this.totalPrice = totalPrice; + } + + public int getId() { return id; } + + public void setId(int id) { + this.id = id; + } } \ No newline at end of file diff --git a/src/main/java/dev/model/OrderDetail.java b/src/main/java/dev/model/OrderDetail.java index b5b8bbe..e368dc9 100644 --- a/src/main/java/dev/model/OrderDetail.java +++ b/src/main/java/dev/model/OrderDetail.java @@ -2,8 +2,6 @@ package dev.model; public class OrderDetail { - private int id; - private int orderId; private int menuItemId; @@ -12,4 +10,19 @@ public class OrderDetail { private double price; + public int getOrderId() { return orderId; } + + public void setOrderId( int orderId ) { this.orderId = orderId; } + + public int getMenuItemId() { return menuItemId; } + + public void setMenuItemId(int menuItemId) { this.menuItemId = menuItemId; } + + public int getQuantity() { return quantity; } + + public void setQuantity(int quantity) { this.quantity = quantity; } + + public double getPrice() { return price; } + + public void setPrice(double price) { this.price = price; } } \ No newline at end of file diff --git a/src/main/java/dev/model/User.java b/src/main/java/dev/model/User.java index 0ab60c6..fde8371 100644 --- a/src/main/java/dev/model/User.java +++ b/src/main/java/dev/model/User.java @@ -10,4 +10,19 @@ public class User { private String email; + public String getUsername() { return username; } + + public void setUsername(String username) { this.username = username; } + + public int getId() { return id; } + + public void setId(int id) { this.id = id; } + + public String getPassword() { return password; } + + public void setPassword(String password) { this.password = password; } + + public String getEmail() { return email; } + + public void setEmail(String email) { this.email = email; } } \ No newline at end of file diff --git a/src/main/java/dev/service/AuthService.java b/src/main/java/dev/service/AuthService.java index bee866a..f837014 100644 --- a/src/main/java/dev/service/AuthService.java +++ b/src/main/java/dev/service/AuthService.java @@ -1,23 +1,38 @@ package dev.service; +import dev.dao.UserDao; import dev.model.User; -public class AuthService { +public class AuthService +{ + private final UserDao userDao = new UserDao(); - public boolean register(String username, String password, String email) { + public boolean register(String username, String password, String email) + { + if (userDao.findByUsername(username) != null) + { + System.out.println("username exists"); + return false; + } - // TODO: - // Validate and register user - - return false; + password = Integer.toHexString(password.hashCode()); + User user = new User(); + user.setUsername(username); + user.setPassword(password); + user.setEmail(email); + return userDao.save(user); } - public User login(String username, String password) { + public User login(String username, String password) + { + User user = userDao.findByUsername(username); - // TODO: - // Authenticate user + if (user == null) return null; + + String hash = Integer.toHexString(password.hashCode()); + + if(user.getPassword().equals(hash)) return user; return null; } - } \ No newline at end of file diff --git a/src/main/java/dev/service/MenuService.java b/src/main/java/dev/service/MenuService.java index 6dbf4da..a41ec0f 100644 --- a/src/main/java/dev/service/MenuService.java +++ b/src/main/java/dev/service/MenuService.java @@ -1,12 +1,23 @@ package dev.service; -public class MenuService { - - public void showMenu() { - - // TODO: - // Display menu items +import dev.dao.MenuItemDao; +import dev.model.MenuItem; +public class MenuService +{ + private final MenuItemDao dao = new MenuItemDao(); + public void showMenu() + { + System.out.println("\n==================================================================="); + System.out.println("id name description price category"); + System.out.println("==================================================================="); + for(MenuItem item : dao.findAll()) + { + System.out.println(item.getId() + ") " + + item.getName() + " - " + + item.getDescription() + " - $" +item.getPrice() + + " - " + item.getCategory()); + System.out.println("-------------------------------------------------------------------"); + } } - } \ No newline at end of file diff --git a/src/main/java/dev/service/OrderService.java b/src/main/java/dev/service/OrderService.java index 14708f8..fce01dd 100644 --- a/src/main/java/dev/service/OrderService.java +++ b/src/main/java/dev/service/OrderService.java @@ -1,26 +1,133 @@ 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 void placeOrder(int userId) { + private final Scanner scanner = new Scanner(System.in); + private final MenuItemDao menuDao = new MenuItemDao(); + private final OrderDao orderDao = new OrderDao(); + private final OrderDetailDao detailDao = new OrderDetailDao(); - // TODO: - // Create order + public void placeOrder(int userId) + { + List details = new ArrayList<>(); + double totalPrice = 0; + + while (true) + { + System.out.println("\nEnter menu item id (0 to finish): "); + + int itemId = scanner.nextInt(); + + if (itemId == 0) break; + + MenuItem item = menuDao.findById(itemId); + + if (item == null) + { + System.out.println("Item not found."); + continue; + } + + System.out.println("Quantity: "); + + int quantity = scanner.nextInt(); + + OrderDetail detail = new OrderDetail(); + + detail.setMenuItemId(itemId); + detail.setQuantity(quantity); + detail.setPrice(item.getPrice()); + + totalPrice += item.getPrice() * quantity; + + details.add(detail); + } + + if (details.isEmpty()) + { + System.out.println("No items selected."); + return; + } + + Order order = new Order(); + + order.setUserId(userId); + order.setTotalPrice(totalPrice); + + int orderId = orderDao.save(order); + + for (OrderDetail detail : details) + { + detail.setOrderId(orderId); + + detailDao.save(detail); + } + + printReceipt(orderId); + System.out.println("Order saved successfully."); } - public void printReceipt(int orderId) { + public void printReceipt(int orderId) + { + List details = detailDao.findByOrderId(orderId); - // TODO: - // Print order receipt + System.out.println("\n[Order Summary / Receipt]"); + System.out.println("----------------------------------------------------"); + System.out.printf("%-15s %-8s %-10s %-10s%n", + "Item", "Qty", "Unit", "Total"); + System.out.println("----------------------------------------------------"); + double finalTotal = 0; + + for(OrderDetail detail : details) + { + MenuItem item = menuDao.findById(detail.getMenuItemId()); + + double subtotal = detail.getPrice() * detail.getQuantity(); + + finalTotal += subtotal; + + System.out.printf("%-15s %-8d $%-9.2f $%-9.2f%n", + item.getName(), + detail.getQuantity(), + detail.getPrice(), + subtotal); + } + + System.out.println("----------------------------------------------------"); + System.out.printf("Final Total: $%.2f%n", finalTotal); } - public void showOrderHistory(int userId) { + public void showOrderHistory(int userId) + { + List orders = orderDao.findByUserId(userId); - // TODO: - // Display user's order history + if (orders.isEmpty()) + { + System.out.println("No orders found."); + return; + } + System.out.println("\n===== ORDER HISTORY ====="); + + for (Order order : orders) + { + System.out.println("Order ID: " + order.getId() + + " | Total: $" + order.getTotalPrice() + + " | Date: " + order.getCreatedAt() + ); + } } - } \ No newline at end of file diff --git a/src/main/java/dev/ui/ConsoleMenu.java b/src/main/java/dev/ui/ConsoleMenu.java index 663dc0c..8ca1cbe 100644 --- a/src/main/java/dev/ui/ConsoleMenu.java +++ b/src/main/java/dev/ui/ConsoleMenu.java @@ -1,44 +1,135 @@ package dev.ui; +import dev.model.User; +import dev.service.AuthService; +import dev.service.MenuService; +import dev.service.OrderService; + import java.util.Scanner; -public class ConsoleMenu { +public class ConsoleMenu +{ + private final Scanner scanner = new Scanner(System.in); + private final AuthService authService = new AuthService(); + private final MenuService menuService = new MenuService(); + private final OrderService orderService = new OrderService(); - private final Scanner scanner = - new Scanner(System.in); + private int userId; - public void start() { - - while (true) { - - System.out.println(); - System.out.println("===== JAVA PIZZERIA ====="); + public void start() + { + while (true) + { + System.out.println("\n===== JAVA PIZZERIA ====="); System.out.println("1. Login"); System.out.println("2. Register"); System.out.println("3. Exit"); - int choice = scanner.nextInt(); - - switch (choice) { + int choice = getIntInput(); + switch (choice) + { case 1: - // TODO + login(); break; case 2: - // TODO + register(); break; case 3: + System.out.println("Goodbye!"); return; default: - System.out.println("Invalid choice"); - + System.out.println("Invalid choice."); } - } - } + private void login() + { + System.out.println("\n[Login]"); + + System.out.print("Enter Username: "); + String username = scanner.next(); + + System.out.print("Enter Password: "); + String password = scanner.next(); + + User user = authService.login(username, password); + + if (user != null) + { + userId = user.getId(); + System.out.println("Welcome " + user.getUsername()); + showMainMenu(); + } + else System.out.println("Invalid credentials."); + } + + private void register() + { + System.out.print("Username: "); + String username = scanner.next(); + + System.out.print("Email: "); + String email = scanner.next(); + + System.out.print("Password: "); + String password = scanner.next(); + + if (authService.register(username, password, email)) System.out.println("Registred successfully!"); + else System.out.println("Registration failed."); + } + + private void showMainMenu() + { + while (true) + { + System.out.println("\n======================================="); + System.out.println(" 🍽️ MAIN MENU 🍽️"); + System.out.println("======================================="); + System.out.println("1. View Menu"); + System.out.println("2. Place a New Order"); + System.out.println("3. View Order History"); + System.out.println("4. Logout"); + System.out.println("======================================="); + System.out.println("Choose an option: "); + + int choice = getIntInput(); + + switch (choice) + { + case 1: + menuService.showMenu(); + break; + + case 2: + menuService.showMenu(); + orderService.placeOrder(userId); + break; + + case 3: + orderService.showOrderHistory(userId); + break; + + case 4: + return; + + default: + System.out.println("Invalid choice."); + } + } + } + + private int getIntInput() + { + while (!scanner.hasNextInt()) + { + System.out.println("Please enter a number:"); + scanner.next(); + } + return scanner.nextInt(); + } } \ No newline at end of file -- 2.54.0