diff --git a/cp/app/Controllers/SupportController.php b/cp/app/Controllers/SupportController.php index f8440e5..64b7f1b 100644 --- a/cp/app/Controllers/SupportController.php +++ b/cp/app/Controllers/SupportController.php @@ -11,14 +11,90 @@ class SupportController extends Controller { public function view(Request $request, Response $response) { - $ticketModel = new Tickets($this->container->get('db')); - $tickets = $ticketModel->getAllTickets(); - return view($response,'admin/support/view.twig', compact('tickets')); + return view($response,'admin/support/view.twig'); } public function newticket(Request $request, Response $response) { - return view($response,'admin/support/newticket.twig'); + if ($request->getMethod() === 'POST') { + // Retrieve POST data + $data = $request->getParsedBody(); + $db = $this->container->get('db'); + $categories = $db->select("SELECT * FROM ticket_categories"); + + $category = $data['category'] ?? null; + $subject = $data['subject'] ?? null; + $message = $data['message'] ?? null; + + if (!$subject) { + return view($response, 'admin/support/newticket.twig', [ + 'error' => 'Please enter a subject', + 'categories' => $categories, + ]); + } + + if (!$message) { + return view($response, 'admin/support/newticket.twig', [ + 'error' => 'Please enter a message', + 'categories' => $categories, + ]); + } + + try { + $currentDateTime = new \DateTime(); + $crdate = $currentDateTime->format('Y-m-d H:i:s.v'); + $db->insert( + 'support_tickets', + [ + 'user_id' => $_SESSION['auth_user_id'], + 'category_id' => $category, + 'subject' => $subject, + 'message' => $message, + 'status' => 'Open', + 'priority' => 'Medium', + 'reported_domain' => null, + 'nature_of_abuse' => null, + 'evidence' => null, + 'relevant_urls' => null, + 'date_of_incident' => null, + 'date_created' => $crdate, + 'last_updated' => null, + ] + ); + $ticket_id = $db->getLastInsertId(); + + $db->insert( + 'ticket_responses', + [ + 'ticket_id' => $ticket_id, + 'responder_id' => $_SESSION['auth_user_id'], + 'response' => $message, + 'date_created' => $crdate, + ] + ); + + } catch (Exception $e) { + $db->rollBack(); + return view($response, 'admin/support/newticket.twig', [ + 'error' => $e->getMessage(), + 'categories' => $categories + ]); + } + + return view($response, 'admin/support/view.twig', [ + 'categories' => $categories, + 'subject' => $subject, + ]); + + } + + $db = $this->container->get('db'); + $categories = $db->select("SELECT * FROM ticket_categories"); + + // Default view for GET requests or if POST data is not set + return view($response,'admin/support/newticket.twig', [ + 'categories' => $categories, + ]); } public function docs(Request $request, Response $response) diff --git a/cp/resources/views/admin/support/newticket.twig b/cp/resources/views/admin/support/newticket.twig index d11a276..c5a1690 100644 --- a/cp/resources/views/admin/support/newticket.twig +++ b/cp/resources/views/admin/support/newticket.twig @@ -11,7 +11,7 @@
- | ID - - | -Subject | -Status | -Priority | -- |
---|---|---|---|---|---|
- | {{ ticket.subject }} | -{{ ticket.status }} | -{{ ticket.priority }} | -- - - - - | -