89 lines
2.6 KiB
PHP
89 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace ppa\Controller;
|
|
|
|
use ppa\Model\NotesModel;
|
|
use ppa\Library\View;
|
|
|
|
class NotesController
|
|
{
|
|
private $notesModel;
|
|
protected $view;
|
|
|
|
public function __construct($view)
|
|
{
|
|
$this->notesModel = new NotesModel();
|
|
$this->view = $view;
|
|
}
|
|
|
|
public function showNotes()
|
|
{
|
|
$sortBy = $_GET['sort_by'] ?? 'updated_at';
|
|
$sortOrder = strtoupper($_GET['sort_order'] ?? 'DESC');
|
|
$isAdmin = $_SESSION['role'] === 'admin';
|
|
$userid = $_SESSION['user_id'];
|
|
|
|
$this->view->setVars([
|
|
"notes" => $this->notesModel->selectNotesForUser($userid, $isAdmin, $sortBy, $sortOrder)
|
|
]);
|
|
}
|
|
|
|
public function showNoteDetails()
|
|
{
|
|
$noteId = $_GET['id'];
|
|
$note = $this->notesModel->getNoteById($noteId);
|
|
$this->view->setVars([
|
|
"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=Notes&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=Notes&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=Notes&page=showNotes");
|
|
}
|
|
} |