login($username, $password)) { header('Location: /dashboard'); exit; } else { $error = 'Login failed. Please check your credentials.'; require __DIR__ . '/../views/auth/login.php'; } } else { require __DIR__ . '/../views/auth/login.php'; } break; case '/register': if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Extract form data $username = $_POST['username'] ?? ''; $password = $_POST['password'] ?? ''; $email = $_POST['email'] ?? ''; // Perform validation (basic example) if (empty($username) || empty($password) || empty($email)) { // Handle validation error $error = 'All fields are required.'; require __DIR__ . '/../views/auth/register.php'; break; } // Instantiate User class and call register method $user = new \Hpz937\BillReminder\User\User($db); // Assume $db is your DatabaseInterface instance if ($user->register($username, $password, $email)) { // Redirect to login on success header('Location: /'); exit; } else { // Handle registration error $error = 'Registration failed. Please try again.'; require __DIR__ . '/../views/auth/register.php'; } } else { require __DIR__ . '/../views/auth/register.php'; } break; case '/dashboard': if (!isset($_SESSION['user_id'])) { header('Location: /login'); exit; } require __DIR__ . '/../views/dashboard.php'; break; case '/settings': if (!isset($_SESSION['user_id'])) { header('Location: /login'); exit; } require __DIR__ . '/../views/settings.php'; break; case '/api/bills': if (!isset($_SESSION['user_id'])) { // Return an error response if the user is not logged in echo json_encode(['error' => 'Unauthorized']); http_response_code(401); exit; } // Initialize your database and Bill class instance $db = new SQLiteAdapter(); $billManager = new Bill($db); $userId = $_SESSION['user_id']; $bills = $billManager->getBillsByUserId($userId); // Assuming $billManager is your Bill class instance // Return the bills as JSON header('Content-Type: application/json'); echo json_encode($bills); break; case '/api/add-bill': if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_SESSION['user_id'])) { // Extract bill details from POST data $userId = $_SESSION['user_id']; // Assuming you store user ID in session upon login $description = $_POST['description'] ?? ''; $amount = $_POST['amount'] ?? ''; $dueDate = $_POST['due_date'] ?? ''; // Validate the inputs... // Insert the bill into the database $result = $billManager->addBill($userId, $dueDate, $amount, $description); if ($result) { echo json_encode(['success' => 'Bill added successfully']); } else { http_response_code(500); echo json_encode(['error' => 'Failed to add bill']); } exit; } break; case '/api/edit-bill': if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_SESSION['user_id'])) { // Extract bill details and ID from POST data $billId = $_POST['id'] ?? ''; $description = $_POST['description'] ?? ''; $amount = $_POST['amount'] ?? ''; $dueDate = $_POST['due_date'] ?? ''; // Validate the inputs and ensure the bill belongs to the logged-in user... // Update the bill in the database $result = $billManager->editBill($billId, $dueDate, $amount, $description); if ($result) { echo json_encode(['success' => 'Bill updated successfully']); } else { http_response_code(500); echo json_encode(['error' => 'Failed to update bill']); } exit; } break; case '/api/delete-bill': if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_SESSION['user_id'])) { // Extract bill ID from POST data $billId = $_POST['id'] ?? ''; // Validate the ID and ensure the bill belongs to the logged-in user... // Delete the bill from the database $result = $billManager->deleteBill($billId); if ($result) { echo json_encode(['success' => 'Bill deleted successfully']); } else { http_response_code(500); echo json_encode(['error' => 'Failed to delete bill']); } exit; } break; default: http_response_code(404); echo 'Page not found'; break; }