public function findBeforeDelete($user_id, $project_id) { return ProjectsHasUsers::model()->find(array('condition' => 't.user_id = :user_id AND t.project_id = :project_id', 'params' => array(':user_id' => $user_id, ':project_id' => $project_id))); }
/** * Remove users from related project */ public function actionRemoveUser() { // check if user has permissions to updateProjects if (Yii::app()->user->checkAccess('updateProjects') && Yii::app()->user->getIsManager()) { // verify params request and post request if (Yii::app()->request->isAjaxRequest && Yii::app()->request->isPostRequest) { // verify user_id has relation with selected project if (Users::model()->verifyUserInProject((int) Yii::app()->user->getState('project_selected'), (int) Yii::app()->request->getParam("uid", 0))) { // find record in Project Has User table $model = ProjectsHasUsers::model()->findBeforeDelete((int) Yii::app()->request->getParam("uid", 0), (int) Yii::app()->user->getState('project_selected')); $output = array(); if ($model->delete()) { //Save log $attributes = array('log_date' => date("Y-m-d G:i:s"), 'log_activity' => 'UserDeleted', 'log_resourceid' => $model->project_id, 'log_type' => Logs::LOG_DELETED, 'user_id' => $model->user_id, 'module_id' => Yii::app()->controller->id, 'project_id' => (int) Yii::app()->user->getState('project_selected')); Logs::model()->saveLog($attributes); // Managers List $Managers = Projects::model()->findManagersByProject(Yii::app()->user->getState('project_selected')); $managerList = array(); if (count($Managers) > 0) { foreach ($Managers as $users) { array_push($managerList, $users->user_id); } } else { array_push($managerList, -1); } // validate source (user or client) $sourceRequest = Yii::app()->request->getParam("action", "user"); if (!empty($sourceRequest)) { if ($sourceRequest == "client") { $availables = Users::model()->filterManagers($managerList)->findClientsByProject($model->project_id); } else { $availables = Users::model()->filterManagers($managerList)->findUsersByProject($model->project_id); } // Availables $ManagersAvailables = Users::model()->findAll(array('condition' => 'Companies.company_id = :company_id AND t.user_id NOT IN (' . implode(",", $managerList) . ')', 'params' => array(':company_id' => Projects::model()->findByPk(Yii::app()->user->getState('project_selected'))->company_id), 'together' => true, 'order' => 't.user_name ASC', 'with' => array('Companies'))); $str = $this->renderPartial('_dropdownUsersList', array('availablesManagers' => $availables), true); $strManager = $this->renderPartial('_dropdownUsersList', array('availablesManagers' => $ManagersAvailables), true); //verifivar si queda un administrador, enviar hasreg false para que no se pueda eliminar $output = array('saved' => true, 'html' => $str, 'htmlManager' => $strManager, 'hasreg' => true); } } echo CJSON::encode($output); Yii::app()->end(); } else { throw new CHttpException(403, Yii::t('site', '403_Error')); } } else { throw new CHttpException(403, Yii::t('site', '403_Error')); } } else { throw new CHttpException(403, Yii::t('site', '403_Error')); } }