OEModule\PatientTicketing\services\PatientTicketing_QueueService::delete PHP Метод

delete() публичный Метод

Delete the queue and the queues that are are solely dependent on it.
public delete ( $queue_id )
$queue_id
    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;
        }
    }