public function setPermisssionedUsers($queueset_id, $user_ids, $role = null)
{
$qs = $this->readModel($queueset_id);
$users = array();
foreach ($user_ids as $id) {
if (!($user = \User::model()->findByPk($id))) {
throw new \Exception("User not found for id {$id}");
}
$users[] = $user;
}
$role_item = null;
if ($role) {
$role_item = Yii::app()->authManager->getAuthItem($role);
if (!$role_item) {
throw new \Exception("Unrecognised role {$role} for permissioning");
}
}
$transaction = Yii::app()->db->getCurrentTransaction() === null ? Yii::app()->db->beginTransaction() : false;
try {
$qs->permissioned_users = $users;
$qs->save();
\Audit::add('admin', 'set-permissions', $qs->id, null, array('module' => 'PatientTicketing', 'model' => $qs->getShortModelName()));
if ($role_item) {
foreach ($users as $user) {
if (!$role_item->getAssignment($user->id)) {
$role_item->assign($user->id);
\Audit::add('admin-User', 'assign-role', "{$user->id}:{$role_item->name}");
}
}
}
if ($transaction) {
$transaction->commit();
}
} catch (\Exception $e) {
if ($transaction) {
$transaction->rollback();
}
throw $e;
}
}