OEModule\PatientTicketing\models\Queue::addTicket PHP Method

addTicket() public method

Add the given ticket to the Queue for the user and firm.
public addTicket ( Ticket $ticket, CWebUser $user, Firm $firm, $data )
$ticket Ticket
$user CWebUser
$firm Firm
$data
    public function addTicket(Ticket $ticket, $user, \Firm $firm, $data)
    {
        $assignment = new TicketQueueAssignment();
        $assignment->queue_id = $this->id;
        $assignment->ticket_id = $ticket->id;
        $assignment->assignment_user_id = $user->id;
        $assignment->assignment_firm_id = $firm->id;
        $assignment->assignment_date = date('Y-m-d H:i:s');
        $assignment->notes = @$data[self::$FIELD_PREFIX . '_notes'];
        // store the assignment field values to the assignment object.
        if ($assignment_fields = $this->getAssignmentFieldDefinitions()) {
            $details = array();
            foreach ($assignment_fields as $assignment_field) {
                if ($val = @$data[$assignment_field['form_name']]) {
                    $store = array('id' => $assignment_field['id']);
                    if (@$assignment_field['type'] == 'widget') {
                        // store the widget for later data manipulation
                        $store['widget_name'] = $assignment_field['widget_name'];
                        // post processing handling
                        $class_name = 'OEModule\\PatientTicketing\\widgets\\' . $assignment_field['widget_name'];
                        $widget = new $class_name();
                        $widget->processAssignmentData($ticket, $val);
                    } elseif (@$assignment_field['choices']) {
                        foreach ($assignment_field['choices'] as $k => $v) {
                            if ($k == $val) {
                                $val = $v;
                                break;
                            }
                        }
                    }
                    $store['value'] = $val;
                    $details[] = $store;
                }
            }
            $assignment->details = json_encode($details);
        }
        // generate the report field on the ticket.
        if ($this->report_definition) {
            $assignment->generateReportText();
        }
        if (!$assignment->save()) {
            throw new \Exception('Unable to save queue assignment');
        }
        return true;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * @param \Patient  $patient
  * @param Queue     $initial_queue
  * @param \CWebUser $user
  * @param \Firm     $firm
  * @param $data
  *
  * @throws \Exception
  *
  * @return \OEModule\PatientTicketing\models\Ticket
  */
 public function createTicketForPatient(\Patient $patient, Queue $initial_queue, \CWebUser $user, \Firm $firm, $data)
 {
     $transaction = Yii::app()->db->getCurrentTransaction() === null ? Yii::app()->db->beginTransaction() : false;
     try {
         $ticket = new Ticket();
         $ticket->patient_id = $patient->id;
         $ticket->created_user_id = $user->id;
         $ticket->last_modified_user_id = $user->id;
         $ticket->priority_id = $data['patientticketing__priority'];
         $ticket->save();
         $ticket->audit('ticket', 'create', $ticket->id);
         $initial_queue->addTicket($ticket, $user, $firm, $data);
         if ($transaction) {
             $transaction->commit();
         }
         return $ticket;
     } catch (\Exception $e) {
         if ($transaction) {
             $transaction->rollback();
         }
         throw $e;
     }
 }