public function delete($queue_id)
{
$transaction = Yii::app()->db->getCurrentTransaction() === null ? Yii::app()->db->beginTransaction() : false;
try {
$queue = $this->readModel($queue_id);
// remove dependendent outcomes
$remove_ids = $queue->getDependentQueueIds();
$remove_ids[] = $queue_id;
// how I'd do it if BaseActiveRecordVersioned supported delete with an in condition
/*
$criteria = new \CDbCriteria();
$criteria->addInCondition('outcome_queue_id', $remove_ids);
$criteria->addInCondition('queue_id', $remove_ids, 'OR');
models\QueueOutcome::model()->deleteAll($criteria);
// remove dependent and actual queues
$criteria = new \CDbCriteria();
$criteria->addInCondition($this->model->getPrimaryKey(), $remove_ids);
$this->model->deleteAll($criteria);
*/
// instead ...
foreach ($remove_ids as $rid) {
$criteria = new \CDbCriteria();
$criteria->addColumnCondition(array('outcome_queue_id' => $rid, 'queue_id' => $rid), 'OR');
models\QueueOutcome::model()->deleteAll($criteria);
$this->model->deleteByPk($rid);
}
\Audit::add('admin', 'delete', $queue->id, null, array('module' => 'PatientTicketing', 'model' => $queue->getShortModelName()));
if ($transaction) {
$transaction->commit();
}
} catch (\Exception $e) {
if ($transaction) {
$transaction->rollback();
}
throw $e;
}
}