OEModule\PatientTicketing\controllers\DefaultController::actionIndex PHP Метод

actionIndex() публичный Метод

Generate a list of current tickets.
public actionIndex ( )
    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));
    }