Add subject field to tickets

This commit is contained in:
Ramon Gutierrez 2018-01-31 12:04:52 +08:00
parent 6be23b27c5
commit d0d0c04c5d
5 changed files with 53 additions and 23 deletions

View file

@ -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')

View file

@ -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;

View file

@ -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'

View file

@ -80,6 +80,13 @@
<div class="form-control-feedback hide" data-field="other_ticket_type"></div>
</div>
</div>
<div class="form-group m-form__group row no-border">
<div class="col-lg-12">
<label data-field="subject">Subject</label>
<input type="text" name="subject" class="form-control m-input" value="{{ obj.getSubject }}">
<div class="form-control-feedback hide" data-field="subject"></div>
</div>
</div>
<div class="form-group m-form__group row no-border">
<div class="col-lg-12">
<label for="details" data-field="details">

View file

@ -74,6 +74,9 @@
serverFiltering: true,
serverSorting: true
},
layout: {
scroll: true
},
columns: [
{
field: 'id',
@ -84,6 +87,11 @@
field: 'date_create',
title: 'Date Created'
},
{
field: 'subject',
title: 'Subject',
width: 300
},
{
field: 'first_name',
title: 'First Name'
@ -104,10 +112,6 @@
field: 'status',
title: 'Status'
},
{
field: 'user_full_name',
title: 'Created By'
},
{
field: 'Actions',
width: 110,