/** * Finds the Project model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Project the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Project::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
public function actionView($id) { /** @var Project $projectModel */ $projectModel = Project::findOne($id); if (!$projectModel) { throw new NotFoundHttpException('Project was not found'); } /** @var Users[] $users */ $users = $projectModel->users; return $this->render('view', ['model' => $projectModel, 'users' => $users]); }
/** * 发起上线 * * @throws \Exception */ public function actionStartDeploy() { $taskId = \Yii::$app->request->post('taskId'); if (!$taskId) { static::renderJson([], -1, '任务号不能为空:)'); } $this->task = Task::findOne($taskId); if (!$this->task) { throw new \Exception('任务号不存在:)'); } if ($this->task->user_id != $this->uid) { throw new \Exception('不可以操作其它人的任务:)'); } // 任务失败或者审核通过时可发起上线 if (!in_array($this->task->status, [Task::STATUS_PASS, Task::STATUS_FAILED])) { throw new \Exception('任务不能被重复执行:)'); } // 配置 $this->conf = Project::getConf($this->task->project_id); // db配置 $dbConf = Project::findOne($this->task->project_id); try { if ($this->task->action == Task::ACTION_ONLINE) { $this->_makeVersion(); $this->_initWorkspace(); $this->_gitUpdate(); $this->_preDeploy(); $this->_postDeploy(); $this->_rsync(); $this->_postRelease(); $this->_link($this->task->link_id); $this->_cleanUp($this->task->link_id); } else { $this->_link($this->task->ex_link_id); } /** 至此已经发布版本到线上了,需要做一些记录工作 */ // 记录此次上线的版本(软链号)和上线之前的版本 ///对于回滚的任务不记录线上版本 if ($this->task->action == Task::ACTION_ONLINE) { $this->task->ex_link_id = $dbConf->version; } $this->task->status = Task::STATUS_DONE; $this->task->save(); // 记录当前线上版本(软链)回滚则是回滚的版本,上线为新版本 $dbConf->version = $this->task->link_id; $dbConf->save(); } catch (\Exception $e) { $this->task->status = Task::STATUS_FAILED; $this->task->save(); // 清理本地部署空间 $this->_cleanUp($this->task->link_id); throw $e; } }
/** * @param $id * @throws NotFoundHttpException */ public function actionCancelProject($id) { if (($model = Project::findOne($id)) !== null) { if ($model->approved == false) { //Se registra como cancelado $model->approved = false; $model->update(false); //Se envia el correo al estudiante Yii::$app->mailer->compose()->setFrom('*****@*****.**')->setTo($model->projectManager->user->email)->setSubject('Proyecto' . ' ' . $model->name . ' rechazado.')->setTextBody('Su proyecto ha sido rechazado.')->setHtmlBody('<b>Su proyecto ha sido rechazado.</b>')->send(); Yii::$app->getSession()->setFlash('success', 'El proyecto ha sido rechazado.'); $this->redirect('view-projects'); } else { Yii::$app->getSession()->setFlash('danger', 'El proyecto ya ha sido aprobado previamente.'); $this->redirect('view-projects'); } } else { throw new NotFoundHttpException('El proyecto no ha sido encontrado.'); } }
public function actionView($id) { $message = Message::findOne($id); $messages = Message::find()->where(['number' => $message->number])->all(); $model = Project::findOne($message->project_id); $reply = new Message(); foreach ($messages as $item) { $item->status = 4; $item->save(); } if ($reply->load(Yii::$app->request->post()) && $reply->validate()) { // $reply->user_id = $reply->project_id = $message->project_id; $reply->status = 1; $reply->time = time(); $reply->type = 'text'; $reply->save(); // Send twilio Text through project model $model->sendText([$message->user_id], $reply->message); Yii::$app->session->setFlash('success', 'Message Sent'); $this->redirect(['/project/messages', 'id' => $message->project_id]); } return $this->render('view', ['message' => $message, 'messages' => $messages, 'model' => $model, 'reply' => $reply]); }
/** * 项目审核管理员设置 * * @return string * @throws \Exception */ public function actionEditRelation($id, $type = 0) { $group = Group::findOne($id); if (!$group) { throw new \Exception('关系不存在:)'); } $project = Project::findOne($group->project_id); if ($project->user_id != $this->uid) { throw new \Exception('不可以操作其它人的项目:)'); } if (!in_array($type, [Group::TYPE_ADMIN, Group::TYPE_USER])) { throw new \Exception('未知的关系类型:)'); } $group->type = (int) $type; if (!$group->save()) { throw new \Exception('更新失败'); } $this->renderJson([]); }
<?php use app\models\Project; use app\models\Registration; use app\models\student; use app\models\StudentEvidenceSearch; /* @var $this yii\web\View */ /* @var $searchModel app\models\StudentSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = 'Página principal'; Yii::$app->formatter->locale = 'es_ES'; $student = Student::findOne(['user_id' => Yii::$app->user->id]); if ($registration = Registration::findOne(['student_id' => $student->id])) { $project = Project::findOne($registration->project_id); $textProject = 'Avances de proyecto: ' . $project->name; $searchModel = new StudentEvidenceSearch(); $dataProviderNews = $searchModel->search(Yii::$app->request->queryParams, \app\models\StudentEvidence::$NEW); $dataProviderPending = $searchModel->search(Yii::$app->request->queryParams, \app\models\StudentEvidence::$PENDING); $countNews = $dataProviderNews->getTotalCount(); $countPending = $dataProviderPending->getTotalCount(); if ($countNews == 1) { $textDetails = 'Tienes ' . $countNews . ' avance nuevo.'; } else { $textDetails = 'Tienes ' . $countNews . ' avances nuevos.'; } if ($countPending == 1) { $textDetails .= '<br>Tienes ' . $countPending . ' avance pendiente.'; } else { $textDetails .= '<br>Tienes ' . $countPending . ' avances pendientes.'; } $textFooter = "<div class = 'panel-footer'><h4>Da click en el menú <i>Avances</i> para ver los detalles.</h4></div>";
/** * 项目审核管理员设置 * * @return string * @throws \Exception */ public function actionEditRelation($id, $type = 0) { $group = Group::findOne($id); if (!$group) { throw new \Exception(yii::t('conf', 'relation not exists')); } $project = Project::findOne($group->project_id); if ($project->user_id != $this->uid) { throw new \Exception(yii::t('w', 'you are not master of project')); } if (!in_array($type, [Group::TYPE_ADMIN, Group::TYPE_USER])) { throw new \Exception(yii::t('conf', 'unknown relation type')); } $group->type = (int) $type; if (!$group->save()) { throw new \Exception(yii::t('w', 'update failed')); } $this->renderJson([]); }
public function actionDelete($id) { Project::findOne($id)->deleteRecursive(); Yii::$app->getSession()->setFlash("success", 'The record was deleted.'); return $this->redirect(["project/"]); }
/** * Sends an email with a link, for verifying the given email address. * @param integer $id * @return boolean whether the email was send */ public function sendFollowersEmail($id) { $project = Project::findOne($id); $userIds = explode(',', $project->followers->usersFollowing); foreach ($userIds as $userId) { $user = User::findOne($userId); if ($user) { \Yii::$app->mailer->compose('emailFollower', ['user' => $user, 'project' => $project])->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])->setTo($user->email)->setSubject('Project update notification for ' . $project->name)->send(); } } }
/** * 删除项目的用户关系 * * @return string * @throws \Exception */ public function actionDeleteRelation($id) { $group = Group::findOne($id); if (!$group) { throw new \Exception('关系不存在:)'); } $project = Project::findOne($group->project_id); if ($project->user_id != $this->uid) { throw new \Exception('不可以操作其它人的项目:)'); } if (!$group->delete()) { throw new \Exception('删除失败'); } $this->renderJson([]); }
/** * @return mixed|\yii\web\Response */ public function actionPrintEvidenceReport() { $student = Student::findOne(['user_id' => Yii::$app->user->id]); date_default_timezone_set("America/Mexico_City"); try { $searchModel = new StudentEvidenceSearch(); $dataProviderAccepted = $searchModel->search(Yii::$app->request->queryParams, StudentEvidence::$ACCEPTED); $registration = Registration::findOne(['student_id' => $student->id]); $person = Person::findOne(User::findOne(Yii::$app->user->id)->person_id); $project = Project::findOne($registration->project_id); $projectM = ProjectManager::findOne($project->manager_id); // get your HTML raw content without any layouts or scripts $content = $this->render('studentEvidencePDF', ['registration' => $registration, 'student' => $student, 'person' => $person, 'project' => $project, 'projectM' => $projectM, 'searchModel' => $searchModel, 'dataProviderAccepted' => $dataProviderAccepted]); $formatter = \Yii::$app->formatter; // setup kartik\mpdf\Pdf component $pdf = new Pdf(['mode' => Pdf::MODE_UTF8, 'format' => Pdf::FORMAT_LETTER, 'orientation' => Pdf::ORIENT_PORTRAIT, 'destination' => Pdf::DEST_BROWSER, 'content' => $content, 'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css', 'cssInline' => '.kv-heading-1{font-size:18px}', 'options' => ['title' => 'Reporte de avances'], 'methods' => ['SetFooter' => ['Fecha de expedición: ' . $formatter->asDate(date('d-F-Y'))]]]); // return the pdf output as per the destination setting return $pdf->render(); } catch (InvalidConfigException $e) { Yii::$app->getSession()->setFlash('danger', 'No tienes proyectos asignados'); return $this->redirect(Url::home()); } }
?> </p> <div class="col-md-3"> <ul class="nav nav-pills nav-stacked"> <?php $projects = Project::find()->select(['projectID', 'name'])->all(); foreach ($projects as $project) { echo Html::tag('li', Html::a(Html::encode($project->name), ['index', 'id' => $project->projectID]), ['class' => $project->projectID == $model->selectedProjectID ? 'active' : '']); } ?> </div> </div> <div class="col-md-9"> <?php $project = Project::findOne($model->selectedProjectID); if ($project) { $coordinator = User::findOne($project->coordinator); ?> <h1> <?php echo Html::encode($project->name); ?> <div class="btn-toolbar pull-right"> <?php if (\Yii::$app->user->can('updateProjectStatus')) { echo Html::a('', ['update', 'id' => $project->projectID], ['class' => 'btn btn-default glyphicon glyphicon-pencil', 'title' => 'Update']); } if (\Yii::$app->user->can('deleteProject')) { echo Html::a('', ['delete', 'id' => $project->projectID], ['class' => 'btn btn-default glyphicon glyphicon-trash', 'title' => 'Delete', 'data-confirm' => 'Are you sure you want to delete this item?', 'data-method' => 'post', 'data-pjax' => '0']); }