diff --git a/Controller/NotesController.php b/Controller/NotesController.php index c2b4ffe..77c1190 100644 --- a/Controller/NotesController.php +++ b/Controller/NotesController.php @@ -36,4 +36,54 @@ class NotesController "note" => $note ]); } + + public function createNote() + { + if ($_SERVER['REQUEST_METHOD'] === 'POST') { + // Process form submission + $note = $this->notesModel->createNote( + $_POST['title'], + $_POST['content'], + $_SESSION['user_id'] + ); + + if ($note) { + // Redirect to show notes page after successful creation + header('Location: ?controller=NotesController&page=showNotes'); + exit(); + } else { + // If creation failed, show error message and stay on the form + $this->view->setVars([ + 'error' => 'Failed to create note. Please try again.' + ]); + } + } + } + + public function editNote() + { + if ($_SERVER['REQUEST_METHOD'] === 'POST') { + // Process form submission + $noteId = $_GET['id']; + $note = $this->notesModel->editNote($noteId, $_POST['title'], $_POST['content'], $_SESSION['user_id']); + + if ($note) { + // Redirect to show notes page after successful creation + header('Location: ?controller=NotesController&page=showNotes'); + exit(); + } else { + // If creation failed, show error message and stay on the form + $this->view->setVars([ + 'error' => 'Failed to create note. Please try again.' + ]); + } + } + } + + public function deleteNote() + { + $noteId = $_GET['id']; + $this->notesModel->deleteNote($noteId, $_SESSION['user_id']); + header("Location: ?controller=NotesController&page=showNotes"); + } } \ No newline at end of file diff --git a/Model/NotesModel.php b/Model/NotesModel.php index 2e47ae1..d348f17 100644 --- a/Model/NotesModel.php +++ b/Model/NotesModel.php @@ -61,4 +61,72 @@ class NotesModel extends Database return null; } } + + function createNote($title, $content, $userId) { + $pdo = $this->linkDB(); + if (!$pdo) return ['success' => false, 'message' => 'Database error.']; + if (empty(trim($title))) return ['success' => false, 'message' => 'Title is required.']; + try { + $stmt = $pdo->prepare("INSERT INTO notes (user_id, title, content) VALUES (?, ?, ?)"); + $stmt->execute([$userId, trim($title), $content]); // user_id is current session user + return ['success' => true, 'message' => 'Note created successfully.']; + } catch (PDOException $e) { + error_log("Create Note Error: " . $e->getMessage()); + return ['success' => false, 'message' => 'Failed to create note.']; + } + } + + function editNote($noteId, $userId, $title, $content) { + $pdo = $this->linkDB(); + if (!$pdo) return ['success' => false, 'message' => 'Database error.']; + if (empty(trim($title))) return ['success' => false, 'message' => 'Title is required.']; + try { + if (isAdmin()) { // Admin can update any note, user_id for record not changed + $stmt = $pdo->prepare("UPDATE notes SET title = ?, content = ? WHERE id = ?"); + $params = [trim($title), $content, $noteId]; + } else { // User can only update their own note + $stmt = $pdo->prepare("UPDATE notes SET title = ?, content = ? WHERE id = ? AND user_id = ?"); + $params = [trim($title), $content, $noteId, $userId]; + } + $stmt->execute($params); + + if ($stmt->rowCount() > 0) { + return ['success' => true, 'message' => 'Note updated successfully.']; + } + // Check if note exists if rowCount is 0 + $checkStmt = isAdmin() ? $pdo->prepare("SELECT id FROM notes WHERE id=?") : $pdo->prepare("SELECT id FROM notes WHERE id=? AND user_id=?"); + $checkParams = isAdmin() ? [$noteId] : [$noteId, $userId]; + $checkStmt->execute($checkParams); + if ($checkStmt->fetch()) { + return ['success' => true, 'message' => 'No changes made to the note.']; // Or false if you prefer + } + return ['success' => false, 'message' => 'Note not found or permission denied.']; + } catch (PDOException $e) { + error_log("Update Note Error: " . $e->getMessage()); + return ['success' => false, 'message' => 'Failed to update note.']; + } + } + + function deleteNote($noteId, $userId) { + $pdo = $this->linkDB(); + if (!$pdo) return ['success' => false, 'message' => 'Database error.']; + try { + if (isAdmin()) { // Admin can delete any note + $stmt = $pdo->prepare("DELETE FROM notes WHERE id = ?"); + $params = [$noteId]; + } else { // User can only delete their own note + $stmt = $pdo->prepare("DELETE FROM notes WHERE id = ? AND user_id = ?"); + $params = [$noteId, $userId]; + } + $stmt->execute($params); + + if ($stmt->rowCount() > 0) { + return ['success' => true, 'message' => 'Note deleted successfully.']; + } + return ['success' => false, 'message' => 'Note not found or permission denied.']; + } catch (PDOException $e) { + error_log("Delete Note Error: " . $e->getMessage()); + return ['success' => false, 'message' => 'Failed to delete note.']; + } + } } \ No newline at end of file diff --git a/Views/Notes/createNote.phtml b/Views/Notes/createNote.phtml new file mode 100644 index 0000000..82acc2d --- /dev/null +++ b/Views/Notes/createNote.phtml @@ -0,0 +1,67 @@ +setSafeMode(true); + +$this->notesModel = new \ppa\Model\NotesModel(); + +$isEditMode = false; +$note = null; +if ($isEditMode) { + $noteId = $_GET['id'] ?? 0; + $note = $this->notesModel->getNoteById($noteId, $_SESSION['user_id']); + if (!$note) { + echo "
- Edit + Edit |