OEModule\PatientTicketing\controllers\AdminController::actionAddQueueSet PHP Method

actionAddQueueSet() public method

Create a new QueueSet along with its initial queue (cannot have a queue set without an initial queue).
public actionAddQueueSet ( )
    public function actionAddQueueSet()
    {
        $queueset = new models\QueueSet('formCreate');
        $queue = new models\Queue();
        $queue->is_initial = true;
        $errors = array();
        if (!empty($_POST)) {
            $queueset->attributes = $_POST[\CHtml::modelName($queueset)];
            $queue->attributes = $_POST[\CHtml::modelName($queue)];
            if (!$queueset->validate()) {
                $errors['Queue Set'] = array();
                foreach ($queueset->getErrors() as $errs) {
                    foreach ($errs as $e) {
                        $errors['Queue Set'][] = $e;
                    }
                }
            }
            if (!$queue->validate()) {
                $errors['Initial Queue'] = array_values($queue->getErrors());
            }
            if (!count($errors)) {
                $transaction = Yii::app()->db->beginTransaction();
                try {
                    $queue->save();
                    $queueset->initial_queue_id = $queue->id;
                    $queueset->setScenario('insert');
                    $queueset->save();
                    \Audit::add('admin', 'create', $queueset->id, null, array('module' => 'PatientTicketing', 'model' => $queueset->getShortModelName()));
                    $transaction->commit();
                    $resp = array('success' => true, 'queuesetId' => $queueset->id, 'initialQueueId' => $queueset->initial_queue_id);
                    echo \CJSON::encode($resp);
                } catch (Exception $e) {
                    $transaction->rollback();
                    throw new \CHttpException(500, 'Could not save queue set and/or initial queue');
                }
            } else {
                $resp = array('success' => false, 'form' => $this->renderPartial('form_queueset', array('queueset' => $queueset, 'queue' => $queue, 'errors' => $errors), true));
                echo \CJSON::encode($resp);
            }
        } else {
            $this->renderPartial('form_queueset', array('queueset' => $queueset, 'queue' => $queue, 'errors' => null));
        }
    }