/**
  * Return a value indicating whether the user has joined or not into specific task
  * @param int $id
  * @return boolean value
  */
 public function getHasJoined($id = 0)
 {
     $exist = false;
     $task_id = $id == 0 ? $_GET['id'] : $id;
     $exist = UsersHasTasks::model()->exists('t.user_id = :user_id AND t.task_id = :task_id', array(':user_id' => Yii::app()->user->id, ':task_id' => $task_id));
     return (bool) $exist;
 }
 public function actionRelatedCreate()
 {
     // check if user has permissions to viewTasks
     if (Yii::app()->user->checkAccess('viewTasks')) {
         // verify params request
         if (Yii::app()->request->isAjaxRequest) {
             // verify params request
             if (Yii::app()->request->isPostRequest) {
                 // verify user_id has relation with selected project and task_id has relation with selected project
                 if (Users::model()->verifyUserInProject((int) Yii::app()->user->getState('project_selected'), (int) $_POST['uid']) && Tasks::model()->verifyTasksInProject((int) Yii::app()->user->getState('project_selected'), (int) $_POST['task_id'])) {
                     $output = array();
                     $model = new UsersHasTasks();
                     $model->user_id = $_POST['uid'];
                     $model->task_id = $_POST['task_id'];
                     if ($model->save()) {
                         $user = Users::model()->findByPk($model->user_id);
                         $task = Tasks::model()->with('Projects', 'Milestones')->findByPk($model->task_id);
                         $recipientsList['email'] = $user->user_email;
                         $recipientsList['name'] = $user->CompleteName;
                         $subject = Yii::t('email', 'TaskAssigned') . " - " . $task->task_name;
                         $str = $this->renderPartial('//templates/tasks/assigment', array('task' => $task, 'task_url' => "http://" . $_SERVER['SERVER_NAME'] . Yii::app()->createUrl('tasks/view', array('id' => $model->task_id)), 'applicationName' => Yii::app()->name, 'applicationUrl' => "http://" . $_SERVER['SERVER_NAME'] . Yii::app()->request->baseUrl), true);
                         Yii::import('application.extensions.phpMailer.yiiPhpMailer');
                         $mailer = new yiiPhpMailer();
                         $mailer->pushMail($subject, $str, $recipientsList, Emails::PRIORITY_NORMAL);
                         // Guardar log
                         $attributes = array('log_date' => date("Y-m-d G:i:s"), 'log_activity' => 'TaskAssigned', 'log_resourceid' => $model->task_id, 'log_type' => Logs::LOG_ASSIGNED, 'user_id' => $model->user_id, 'module_id' => Yii::app()->controller->id, 'project_id' => (int) Yii::app()->user->getState('project_selected'));
                         Logs::model()->saveLog($attributes);
                         $availableUsers = Users::model()->availablesUsersToTakeTask(Yii::app()->user->getState('project_selected'), $model->task_id);
                         $str = $this->renderPartial('_dropdownUsersList', array('availableUsers' => $availableUsers), true);
                         $output = array('saved' => true, 'html' => $str, 'hasreg' => count($availableUsers) > 0 ? true : false);
                     }
                     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'));
     }
 }
 public function findBeforeDelete($user_id, $task_id)
 {
     return UsersHasTasks::model()->find(array('condition' => 't.user_id = :user_id AND t.task_id = :task_id', 'params' => array(':user_id' => $user_id, ':task_id' => $task_id)));
 }