| Current Path : /var/www/html/delima/frontend/controllers/ |
| Current File : /var/www/html/delima/frontend/controllers/NotificationController.php |
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
class NotificationController extends Controller {
public function actionGetcontent($code = '') {
$output = \common\models\NotificationTemplate::getcontent($code);
echo $output;
}
public function actionUpdateread($noti_id) {
if (($model = \common\models\NotificationLog::findOne($noti_id)) !== null) {
$model->noti_read_status = 1;
$model->updated_at = date("Y-m-d H:i:s");
$model->updated_by = Yii::$app->user->identity->id;
$model->updated_user_type = 'frontend_user';
if ($model->save(false)) {
return 'success';
}
}
}
//cron untuk send email
public function actionSendemail() {
$model = \common\models\NotificationEmailLog::find()->where(['email_send_status' => 0])->all();
if (!empty($model)) {
foreach ($model as $row) {
$row->email_send_status = 1;
$row->send_at = date("Y-m-d H:i:s");
$row->updated_at = date("Y-m-d H:i:s");
$row->updated_by = 0;
$row->updated_user_type = 'cron';
$sendEmail = Yii::$app->emailModule->sendemail($row->email_address, $row->email_subject, $row->email_content);
if ($sendEmail == 'success') {
$row->save(false);
}
}
}
}
//cron notification untuk penyelia mengisi borang penilaian
public function actionReminderevaluation() {
//get all course participation & belum di evaluate
$query = "SELECT p.*, i.course_end_date
FROM course_participation p
INNER JOIN course_info i ON i.course_id=p.participation_course_id
LEFT JOIN course_user_evaluation v ON v.evaluation_participation_id=p.participation_id
WHERE
i.course_status = 'done' AND
p.participation_course_type = 'course_info' AND
p.participation_user_status = 'user_confirm' AND
p.participation_supervisor_status = 'supervisor_support' AND
p.participation_coordinator_status = 'coordinator_support' AND
p.participation_status = 'participate_complete' AND
v.evaluation_id IS NULL";
$model = Yii::$app->db->createCommand($query)->queryAll();
if (!empty($model)) {
foreach ($model as $row) {
//check dah lepas 3 bulan ke belum
$dateevaluate = date('Y-m-d', strtotime("+3 months", strtotime($row['course_end_date'])));
if (date('Y-m-d') == $dateevaluate) {
//hantar notification ke penyelia
$noti_code = 'noti-penyelia-belum-menilai';
$noti_content = file_get_contents(Yii::$app->params['notiContent'] . '?code=' . $noti_code . '&participation_id=' . $row['participation_id']);
if (!empty($noti_content)) {
$modelNoti = new \common\models\NotificationLog();
$modelNoti->noti_receiver_id = $row['participation_supervisor_id'];
$modelNoti->noti_sender_id = $row['participation_user_id'];
$modelNoti->noti_title = \common\models\NotificationTemplate::getname($noti_code);
$modelNoti->noti_content = $noti_content;
$modelNoti->noti_url = 'index.php?id=1&page_id=43';
$modelNoti->noti_read_status = 0;
$modelNoti->created_at = date("Y-m-d H:i:s");
$modelNoti->created_by = 0;
$modelNoti->created_user_type = 'cron';
$modelNoti->updated_at = date("Y-m-d H:i:s");
$modelNoti->updated_by = 0;
$modelNoti->updated_user_type = 'cron';
if ($modelNoti->save(false)) {
//hantar emel ke penyelia
$email_code = 'email-penyelia-belum-menilai';
$email_content = file_get_contents(Yii::$app->params['notiContent'] . '?code=' . $email_code . '¬i_id=' . $modelNoti->noti_id);
$modelEmail = new \common\models\NotificationEmailLog();
$modelEmail->email_address = \backend\modules\fruserdynav2\models\FrontendUser::getemail($modelNoti->noti_receiver_id);
$modelEmail->email_subject = \common\models\NotificationTemplate::getname($email_code);
$modelEmail->email_content = $email_content;
$modelEmail->created_at = date("Y-m-d H:i:s");
$modelEmail->created_by = 0;
$modelEmail->created_user_type = 'cron';
$modelEmail->updated_at = date("Y-m-d H:i:s");
$modelEmail->updated_by = 0;
$modelEmail->updated_user_type = 'cron';
//send email
$sendEmail = Yii::$app->emailModule->sendemail($modelEmail->email_address, $modelEmail->email_subject, $modelEmail->email_content);
if ($sendEmail == 'success') {
$modelEmail->email_send_status = 1;
} else {
$modelEmail->email_send_status = 0;
}
$modelEmail->save(false);
}
}
}
}
}
}
}