From 2651caa1dfb38d78c8a80e463d9c4550e80c23ec Mon Sep 17 00:00:00 2001 From: tp_dhu Date: Tue, 25 Mar 2025 09:15:04 +0000 Subject: [PATCH] Updated TicketController to reference TicketsPriority and TicketsStatus model --- app/controllers/TicketController.php | 30 ++++++++++++++++++++-------- app/models/Ticket.php | 22 +++++++++++--------- app/models/TicketPriority.php | 16 +++++++++++++++ app/models/TicketStatus.php | 16 +++++++++++++++ 4 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 app/models/TicketPriority.php create mode 100644 app/models/TicketStatus.php diff --git a/app/controllers/TicketController.php b/app/controllers/TicketController.php index d069023..4c1e17d 100644 --- a/app/controllers/TicketController.php +++ b/app/controllers/TicketController.php @@ -45,9 +45,15 @@ class TicketController extends BaseController implements CRUD { // show create form // TODO_PROJECTS: dropdown to associate ticket with project public function createForm($f3){ + $db = $this->getDB(); + $priorities = (new TicketPriority($db))->findAll(); + $statuses = (new TicketStatus($db))->findAll(); $this->requireLogin(); - $this->renderView('../ui/views/ticket/create.html'); + $this->renderView('../ui/views/ticket/create.html',[ + 'priorities' => $priorities, + 'statuses' => $statuses + ]); } // handle POST @@ -60,8 +66,8 @@ class TicketController extends BaseController implements CRUD { 'title' => $this->f3->get('POST.title'), 'created_at' => $this->f3->get('POST.created_at'), 'description' => $this->f3->get('POST.description'), - 'priority' => $this->f3->get('POST.priority'), - 'status' => $this->f3->get('POST.status'), + 'priority_id' => $this->f3->get('POST.priority_id'), + 'status_id' => $this->f3->get('POST.status_id'), 'created_by' => $this->f3->get('SESSION.user.id') ]; @@ -80,7 +86,8 @@ class TicketController extends BaseController implements CRUD { // show edit form // including custom forms // TODO_PROJECTS: allow reasssigning or removing a project association - public function editForm($f3){ + public function editForm($f3) + { $this->requireLogin(); $ticket_id = $f3->get('PARAMS.id'); @@ -92,16 +99,23 @@ class TicketController extends BaseController implements CRUD { $this->f3->reroute('/tickets'); } + // dropdowns + $priorities = (new TicketPriority($this->getDB()))->findAll(); + $statuses = (new TicketStatus($this->getDB()))->findAll(); + $this->renderView('../ui/views/ticket/edit.html',[ 'ticket' => $ticket, - 'ticket_meta' => $ticket->getMeta() + 'ticket_meta' => $ticket->getMeta(), + 'priorities' => $priorities, + 'statuses' => $statuses ] ); return; } // process edit POST TODO: if assigned or admin - public function update($f3){ + public function update($f3) + { $this->requireLogin(); @@ -118,8 +132,8 @@ class TicketController extends BaseController implements CRUD { 'title' => $this->f3->get('POST.title'), 'created_at' => $this->f3->get('POST.created_at'), 'description' => $this->f3->get('POST.description'), - 'priority' => $this->f3->get('POST.priority'), - 'status' => $this->f3->get('POST.status'), + 'priority_id' => $this->f3->get('POST.priority_id'), + 'status_id' => $this->f3->get('POST.status_id'), 'updated_by' => $this->f3->get('SESSION.user.id') ]; $ticket->updateTicket($data); diff --git a/app/models/Ticket.php b/app/models/Ticket.php index f352b91..98cae7d 100644 --- a/app/models/Ticket.php +++ b/app/models/Ticket.php @@ -11,10 +11,12 @@ class Ticket extends \DB\SQL\Mapper { public function findAll(): array { return $this->db->exec( - 'SELECT * - FROM tickets - WHERE recycled = 0 - ORDER BY created_at DESC' + 'SELECT t.* , tp.name AS priority_name, ts.name AS status_name + FROM tickets t + LEFT JOIN ticket_priorities tp ON t.priority_id = tp.id + LEFT JOIN ticket_statuses ts ON t.status_id = ts.id + WHERE t.recycled = 0 + ORDER BY t.created_at DESC' ); } @@ -30,10 +32,12 @@ class Ticket extends \DB\SQL\Mapper { $this->title = $data['title'] ?? ''; $this->description = $data['description'] ?? ''; - $this->priority = $data['priority'] ?? 'Low'; - $this->status = $data['status'] ?? 'New'; + // + $this->priority_id = $data['priority_id'] ?? null; + $this->status = $data['status_id'] ?? null; + // $this->created_by = $data['created_by'] ?? null; - $this->created_at = $data['created_at'] ?? date('Y-m-d H:i:s'); + $this->created_at = ($data['created_at'] == '' ? date('Y-m-d H:i:s') : $data['created_at']) ?? date('Y-m-d H:i:s'); $this->updated_at = date('Y-m-d H:i:s'); $this->save(); @@ -44,8 +48,8 @@ class Ticket extends \DB\SQL\Mapper { { if(isset($data['title'])){ $this->title = $data['title']; } if(isset($data['description'])) { $this->description = $data['description']; } - if(isset($data['priority'])) { $this->priority = $data['priority']; } - if(isset($data['status'])) { $this->status = $data['status']; } + if(isset($data['priority_id'])) { $this->priority_id = $data['priority_id']; } + if(isset($data['status_id'])) { $this->status_id = $data['status_id']; } if(isset($data['updated_by'])) { $this->updated_by = $data['updated_by']; } $this->created_at = ($data['created_at'] == '' ? date('Y-m-d H:i:s') : $data['created_at']) ?? date('Y-m-d H:i:s'); $this->updated_at = date('Y-m-d H:i:s'); diff --git a/app/models/TicketPriority.php b/app/models/TicketPriority.php new file mode 100644 index 0000000..29f0a53 --- /dev/null +++ b/app/models/TicketPriority.php @@ -0,0 +1,16 @@ +db->exec( + 'SELECT * FROM ticket_priorities ORDER BY sort_order ASC' + ); + } +} \ No newline at end of file diff --git a/app/models/TicketStatus.php b/app/models/TicketStatus.php new file mode 100644 index 0000000..e86c705 --- /dev/null +++ b/app/models/TicketStatus.php @@ -0,0 +1,16 @@ +db->exec( + 'SELECT * FROM ticket_statuses ORDER BY sort_order ASC' + ); + } +} \ No newline at end of file