diff --git a/src/main/java/dev/dao/MenuItemDao.java b/src/main/java/dev/dao/MenuItemDao.java index 3bbebe9..5eb8ce4 100644 --- a/src/main/java/dev/dao/MenuItemDao.java +++ b/src/main/java/dev/dao/MenuItemDao.java @@ -1,25 +1,59 @@ package dev.dao; +import dev.database.DatabaseConnection; import dev.model.MenuItem; +import java.sql.*; +import java.util.ArrayList; import java.util.List; public class MenuItemDao { public List findAll() { + List items = new ArrayList<>(); + String sql = "SELECT * FROM menu_items ORDER BY category, name"; - // 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 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")); + items.add(item); + } + + } catch (SQLException e) { + System.out.println("Error fetching menu: " + e.getMessage()); + } + return items; } public MenuItem findById(int id) { + String sql = "SELECT * FROM menu_items WHERE id = ?"; + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) { - // TODO: - // Find menu item by id + 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) { + System.out.println("Error finding menu item: " + e.getMessage()); + } 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..383e675 100644 --- a/src/main/java/dev/dao/OrderDao.java +++ b/src/main/java/dev/dao/OrderDao.java @@ -1,25 +1,53 @@ 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) { + String sql = "INSERT INTO orders (user_id, total_price) VALUES (?, ?) RETURNING id"; + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) { - // TODO: - // Insert order and return generated id + ps.setInt(1, order.getUserId()); + ps.setDouble(2, order.getTotalPrice()); + ResultSet rs = ps.executeQuery(); + if (rs.next()) return rs.getInt(1); // return generated id + + } catch (SQLException e) { + System.out.println("Error saving order: " + e.getMessage()); + } return -1; } public List findByUserId(int userId) { + List orders = new ArrayList<>(); + String sql = "SELECT * FROM orders WHERE user_id = ? ORDER BY created_at DESC"; - // TODO: - // Retrieve all orders of a user + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) { - return null; + 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.setCreatedAt(rs.getTimestamp("created_at").toLocalDateTime()); + order.setTotalPrice(rs.getDouble("total_price")); + orders.add(order); + } + + } catch (SQLException e) { + System.out.println("Error fetching orders: " + e.getMessage()); + } + 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..3d32867 100644 --- a/src/main/java/dev/dao/OrderDetailDao.java +++ b/src/main/java/dev/dao/OrderDetailDao.java @@ -1,24 +1,53 @@ 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) { + String sql = "INSERT INTO order_details (order_id, menu_item_id, quantity, unit_price) VALUES (?, ?, ?, ?)"; + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) { - // TODO: - // Insert order detail + 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) { + System.out.println("Error saving order detail: " + e.getMessage()); + } } 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)) { - return null; + ps.setInt(1, orderId); + ResultSet rs = ps.executeQuery(); + + while (rs.next()) { + OrderDetail d = new OrderDetail(); + d.setId(rs.getInt("id")); + d.setOrderId(rs.getInt("order_id")); + d.setMenuItemId(rs.getInt("menu_item_id")); + d.setQuantity(rs.getInt("quantity")); + d.setPrice(rs.getDouble("unit_price")); + details.add(d); + } + + } catch (SQLException e) { + System.out.println("Error fetching order details: " + e.getMessage()); + } + 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..685d366 100644 --- a/src/main/java/dev/dao/UserDao.java +++ b/src/main/java/dev/dao/UserDao.java @@ -1,23 +1,48 @@ package dev.dao; +import dev.database.DatabaseConnection; import dev.model.User; +import java.sql.*; + public class UserDao { public boolean save(User user) { + String sql = "INSERT INTO users (username, password_hash, email) VALUES (?, ?, ?)"; + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) { - // TODO: - // Insert user into database + ps.setString(1, user.getUsername()); + ps.setString(2, user.getPassword()); + ps.setString(3, user.getEmail()); + return ps.executeUpdate() > 0; - return false; + } catch (SQLException e) { + System.out.println("Error saving user: " + e.getMessage()); + return false; + } } public User findByUsername(String username) { + String sql = "SELECT * FROM users WHERE username = ?"; + try (Connection conn = DatabaseConnection.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) { - // TODO: - // Find a user by username + 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("password_hash")); + user.setEmail(rs.getString("email")); + return user; + } + + } catch (SQLException e) { + System.out.println("Error finding user: " + e.getMessage()); + } return null; } - } \ No newline at end of file