From d0d0c04c5dfa89e36fbc8888eb28253b48c48fb7 Mon Sep 17 00:00:00 2001 From: Ramon Gutierrez Date: Wed, 31 Jan 2018 12:04:52 +0800 Subject: [PATCH] Add subject field to tickets --- src/Controller/TicketController.php | 33 ++++++++++++----------------- src/Entity/Ticket.php | 18 ++++++++++++++++ templates/customer/form.html.twig | 6 ++++++ templates/ticket/form.html.twig | 7 ++++++ templates/ticket/list.html.twig | 12 +++++++---- 5 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/Controller/TicketController.php b/src/Controller/TicketController.php index 0ae6e2eb..242405a7 100644 --- a/src/Controller/TicketController.php +++ b/src/Controller/TicketController.php @@ -39,8 +39,7 @@ class TicketController extends BaseController $datatable = $req->request->get('datatable'); // count total records - $tquery = $qb->select('COUNT(q)') - ->leftJoin('q.created_by', 'u'); + $tquery = $qb->select('COUNT(q)'); // add filters to count query $this->setQueryFilters($datatable, $tquery, $qb); @@ -65,21 +64,15 @@ class TicketController extends BaseController ]; // build query - $query = $qb->select('q') - ->addSelect($qb->expr()->concat('u.first_name', $qb->expr()->literal(' '), 'u.last_name') . ' as user_full_name'); + $query = $qb->select('q'); // add filters to query $this->setQueryFilters($datatable, $query, $qb); // check if sorting is present, otherwise use default if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) { - $prefix = ''; - - if (!in_array($datatable['sort']['field'], ['user_full_name'])) - $prefix = 'q.'; - $order = $datatable['sort']['sort'] ?? 'asc'; - $query->orderBy($prefix . $datatable['sort']['field'], $order); + $query->orderBy('q.' . $datatable['sort']['field'], $order); } else { $query->orderBy('q.id', 'asc'); } @@ -94,14 +87,14 @@ class TicketController extends BaseController $rows = []; foreach ($obj_rows as $orow) { // add row data - $row['id'] = $orow[0]->getID(); - $row['date_create'] = $orow[0]->getDateCreate()->format("d M Y g:i A"); - $row['first_name'] = $orow[0]->getFirstName(); - $row['last_name'] = $orow[0]->getLastName(); - $row['contact_num'] = $orow[0]->getContactNumber(); - $row['status'] = $orow[0]->getStatusText(); - $row['ticket_type'] = $orow[0]->getTicketTypeText(); - $row['user_full_name'] = $orow['user_full_name']; + $row['id'] = $orow->getID(); + $row['date_create'] = $orow->getDateCreate()->format("d M Y g:i A"); + $row['subject'] = $orow->getSubject(); + $row['first_name'] = $orow->getFirstName(); + $row['last_name'] = $orow->getLastName(); + $row['contact_num'] = $orow->getContactNumber(); + $row['status'] = $orow->getStatusText(); + $row['ticket_type'] = $orow->getTicketTypeText(); // add row metadata $row['meta'] = [ @@ -205,6 +198,7 @@ class TicketController extends BaseController ->setStatus($req->request->get('status')) ->setTicketType($ticket_type) ->setOtherTicketType($other_ticket_type) + ->setSubject($req->request->get('subject')) ->setDetails($req->request->get('details')) ->setDateCreate(new DateTime()) ->setCreatedBy($this->getUser()); @@ -330,6 +324,7 @@ class TicketController extends BaseController ->setStatus($req->request->get('status')) ->setTicketType($ticket_type) ->setOtherTicketType($other_ticket_type) + ->setSubject($req->request->get('subject')) ->setDetails($req->request->get('details')); // initialize error list @@ -392,7 +387,7 @@ class TicketController extends BaseController // check if datatable filter is present and append to query protected function setQueryFilters($datatable, &$query, $qb) { if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) { - $query->where($qb->expr()->concat('u.first_name', $qb->expr()->literal(' '), 'u.last_name') . ' LIKE :filter') + $query->where('q.subject LIKE :filter') ->orWhere('q.status LIKE :filter') ->orWhere('q.ticket_type LIKE :filter') ->orWhere('q.other_ticket_type LIKE :filter') diff --git a/src/Entity/Ticket.php b/src/Entity/Ticket.php index 0f8d448c..06e3bfa9 100644 --- a/src/Entity/Ticket.php +++ b/src/Entity/Ticket.php @@ -50,6 +50,13 @@ class Ticket */ protected $other_ticket_type; + // subject of this ticket + /** + * @ORM\Column(type="string", length=80) + * @Assert\NotBlank() + */ + protected $subject; + // first name of ticket owner /** * @ORM\Column(type="string", length=80) @@ -161,6 +168,17 @@ class Ticket } } + public function setSubject($subject) + { + $this->subject = $subject; + return $this; + } + + public function getSubject() + { + return $this->subject; + } + public function setFirstName($first_name) { $this->first_name = $first_name; diff --git a/templates/customer/form.html.twig b/templates/customer/form.html.twig index 6fd8c5a4..f38e0818 100644 --- a/templates/customer/form.html.twig +++ b/templates/customer/form.html.twig @@ -537,6 +537,7 @@ trow = { id: "{{ ticket.getID }}", date_create: "{{ ticket.getDateCreate|date('d M Y - h:i A') }}", + subject: "{{ ticket.getSubject }}", ticket_type: "{{ ticket.getTicketTypeText }}", status: "{{ ticket.getStatusText }}", edit_url: "{{ url('ticket_update', {'id': ticket.getID}) }}" @@ -1106,6 +1107,11 @@ title: 'Date Created', width: 200 }, + { + field: 'subject', + title: 'Subject', + width: 300 + }, { field: 'ticket_type', title: 'Ticket Type' diff --git a/templates/ticket/form.html.twig b/templates/ticket/form.html.twig index c452d9dc..cfc3b3b7 100644 --- a/templates/ticket/form.html.twig +++ b/templates/ticket/form.html.twig @@ -80,6 +80,13 @@
+
+
+ + + +
+