public function run() { $cls_name = explode('\\', get_class($this)); $this->shortName = array_pop($cls_name); if (file_exists(dirname(__FILE__) . '/js/' . $this->shortName . '.js')) { $this->assetFolder = Yii::app()->getAssetManager()->publish(dirname(__FILE__) . '/js/'); Yii::app()->getClientScript()->registerScriptFile($this->assetFolder . '/' . $this->shortName . '.js'); } if ($this->queue_id) { $queue = models\Queue::model()->findByPk($this->queue_id); } else { $queue = null; } $form_fields = $queue->getFormFields(); $auto_save = false; if (isset($_POST[$form_fields[0]['form_name']])) { // if post contains patient ticket data $form_data = $_POST; } elseif ($form_data = AutoSaveTicket::getFormData($this->patient_id, $this->current_queue_id)) { $auto_save = true; } //if this is the outcome widget and a correspondence has been created //display the print letter button $print_letter_event = false; foreach ($form_fields as $fld) { if (@$fld['widget_name'] == 'TicketAssignAppointment') { if ($api = \Yii::app()->moduleAPI->get('OphCoCorrespondence')) { if ($episode = $this->ticket->patient->getEpisodeForCurrentSubspecialty()) { if ($event = $api->getLatestEvent($episode)) { if ($event->created_date > $this->ticket->created_date) { $print_letter_event = $event; } } } } } } $this->render('QueueAssign', array('queue' => $queue, 'form_fields' => $form_fields, 'form_data' => $form_data, 'auto_save' => $auto_save, 'print_letter_event' => $print_letter_event)); }
public function validateForm($ticket_id) { if (!($ticket = models\Ticket::model()->with('current_queue')->findByPk($ticket_id))) { throw new \CHttpException(404, 'Invalid ticket id.'); } if (!($to_queue = models\Queue::model()->active()->findByPk($_POST['to_queue_id']))) { throw new \CHttpException(404, "Cannot find queue with id {$_POST['to_queue_id']}"); } $api = Yii::app()->moduleAPI->get('PatientTicketing'); list($data, $errs) = $api->extractQueueData($to_queue, $_POST, true); return $errs; }
/** * Marks the given Queue inactive. * * @throws \CHttpException */ public function actionDeactivateQueue() { if (!($queue = models\Queue::model()->findByPk((int) @$_POST['id']))) { throw new \CHttpException(404, 'Queue not found with id ' . @$_POST['id']); } $transaction = Yii::app()->db->beginTransaction(); try { $this->deactivateQueue($queue); $transaction->commit(); } catch (Exception $e) { $transaction->rollback(); throw new \CHttpException(500, 'Could not change queue state'); } echo 1; }
/** * Returns the initial queues a patient ticket can be created against. * * @param \Firm $firm * * @return Queue[] */ public function getInitialQueues(\Firm $firm) { $criteria = new \CDbCriteria(); $criteria->addColumnCondition(array('is_initial' => true)); return Queue::model()->active()->findAll($criteria); }
/** * @dataProvider assignmentFieldValidateProvider */ public function testAssignmentFieldValidate($ass_fields, $valid, $messages) { $model = new models\Queue(); $model->name = 'Test Queue'; $model->assignment_fields = $ass_fields; $res = $model->validate(); $this->assertEquals($valid, $res, 'Unexpected validation response'); if ($messages) { $errs = $model->getErrors('assignment_fields'); $this->assertEquals(count($errs), count($messages), 'Error message count not matching expectation'); foreach ($messages as $i => $msg) { $this->assertEquals($msg, $errs[$i]); } } }