Add subject field to tickets
This commit is contained in:
parent
6be23b27c5
commit
d0d0c04c5d
5 changed files with 53 additions and 23 deletions
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue