public function saveClient()
 {
     $model = new ProjectsHasUsers();
     $model->project_id = $this->project_id;
     $model->user_id = $this->client_id;
     $model->isManager = $this->isManager;
     return $model->save();
 }
 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)));
 }
 /**
  * Create client user as project participant
  */
 public function actionAddClient()
 {
     // check if user has permissions to updateProjects
     if (Yii::app()->user->checkAccess('updateProjects') && Yii::app()->user->getIsManager()) {
         // verify params request
         if (Yii::app()->request->isAjaxRequest) {
             // verify params request
             if (Yii::app()->request->isPostRequest) {
                 // create object to save relation between user and project as manager
                 $model = new ProjectsHasUsers();
                 $model->user_id = $_POST['uid'];
                 $model->project_id = (int) Yii::app()->user->getState('project_selected');
                 if ($model->save()) {
                     // find data for project and user to send an email
                     $userSelected = Users::model()->findByPk($model->user_id);
                     $project = Projects::model()->findByPk($model->project_id);
                     // prepares to send email to user added to PM
                     $str = $this->renderPartial('//templates/projects/useradd', array('userCreateInvitation' => Yii::app()->user->CompleteName, 'userInvited' => $userSelected->CompleteName, 'projectName' => $project->project_name, 'applicationName' => Yii::app()->name, 'applicationUrl' => "http://" . $_SERVER['SERVER_NAME'] . Yii::app()->request->baseUrl), true);
                     $subject = Yii::t('email', 'UserAddtoProject');
                     Yii::import('application.extensions.phpMailer.yiiPhpMailer');
                     $mailer = new yiiPhpMailer();
                     $mailer->pushMail($subject, $str, array('email' => $userSelected->user_email, 'name' => $userSelected->CompleteName), Emails::PRIORITY_NORMAL);
                     // save log
                     $attributes = array('log_date' => date("Y-m-d G:i:s"), 'log_activity' => 'ClientAssigned', 'log_resourceid' => $model->project_id, 'log_type' => Logs::LOG_ASSIGNED, 'user_id' => Yii::app()->user->id, 'module_id' => Yii::app()->controller->id, 'project_id' => $model->project_id);
                     Logs::model()->saveLog($attributes);
                     $managers = Projects::model()->findManagersByProject((int) 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);
                     }
                     $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')));
                     $availablesClients = Users::model()->filterManagers($managerList)->findClientsByProject(Yii::app()->user->getState('project_selected'));
                     $str = $this->renderPartial('_dropdownUsersList', array('availablesManagers' => $availablesClients), true);
                     $strManager = $this->renderPartial('_dropdownUsersList', array('availablesManagers' => $ManagersAvailables), true);
                     // output is a json denotation result
                     $output = array('saved' => true, 'html' => $str, 'htmlManager' => $strManager, 'hasreg' => count($availablesClients) > 0 ? true : false);
                 }
             } else {
                 throw new CHttpException(403, Yii::t('site', '403_Error'));
             }
             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'));
     }
 }