public function actionIndex()
{
unset(Yii::app()->session['patientticket_ticket_in_review']);
AutoSaveTicket::clear();
$cat_id = Yii::app()->request->getParam('cat_id', null);
$queueset_id = Yii::app()->request->getParam('queueset_id', null);
$select_queue_set = Yii::app()->request->getParam('select_queue_set', null);
if (!$cat_id) {
throw new \CHttpException(404, 'Category ID required');
}
if ($qs_id = $queueset_id && $select_queue_set) {
$this->redirect(array("/PatientTicketing/default/?queueset_id={$qs_id}&cat_id=" . $cat_id));
}
if ($queueset_id) {
$qs_id = $queueset_id;
}
$qsc_svc = Yii::app()->service->getService(self::$QUEUESETCATEGORY_SERVICE);
if (!($category = $qsc_svc->readActive((int) $cat_id))) {
throw new \CHttpException(404, 'Invalid category id');
}
$queueset = null;
$tickets = null;
$pages = null;
$patient_filter = null;
if ($queuesets = $qsc_svc->getCategoryQueueSetsForUser($category, Yii::app()->user->id)) {
// default to the single queueset if that is all that is available to the user
if (count($queuesets) > 1) {
if ($qs_id) {
foreach ($queuesets as $qs) {
if ($qs->getID() == $qs_id) {
$queueset = $qs;
break;
}
}
}
} else {
$queueset = $queuesets[0];
}
if ($queueset) {
// build the filter
$filter_keys = array('queue-ids', 'priority-ids', 'subspecialty-id', 'firm-id', 'my-tickets', 'closed-tickets');
$filter_options = array();
if (empty($_POST)) {
if (($filter_options = Yii::app()->session['patientticket_filter']) && @$filter_options['category-id'] == $category->getID()) {
foreach ($filter_options as $k => $v) {
$_POST[$k] = $v;
}
}
} else {
foreach ($filter_keys as $k) {
if (isset($_POST[$k])) {
$filter_options[$k] = $_POST[$k];
}
}
$filter_options['category-id'] = $category->getID();
}
Yii::app()->session['patientticket_filter'] = $filter_options;
list($criteria, $patient_filter) = $this->buildTicketFilterCriteria($filter_options, $queueset);
$count = models\Ticket::model()->count($criteria);
$pages = new \CPagination($count);
$pages->pageSize = $this->page_size;
$pages->applyLimit($criteria);
// get tickets that match criteria
$tickets = models\Ticket::model()->findAll($criteria);
\Audit::add('queueset', 'view', $queueset->getId());
}
}
// render
$this->render('index', array('category' => $category, 'queueset' => $queueset, 'tickets' => $tickets, 'patient_filter' => $patient_filter, 'pages' => $pages, 'cat_id' => $cat_id));
}