This commit is contained in:
2026-06-22 23:39:36 +03:30
parent 00f990c653
commit 5ea8a95fe7
22 changed files with 779 additions and 253 deletions
+28 -5
View File
@@ -1,23 +1,46 @@
package dev.service;
import dev.dao.UserDao;
import dev.model.User;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class AuthService {
private final UserDao userDao = new UserDao();
public boolean register(String username, String password, String email) {
if (userDao.findByUsername(username) != null) {
return false;
}
// TODO:
// Validate and register user
User user = new User();
user.setUsername(username);
user.setPassword(hashPassword(password));
user.setEmail(email);
return false;
return userDao.save(user);
}
public User login(String username, String password) {
User user = userDao.findByUsername(username);
// TODO:
// Authenticate user
if (user != null && user.getPassword().equals(hashPassword(password))) {
return user;
}
return null;
}
private String hashPassword(String password) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest(password.getBytes());
return Base64.getEncoder().encodeToString(hash);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("Error hashing password", e);
}
}
}
+13 -4
View File
@@ -1,12 +1,21 @@
package dev.service;
import dev.dao.MenuItemDao;
import dev.model.MenuItem;
import java.util.List;
public class MenuService {
private final MenuItemDao menuItemDao = new MenuItemDao();
public void showMenu() {
List<MenuItem> items = menuItemDao.getAllItems();
// TODO:
// Display menu items
System.out.println("\nAvailable Items:");
for (MenuItem item : items) {
System.out.printf("%d. %s - $%.2f%n", item.getId(), item.getName(), item.getPrice());
}
System.out.println();
}
}
+62 -8
View File
@@ -1,26 +1,80 @@
package dev.service;
import dev.dao.MenuItemDao;
import dev.dao.OrderDao;
import dev.model.MenuItem;
import dev.model.Order;
import dev.model.OrderDetail;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class OrderService {
public void placeOrder(int userId) {
private final OrderDao orderDao = new OrderDao();
private final MenuItemDao menuItemDao = new MenuItemDao();
// TODO:
// Create order
public void placeOrder(int userId, Map<Integer, Integer> cart) {
Order order = new Order();
order.setUserId(userId);
order.setCreatedAt(LocalDateTime.now());
double total = 0;
List<OrderDetail> details = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : cart.entrySet()) {
MenuItem item = menuItemDao.getById(entry.getKey());
if (item != null) {
OrderDetail detail = new OrderDetail();
detail.setMenuItemId(item.getId());
detail.setQuantity(entry.getValue());
detail.setPrice(item.getPrice());
details.add(detail);
total += item.getPrice() * entry.getValue();
}
}
order.setTotalPrice(total);
int orderId = orderDao.saveOrder(order, details);
System.out.println("\nOrder saved successfully!");
printReceipt(orderId);
}
public void printReceipt(int orderId) {
Order order = orderDao.getOrderById(orderId);
List<OrderDetail> details = orderDao.getOrderDetails(orderId);
// TODO:
// Print order receipt
System.out.println("\n[Order Summary / Receipt]");
System.out.println("---------------------------------------");
System.out.printf("%-15s %-5s %-10s %-10s%n", "Item", "Qty", "Unit", "Total");
System.out.println("---------------------------------------");
for (OrderDetail detail : details) {
MenuItem item = menuItemDao.getById(detail.getMenuItemId());
double subtotal = detail.getQuantity() * detail.getPrice();
System.out.printf("%-15s %-5d $%-9.2f $%.2f%n", item.getName(), detail.getQuantity(), detail.getPrice(), subtotal);
}
System.out.println("---------------------------------------");
System.out.printf("Final Total: $%.2f%n", order.getTotalPrice());
}
public void showOrderHistory(int userId) {
List<Order> orders = orderDao.getOrdersByUserId(userId);
// TODO:
// Display user's order history
System.out.println("\n[Order History]");
if (orders.isEmpty()) {
System.out.println("You have no past orders.");
return;
}
for (Order order : orders) {
System.out.printf("Order ID: %d | Date: %s | Total Spent: $%.2f%n",
order.getId(), order.getCreatedAt(), order.getTotalPrice());
}
}
}