/**
* @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;
}
}