* @since 2.0 */ class AssignController extends Controller { public $pharse = [ 1 => "Phân cảnh", 2 => "Vẽ background", 3 => "Vẽ động", 4 => "Đọc thoại", 5 => "Sạch xen", 6 => "Kỹ thuật" ]; /** * This command echoes what you have entered as the message. * @param string $message the message to be echoed. * @return int Exit code */ public function actionIndex() { $config = \app\models\Config::findOne(['config_key' => 'auto_assign'])->config; $time = \app\models\Config::findOne(['config_key' => 'time_auto_assign'])->config * 60; if ($config === '1') { $query = \app\models\Projects::find(); $query->andFilterWhere(["OR", ['p1' => 0], ['p2' => 0], ['p3' => 0], ['p4' => 0], ['p5' => 0], ['p6' => 0]]); $projects = $query->all(); foreach ($projects as $k => $project) { if ($project->p1 == 0) { $this->assign($time, $project, 1); } else { if ($project->p2 == 0) { $this->assign($time, $project, 2); } else { if ($project->p5 == 0) { $this->assign($time, $project, 5); } elseif ($project->p6 == 0) { $this->assign($time, $project, 6); } } if ($project->p3 == 0) { $this->assign($time, $project, 3); } if ($project->p4 == 0) { $this->assign($time, $project, 4); } } } } return; } public function assign($time, $project, $pid) { $project_id = $project->id; $role = ''; if ($pid == 1) { $role = 'hoa_sy_phan_canh'; } if (in_array($pid, [2, 3, 4])) { if ($pid == 2) { $role = 'hoa_sy_to_mau'; } if ($pid == 3) { $role = 'hoa_sy_ve_dong'; } if ($pid == 4) { $role = 'doc_thoai'; } $timeConfig = time() - $time; $check = \app\models\Results::find()->andWhere(['project_id' => $project_id, 'p_id' => 1, 'status' => 1])->andWhere(["<", "modified_at", $timeConfig])->count(); if ($check == 0) { return; } } if ($pid == 5) { $role = 'hoa_sy_sach_xen'; $timeConfig = time() - $time; $check = \app\models\Results::find()->andWhere(['project_id' => $project_id, 'p_id' => 2, 'status' => 1])->andWhere(["<", "modified_at", $timeConfig])->count(); if ($check == 0) { return; } } if ($pid == 6) { $role = 'ky_thuat'; $timeConfig = time() - $time; $check = \app\models\Results::find()->andWhere(['project_id' => $project_id, 'p_id' => 5, 'status' => 1])->andWhere(["<", "modified_at", $timeConfig])->count(); if ($check == 0) { return; } } $authors = \app\models\AuthAssignment::find()->andWhere(['item_name' => $role])->all(); foreach ($authors as $k => $v) { $currentProjects = \app\models\Results::find()->andWhere(['u_id' => $v->user_id, 'content' => null])->count(); if (\app\models\User::findOne($v->user_id)->quota > $currentProjects) { \app\models\Projects::updateAll(['p' . $pid => $v->user_id], ['id' => $project_id]); $model = new \app\models\Results(); $check = $model->create(['project_id' => $project_id, 'p_id' => $pid, 'u_id' => $v->user_id]); if ($check) { $notification = new \app\models\Notification(); $content = "Hệ thống đã tự động giao quy trình " . $this->pharse[$pid] . " cho bạn trong dự án " . $project->name . ""; $notif_id = $notification->create([ 'content' => $content, 'from_user' => 0, 'to_user' => $v->user_id, 'url' => \yii\helpers\Url::to(['/projects/view', 'id' => $project_id, 'p' => $pid]), 'time' => time() ]); if ($notif_id) { $notification->sendEmail($notif_id, $v->user_id, $content); } return true; } } } return false; } }