| Current Path : /var/www/html/learn/frontend/controllers/ |
| Current File : /var/www/html/learn/frontend/controllers/ReportController.php |
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use yii\data\SqlDataProvider;
use yii\helpers\ArrayHelper;
use kartik\mpdf\Pdf;
class ReportController extends Controller {
public function actionUserparticipationpdf($user_id = '', $course_year = '') {
$user_name = '';
$user_ic = '';
$user_branch = '';
$user_state = '';
if (($modelUser = \backend\modules\fruserdynav2\models\FrontendUser::findOne($user_id)) !== null) {
$user_name = $modelUser->fullname;
$user_ic = $modelUser->username;
$user_branch = \backend\modules\refdynawebv2\models\Ref::getDesc('BRANCH', $modelUser->branch, 'descr');
$user_state = \backend\modules\refdynawebv2\models\Ref::getDesc('STATE', $modelUser->state, 'descr');
}
$minimum_day = \backend\modules\courseTarget\models\CourseTarget::getmindays($course_year);
$calculate_minimum_hour = $minimum_day * 6;
$total_user_day = \common\models\CourseParticipation::calculatecoursedays($user_id, $course_year);
if ($total_user_day >= $minimum_day) {
$message = '<h2 style="color:#ff9000;text-shadow: 2px 2px black;"><b>TAHNIAH!</b></h2>
<p>Anda telah mencapai KPI (Key Performance Indicators - Petunjuk Prestasi Utama) elemen mengenai syarat berkursus minima iaitu
' . $minimum_day . ' hari setahun bagi semua kakitangan di Jabatan Pendaftaran Pertubuhan Malaysia.</p>';
} else {
$message = '<p>Anda belum mencapai KPI (Key Performance Indicators - Petunjuk Prestasi Utama) elemen mengenai syarat berkursus minima iaitu
' . $minimum_day . ' hari setahun bagi semua kakitangan di Jabatan Pendaftaran Pertubuhan Malaysia.</p>';
}
$count = 0;
$course_list = '';
$query_ext = "";
$query_ext_arr = [];
if ($user_id != "")
$query_ext_arr[] = "participation_user_id='$user_id'";
if ($course_year != "")
$query_ext_arr[] = "YEAR(course_start_date)='$course_year'";
if (!empty($query_ext_arr))
$query_ext = ' WHERE ' . implode(' AND ', $query_ext_arr);
$query = "SELECT * FROM (
SELECT p.participation_user_id,
'merekod' AS course_category, r.record_course_name AS course_title, r.record_type AS course_type,
r.record_start_date AS course_start_date, r.record_start_time AS course_start_time,
r.record_end_date AS course_end_date, r.record_end_time AS course_end_time,
u.fullname AS user_name, u.designation AS user_designation, u.state AS user_state, u.service_group AS user_service_group,
r.record_organizer AS course_location
FROM course_participation p
INNER JOIN course_record r ON p.participation_course_id=r.record_id
INNER JOIN frontend_user u ON p.participation_user_id=u.id
WHERE
p.participation_status='participate_complete' AND
p.participation_supervisor_status='supervisor_approve' AND
p.participation_course_type='course_record'
UNION
SELECT p2.participation_user_id,
'takwim' AS course_category, i.course_title AS course_title, i.course_type AS course_type,
i.course_start_date AS course_start_date, i.course_start_time AS course_start_time,
i.course_end_date AS course_end_date, i.course_end_time AS course_end_time,
u.fullname AS user_name, u.designation AS user_designation, u.state AS user_state, u.service_group AS user_service_group,
i.course_location
FROM course_participation p2
INNER JOIN course_info i ON p2.participation_course_id=i.course_id
INNER JOIN frontend_user u ON p2.participation_user_id=u.id
INNER JOIN form_submit f ON f.data_id=p2.participation_id AND f.form_id=1 AND f.table_related='course_participation'
WHERE
i.course_status = 'done' AND
p2.participation_course_type='course_info' AND
p2.participation_status='participate_complete' AND
p2.participation_user_status='user_confirm' AND
p2.participation_supervisor_status='supervisor_support' AND
p2.participation_coordinator_status='coordinator_support'
UNION
SELECT
frontend_user.id AS participation_user_id,
'interaktif' AS course_category,
learning_main.learning_title AS course_title,
'interaktif' AS course_type,
DATE(learning_enroll.enroll_start) AS course_start_date,
TIME(learning_enroll.enroll_start) AS course_start_time,
DATE_FORMAT(ADDTIME(learning_enroll.enroll_start, CONCAT(learning_main.learning_time,':0:0')), '%Y-%m-%d') AS course_end_date,
TIME_FORMAT(ADDTIME(learning_enroll.enroll_start, CONCAT(learning_main.learning_time,':0:0')), '%H:%i:%s') AS course_end_time,
frontend_user.fullname AS user_name,
frontend_user.designation AS user_designation,
frontend_user.state AS user_state,
frontend_user.service_group AS user_service_group,
'Pembelajaran Interaktif MyLatihan' AS course_location
FROM
learning_enroll INNER JOIN
learning_main ON learning_enroll.learning_main=learning_main.learning_id INNER JOIN
frontend_user ON frontend_user.id=learning_enroll.frontend_user_id
WHERE
learning_enroll.enroll_progress=100 AND
learning_enroll.enroll_certificate IS NOT NULL
) t1 " . $query_ext . " ORDER BY user_name,course_start_date ASC";
$dataProvider = new SqlDataProvider(['sql' => $query, 'pagination' => ['pageSize' => false],]);
if (!empty($dataProvider->models)) {
foreach ($dataProvider->models as $row) {
$count++;
$course_user_hour = "";
$start_course = $row['course_start_date'] . ' ' . $row['course_start_time'];
$end_course = $row['course_end_date'] . ' ' . $row['course_end_time'];
if ($row['course_category'] == 'interaktif') {
$date1 = new \DateTime($start_course);
$date2 = $date1->diff(new \DateTime($end_course));
$course_user_hour = $date2->h . ' jam ';
} else {
if ($row['course_start_date'] != $row['course_end_date']) {
$datediff = strtotime($row['course_end_date']) - strtotime($row['course_start_date']);
$datediff2 = round($datediff / (60 * 60 * 24)) + 1;
$course_user_hour = $datediff2 . ' hari';
} else {
$date1 = new \DateTime($start_course);
$date2 = $date1->diff(new \DateTime($end_course));
$course_user_hour = $date2->h . ' jam ';
}
}
$course_organizer = '';
if ($row['course_category'] == 'takwim')
$course_organizer = 'JPPM';
else
$course_organizer = 'Lain-Lain';
$course_list .= '<tr>
<td>' . $count . '</td>
<td>' . $row['course_title'] . '</td>
<td>' . $course_organizer . '</td>
<td>' . $row['course_location'] . '</td>
<td>' . date("d/m/Y", strtotime($row['course_start_date'])) . '</td>
<td>' . date("d/m/Y", strtotime($row['course_end_date'])) . '</td>
<td>' . $course_user_hour . '</td>
</tr>';
}
} else {
$course_list = '<tr><td colspan="7">Tiada rekod</td></tr>';
}
$content = '
<div style="text-align:center;line-height:1.5em;">
<h4 style="color:#ff9000;text-shadow: 1px 1px gray;"><b>SENARAI KURSUS YANG TELAH DIHADIRI SEPANJANG TAHUN ' . $course_year . '</b></h4>
<h4 style="color:#008962;text-shadow: 1px 1px gray;"><b>DI JABATAN PENDAFTARAN PERTUBUHAN MALAYSIA</b></h4>
<br>
<p>Nama : <b>' . $user_name . '</b></p>
<p>No. MyKad : <b>' . $user_ic . '</b></p>
<p>Bahagian / JPPM Negeri : <b>' . $user_state . '</b></p>
<p>Unit / Cawangan / Seksyen : <b>' . $user_branch . '</b></p>
</div><br>
<table class="table table-report">
<thead>
<tr>
<th >Bil</th>
<th>Nama Kursus</th>
<th>Anjuran</th>
<th>Tempat</th>
<th>Tarikh Mula</th>
<th>Tarikh Akhir</th>
<th>Tempoh</th>
</tr>
</thead>
<tbody>' . $course_list . '</tbody>
<tfoot>
<tr>
<th colspan="6" style="text-align:right;">Jumlah</th>
<th>' . $total_user_day . ' hari</th>
</tr>
</tfoot>
</table>
<div style="text-align:center;line-height:1.5em;">
<p>Bilangan hari berkursus bagi tahun ' . $course_year . ' adalah ' . $total_user_day . ' hari</p>
' . $message . '
</div>';
$pdf = new Pdf([
'mode' => Pdf::MODE_BLANK,
'filename' => 'Laporan Individu.pdf',
'format' => Pdf::FORMAT_A4,
'orientation' => Pdf::ORIENT_LANDSCAPE,
'destination' => Pdf::DEST_DOWNLOAD,
'content' => $content,
'cssInline' => '.table-report thead tr th{background-color:#008962;color:white;border-bottom:3px solid #fd910b;}
.table-report tbody tr:nth-child(even) td{background-color:rgba(0,137,98,0.1);border:0;padding:1em 0.5em;}
.table-report tbody tr:nth-child(odd) td{background-color:rgba(252,143,0,0.1);border:0;padding:1em 0.5em;}
.table-report tfoot tr th{background-color:#008962;color:white;border-top:3px solid #fd910b;} ',
]);
return $pdf->render();
}
public function actionUserparticipation($user_id = '', $state_id = '', $course_year = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', strtoupper('Nama Pengguna'));
$sheet->setCellValue('B1', strtoupper('Jawatan'));
$sheet->setCellValue('C1', strtoupper('Bahagian / JPPM Negeri'));
$sheet->setCellValue('D1', strtoupper('Kumpulan Perkhidmatan'));
$sheet->setCellValue('E1', strtoupper('Tajuk Kursus'));
$sheet->setCellValue('F1', strtoupper('Jenis Kursus'));
$sheet->setCellValue('G1', strtoupper('Jenis Permohonan'));
$sheet->setCellValue('H1', strtoupper('Tarikh Mula Kursus'));
$sheet->setCellValue('I1', strtoupper('Masa Mula Kursus'));
$sheet->setCellValue('J1', strtoupper('Tarikh Akhir Kursus'));
$sheet->setCellValue('K1', strtoupper('Masa Akhir Kursus'));
$sheet->setCellValue('L1', strtoupper('Tempoh Kursus'));
$count = 1;
$query_ext = "";
$query_ext_arr = [];
if ($user_id != "")
$query_ext_arr[] = "participation_user_id='$user_id'";
if ($state_id != "")
$query_ext_arr[] = "user_state='$state_id'";
if ($course_year != "")
$query_ext_arr[] = "YEAR(course_start_date)='$course_year'";
if (!empty($query_ext_arr))
$query_ext = ' WHERE ' . implode(' AND ', $query_ext_arr);
//print_r($query_ext_arr);
$query = "SELECT * FROM (
SELECT p.participation_user_id,
'merekod' AS course_category, r.record_course_name AS course_title, r.record_type AS course_type,
r.record_start_date AS course_start_date, r.record_start_time AS course_start_time,
r.record_end_date AS course_end_date, r.record_end_time AS course_end_time,
u.fullname AS user_name, u.designation AS user_designation, u.state AS user_state, u.service_group AS user_service_group
FROM course_participation p
INNER JOIN course_record r ON p.participation_course_id=r.record_id
INNER JOIN frontend_user u ON p.participation_user_id=u.id
WHERE
p.participation_status='participate_complete' AND
p.participation_supervisor_status='supervisor_approve' AND
p.participation_course_type='course_record'
UNION
SELECT p2.participation_user_id,
'takwim' AS course_category, i.course_title AS course_title, i.course_type AS course_type,
i.course_start_date AS course_start_date, i.course_start_time AS course_start_time,
i.course_end_date AS course_end_date, i.course_end_time AS course_end_time,
u.fullname AS user_name, u.designation AS user_designation, u.state AS user_state, u.service_group AS user_service_group
FROM course_participation p2
INNER JOIN course_info i ON p2.participation_course_id=i.course_id
INNER JOIN frontend_user u ON p2.participation_user_id=u.id
INNER JOIN form_submit f ON f.data_id=p2.participation_id AND f.form_id=1 AND f.table_related='course_participation'
WHERE
i.course_status = 'done' AND
p2.participation_course_type='course_info' AND
p2.participation_status='participate_complete' AND
p2.participation_user_status='user_confirm' AND
p2.participation_supervisor_status='supervisor_support' AND
p2.participation_coordinator_status='coordinator_support'
) t1 " . $query_ext . " ORDER BY user_name,course_start_date ASC";
$dataProvider = new SqlDataProvider(['sql' => $query, 'pagination' => ['pageSize' => false],]);
foreach ($dataProvider->models as $row) {
$count++;
$course_type = '';
if ($row['course_category'] == 'takwim')
$course_type = strtoupper(\backend\modules\refdynawebv2\models\Ref::getDesc('COURSE_TYPE', $row['course_type'], 'descr'));
if ($row['course_category'] == 'merekod')
$course_type = strtoupper(\backend\modules\refdynawebv2\models\Ref::getDesc('COURSE_RECORD', $row['course_type'], 'descr'));
$course_user_hour = "";
$start_course = $row['course_start_date'] . ' ' . $row['course_start_time'];
$end_course = $row['course_end_date'] . ' ' . $row['course_end_time'];
$date1 = new \DateTime($start_course);
$date2 = $date1->diff(new \DateTime($end_course));
if ($row['course_start_date'] != $row['course_end_date'])
$course_user_hour = ($date2->d + 1) . ' HARI ';
else
$course_user_hour = $date2->h . ' JAM ';
$sheet->setCellValue('A' . $count, strtoupper($row['user_name']));
$sheet->setCellValue('B' . $count, strtoupper($row['user_designation']));
$sheet->setCellValue('C' . $count, strtoupper(\backend\modules\refdynawebv2\models\Ref::getDesc('STATE', $row['user_state'], 'descr')));
$sheet->setCellValue('D' . $count, strtoupper(\backend\modules\refdynawebv2\models\Ref::getDesc('SERVICE_GROUP', $row['user_service_group'], 'descr')));
$sheet->setCellValue('E' . $count, strtoupper($row['course_title']));
$sheet->setCellValue('F' . $count, $course_type);
$sheet->setCellValue('G' . $count, strtoupper($row['course_category']));
$sheet->setCellValue('H' . $count, strtoupper(date("j M Y", strtotime($row['course_start_date']))));
$sheet->setCellValue('I' . $count, strtoupper(date("h:i A", strtotime($row['course_start_time']))));
$sheet->setCellValue('J' . $count, strtoupper(date("j M Y", strtotime($row['course_end_date']))));
$sheet->setCellValue('K' . $count, strtoupper(date("h:i A", strtotime($row['course_end_time']))));
$sheet->setCellValue('L' . $count, $course_user_hour);
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Laporan Permohonan Kursus.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
public function actionSupervisorevaluation($course_id = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$questionArr = [];
$alphabetArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ',];
$modelQuestion = \backend\modules\formTemplate\models\FormItem::find()
->innerJoin('form_category', 'form_item.category_id=form_category.category_id')
->where(['=', 'form_category.form_id', 3])
->orderBy(['form_category.category_sort' => SORT_ASC, 'form_item.item_sort' => SORT_ASC])
->all();
if (!empty($modelQuestion)) {
foreach ($modelQuestion as $rowQuestion) {
$category_name = '';
$modelCategory = \backend\modules\formTemplate\models\FormCategory::findOne($rowQuestion->category_id);
if (!empty($modelCategory))
$category_name = $modelCategory->category_name;
$arr = [
'category_id' => $rowQuestion->category_id,
'category_name' => $category_name,
'item_id' => $rowQuestion->item_id,
'item_name' => $rowQuestion->item_name,
'item_name2' => $rowQuestion->item_name2
];
$questionArr[] = $arr;
}
}
$sheet->setCellValue('A1', 'Tajuk Kursus');
$sheet->setCellValue('B1', 'Nama Pengguna');
$countAlphabet = 1;
if (!empty($questionArr)) {
foreach ($questionArr as $questionDetail) {
$countAlphabet++;
$questionTitle = $questionDetail['category_name'] . ' : ' . $questionDetail['item_name'] . ' - ' . $questionDetail['item_name2'];
$sheet->setCellValue($alphabetArr[$countAlphabet] . '1', $questionTitle);
}
}
$evaluationArr = ArrayHelper::map(\backend\modules\formTemplate\models\FormSubmit::find()
->innerJoin('course_participation', 'course_participation.participation_id=form_submit.data_id')
->where(['=', 'course_participation.participation_course_id', $course_id])
->andwhere(['=', 'form_submit.form_id', '3'])
->andwhere(['=', 'form_submit.table_related', 'course_participation'])
->all(), 'submit_id', 'data_id');
$countRow = 1;
if (!empty($evaluationArr)) {
foreach ($evaluationArr as $submit_id => $participation_id) {
$countRow++;
$course_title = '';
$user_name = '';
$sqlInfo = "SELECT i.course_title, u.fullname AS user_name FROM course_participation p
INNER JOIN course_info i ON i.course_id=p.participation_course_id
INNER JOIN frontend_user u ON u.id=p.participation_user_id
WHERE p.participation_id=" . $participation_id;
$modelInfo = Yii::$app->db->createCommand($sqlInfo)->queryAll();
if (!empty($modelInfo)) {
foreach ($modelInfo as $rowInfo) {
$course_title = $rowInfo['course_title'];
$user_name = $rowInfo['user_name'];
}
}
$sheet->setCellValue('A' . $countRow, $course_title);
$sheet->setCellValue('B' . $countRow, $user_name);
$countAlphabet = 1;
if (!empty($questionArr)) {
foreach ($questionArr as $questionDetail) {
$countAlphabet++;
$userAnswer = '';
$modelSubmit = \backend\modules\formTemplate\models\FormSubmit::findOne($submit_id);
if (!empty($modelSubmit)) {
$form_data_arr = json_decode($modelSubmit->form_data, true);
if (!empty($form_data_arr)) {
foreach ($form_data_arr as $submitted_form_data) {
$item_list = $submitted_form_data['item_list'];
if (!empty($item_list)) {
foreach ($item_list as $item_data) {
if ($item_data['item_id'] == $questionDetail['item_id'])
$userAnswer = $item_data['user_answer'];
}
}
}
}
}
$cellNo = $alphabetArr[$countAlphabet] . $countRow;
$sheet->setCellValue($cellNo, $userAnswer);
}
}
}
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Laporan Keberkesanan Kursus (Penyelia).xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
public function actionUserevaluation($course_id = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$questionArr = [];
$alphabetArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ',];
$modelQuestion = \backend\modules\formTemplate\models\FormItem::find()
->innerJoin('form_category', 'form_item.category_id=form_category.category_id')
->where(['=', 'form_category.form_id', 4])
->orderBy(['form_category.category_sort' => SORT_ASC, 'form_item.item_sort' => SORT_ASC])
->all();
if (!empty($modelQuestion)) {
foreach ($modelQuestion as $rowQuestion) {
$category_name = '';
$modelCategory = \backend\modules\formTemplate\models\FormCategory::findOne($rowQuestion->category_id);
if (!empty($modelCategory))
$category_name = $modelCategory->category_name;
$arr = [
'category_id' => $rowQuestion->category_id,
'category_name' => $category_name,
'item_id' => $rowQuestion->item_id,
'item_name' => $rowQuestion->item_name,
'item_name2' => $rowQuestion->item_name2
];
$questionArr[] = $arr;
}
}
$sheet->setCellValue('A1', 'Tajuk Kursus');
$sheet->setCellValue('B1', 'Nama Pengguna');
$countAlphabet = 1;
if (!empty($questionArr)) {
foreach ($questionArr as $questionDetail) {
$countAlphabet++;
$questionTitle = $questionDetail['category_name'] . ' : ' . $questionDetail['item_name'] . ' - ' . $questionDetail['item_name2'];
$sheet->setCellValue($alphabetArr[$countAlphabet] . '1', $questionTitle);
}
}
$evaluationArr = ArrayHelper::map(\backend\modules\formTemplate\models\FormSubmit::find()
->innerJoin('course_participation', 'course_participation.participation_id=form_submit.data_id')
->where(['=', 'course_participation.participation_course_id', $course_id])
->andwhere(['=', 'form_submit.form_id', '4'])
->andwhere(['=', 'form_submit.table_related', 'course_participation'])
->all(), 'submit_id', 'data_id');
$countRow = 1;
if (!empty($evaluationArr)) {
foreach ($evaluationArr as $submit_id => $participation_id) {
$countRow++;
$course_title = '';
$user_name = '';
$sqlInfo = "SELECT i.course_title, u.fullname AS user_name FROM course_participation p
INNER JOIN course_info i ON i.course_id=p.participation_course_id
INNER JOIN frontend_user u ON u.id=p.participation_user_id
WHERE p.participation_id=" . $participation_id;
$modelInfo = Yii::$app->db->createCommand($sqlInfo)->queryAll();
if (!empty($modelInfo)) {
foreach ($modelInfo as $rowInfo) {
$course_title = $rowInfo['course_title'];
$user_name = $rowInfo['user_name'];
}
}
$sheet->setCellValue('A' . $countRow, $course_title);
$sheet->setCellValue('B' . $countRow, $user_name);
$countAlphabet = 1;
if (!empty($questionArr)) {
foreach ($questionArr as $questionDetail) {
$countAlphabet++;
$userAnswer = '';
$modelSubmit = \backend\modules\formTemplate\models\FormSubmit::findOne($submit_id);
if (!empty($modelSubmit)) {
$form_data_arr = json_decode($modelSubmit->form_data, true);
if (!empty($form_data_arr)) {
foreach ($form_data_arr as $submitted_form_data) {
$item_list = $submitted_form_data['item_list'];
if (!empty($item_list)) {
foreach ($item_list as $item_data) {
if ($item_data['item_id'] == $questionDetail['item_id'])
$userAnswer = $item_data['user_answer'];
}
}
}
}
}
$cellNo = $alphabetArr[$countAlphabet] . $countRow;
$sheet->setCellValue($cellNo, $userAnswer);
}
}
}
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Laporan Keberkesanan Kursus (Pengguna).xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
public function actionCourseevaluation($course_id = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$questionArr = [];
$alphabetArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ'];
$modelQuestion = \backend\modules\formTemplate\models\FormItem::find()
->innerJoin('form_category', 'form_item.category_id=form_category.category_id')
->where(['=', 'form_category.form_id', 1])
->where(['=', 'form_category.category_id', 1])
->orderBy(['form_category.category_sort' => SORT_ASC, 'form_item.item_sort' => SORT_ASC])
->all();
if (!empty($modelQuestion)) {
foreach ($modelQuestion as $rowQuestion) {
$category_name = '';
$modelCategory = \backend\modules\formTemplate\models\FormCategory::findOne($rowQuestion->category_id);
if (!empty($modelCategory))
$category_name = $modelCategory->category_name;
$arr = [
'category_id' => $rowQuestion->category_id,
'category_name' => $category_name,
'item_id' => $rowQuestion->item_id,
'item_name' => $rowQuestion->item_name,
'item_name2' => $rowQuestion->item_name2,
'speaker_name' => '',
];
$questionArr[] = $arr;
}
}
$speaker_arr = [];
$query = "SELECT * FROM course_info WHERE course_id=" . $course_id;
$modelCourse = Yii::$app->db->createCommand($query)->queryAll();
if (!empty($modelCourse)) {
foreach ($modelCourse as $rowCourse) {
$speaker_arr = json_decode($rowCourse['course_speaker']);
}
}
if (!empty($speaker_arr)) {
foreach ($speaker_arr as $speaker_name) {
$modelQuestion = \backend\modules\formTemplate\models\FormItem::find()
->innerJoin('form_category', 'form_item.category_id=form_category.category_id')
->where(['=', 'form_category.form_id', 1])
->where(['=', 'form_category.category_id', 2])
->orderBy(['form_category.category_sort' => SORT_ASC, 'form_item.item_sort' => SORT_ASC])
->all();
if (!empty($modelQuestion)) {
foreach ($modelQuestion as $rowQuestion) {
$category_name = '';
$modelCategory = \backend\modules\formTemplate\models\FormCategory::findOne($rowQuestion->category_id);
if (!empty($modelCategory))
$category_name = $modelCategory->category_name;
$arr = [
'category_id' => $rowQuestion->category_id,
'category_name' => $category_name,
'item_id' => $rowQuestion->item_id,
'item_name' => $rowQuestion->item_name,
'item_name2' => $rowQuestion->item_name2,
'speaker_name' => $speaker_name,
];
$questionArr[] = $arr;
}
}
}
}
$sheet->setCellValue('A1', 'Tajuk Kursus');
$sheet->setCellValue('B1', 'Nama Pengguna');
$countAlphabet = 1;
if (!empty($questionArr)) {
foreach ($questionArr as $questionDetail) {
$countAlphabet++;
//$questionTitle = $questionDetail['category_name'] . ' : ' . $questionDetail['item_name'] . ' - ' . $questionDetail['speaker_name'];
$sheet->setCellValue($alphabetArr[$countAlphabet] . '1', $questionDetail['category_name']);
$sheet->setCellValue($alphabetArr[$countAlphabet] . '2', $questionDetail['item_name']);
$sheet->setCellValue($alphabetArr[$countAlphabet] . '3', $questionDetail['speaker_name']);
}
}
$evaluationArr = ArrayHelper::map(\backend\modules\formTemplate\models\FormSubmit::find()
->innerJoin('course_participation', 'course_participation.participation_id=form_submit.data_id')
->where(['=', 'course_participation.participation_course_id', $course_id])
->andwhere(['=', 'form_submit.form_id', '1'])
->andwhere(['=', 'form_submit.table_related', 'course_participation'])
->all(), 'submit_id', 'data_id');
$countRow = 3;
if (!empty($evaluationArr)) {
foreach ($evaluationArr as $submit_id => $participation_id) {
$countRow++;
$course_title = '';
$user_name = '';
$sqlInfo = "SELECT i.course_title, u.fullname AS user_name FROM course_participation p
INNER JOIN course_info i ON i.course_id=p.participation_course_id
INNER JOIN frontend_user u ON u.id=p.participation_user_id
WHERE p.participation_id=" . $participation_id;
$modelInfo = Yii::$app->db->createCommand($sqlInfo)->queryAll();
if (!empty($modelInfo)) {
foreach ($modelInfo as $rowInfo) {
$course_title = $rowInfo['course_title'];
$user_name = $rowInfo['user_name'];
}
}
$sheet->setCellValue('A' . $countRow, $course_title);
$sheet->setCellValue('B' . $countRow, $user_name);
$countAlphabet = 1;
if (!empty($questionArr)) {
foreach ($questionArr as $questionDetail) {
$countAlphabet++;
$userAnswer = '';
$modelSubmit = \backend\modules\formTemplate\models\FormSubmit::findOne($submit_id);
if (!empty($modelSubmit)) {
$form_data_arr = json_decode($modelSubmit->form_data, true);
if (!empty($form_data_arr)) {
foreach ($form_data_arr as $submitted_form_data) {
$item_list = $submitted_form_data['item_list'];
if (!empty($item_list)) {
foreach ($item_list as $item_data) {
if (!empty($questionDetail['speaker_name'])) {
if ($item_data['item_id'] == $questionDetail['item_id'] && $item_data['speaker_name'] == $questionDetail['speaker_name'])
$userAnswer = $item_data['user_answer'];
} else {
if ($item_data['item_id'] == $questionDetail['item_id'])
$userAnswer = $item_data['user_answer'];
}
}
}
}
}
}
$cellNo = $alphabetArr[$countAlphabet] . $countRow;
$sheet->setCellValue($cellNo, $userAnswer);
}
}
}
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Laporan Penilaian Kursus.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
/* public function actionUserevaluation($course_title = '', $user_name = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$query = "SELECT u.fullname AS user_name, i.course_title,
v.evaluation_knowledge_before, v.evaluation_knowledge_after, v.evaluation_skill_before, v.evaluation_skill_after, v.evaluation_objective, v.evaluation_remarks
FROM course_user_evaluation v
INNER JOIN course_participation p ON p.participation_id=v.evaluation_participation_id
INNER JOIN course_info i ON i.course_id=p.participation_course_id
INNER JOIN frontend_user u ON u.id=p.participation_user_id
WHERE
u.fullname LIKE '%$user_name%' AND
i.course_title LIKE '%$course_title%'
ORDER BY i.course_end_date, i.course_title DESC";
$dataProvider = new SqlDataProvider(['sql' => $query, 'pagination' => ['pageSize' => false],]);
$sheet->setCellValue('A1', 'Tajuk Kursus');
$sheet->setCellValue('B1', 'Nama Pengguna');
$sheet->setCellValue('C1', 'Pengetahuan yang berkaitan dengan kursus ini (%) Sebelum Berkursus');
$sheet->setCellValue('D1', 'Pengetahuan yang berkaitan dengan kursus ini (%) Selepas Berkursus');
$sheet->setCellValue('E1', 'Kemahiran menyelesaikan masalah yang berkaitan dengan kursus yang diikuti (%) Sebelum Berkursus');
$sheet->setCellValue('F1', 'Kemahiran menyelesaikan masalah yang berkaitan dengan kursus yang diikuti (%) Selepas Berkursus');
$sheet->setCellValue('G1', 'Adakah objektif kursus ini tercapai?');
$sheet->setCellValue('H1', 'Ulasan Penyelia');
$count1 = 1;
foreach ($dataProvider->models as $row) {
$count1++;
$sheet->setCellValue('A' . $count1, strtoupper($row['course_title']));
$sheet->setCellValue('B' . $count1, strtoupper($row['user_name']));
$sheet->setCellValue('C' . $count1, strtoupper($row['evaluation_knowledge_before']));
$sheet->setCellValue('D' . $count1, strtoupper($row['evaluation_knowledge_after']));
$sheet->setCellValue('E' . $count1, strtoupper($row['evaluation_skill_before']));
$sheet->setCellValue('F' . $count1, strtoupper($row['evaluation_skill_after']));
$sheet->setCellValue('G' . $count1, strtoupper($row['evaluation_objective']));
$sheet->setCellValue('H' . $count1, strtoupper($row['evaluation_remarks']));
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Laporan Keberkesanan Kursus.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
} */
public function actionExpenses($course_title = '', $course_type = '', $record_year = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$query = "SELECT * FROM (
SELECT e.expenses_course_type, i.course_title AS course_title, DATE (e.created_at) AS date_record,
e.expenses_package_name, e.expenses_accommodation, e.expenses_dobi, e.expenses_meal, e.expenses_consultant,
e.expenses_speaker, e.expenses_others, e.expenses_total, e.expenses_impact_form, e.expenses_remarks
FROM course_expenses e
INNER JOIN course_info i ON i.course_id=e.expenses_course_id
WHERE e.expenses_course_type = 'EXPENSES01'
UNION
SELECT e.expenses_course_type, e.expenses_course_name AS course_title, DATE (e.created_at) AS date_record,
e.expenses_package_name, e.expenses_accommodation, e.expenses_dobi, e.expenses_meal, e.expenses_consultant,
e.expenses_speaker, e.expenses_others, e.expenses_total, e.expenses_impact_form, e.expenses_remarks
FROM course_expenses e
WHERE e.expenses_course_type = 'EXPENSES02'
) t1 WHERE
course_title LIKE '%$course_title%' AND
expenses_course_type LIKE '%$course_type%' AND
YEAR(date_record) LIKE '%$record_year%'
ORDER BY date_record DESC";
$dataProvider = new SqlDataProvider(['sql' => $query, 'pagination' => ['pageSize' => false],]);
$sheet->setCellValue('A1', 'Tarikh Rekod');
$sheet->setCellValue('B1', 'Jenis Kursus');
$sheet->setCellValue('C1', 'Tajuk Kursus');
$sheet->setCellValue('D1', 'Jumlah Kos');
$sheet->setCellValue('E1', 'Nama Pakej');
$sheet->setCellValue('F1', 'Kos Penginapan');
$sheet->setCellValue('G1', 'Kos Dobi');
$sheet->setCellValue('H1', 'Kos Makan');
$sheet->setCellValue('I1', 'Kos Konsultan');
$sheet->setCellValue('J1', 'Kos Penceramah');
$sheet->setCellValue('K1', 'Kos Lain-Lain');
$sheet->setCellValue('L1', 'Borang Impak');
$sheet->setCellValue('M1', 'Catatan');
$count1 = 1;
foreach ($dataProvider->models as $row) {
$count1++;
$sheet->setCellValue('A' . $count1, date("d/m/Y", strtotime($row['date_record'])));
$sheet->setCellValue('B' . $count1, strtoupper(\backend\modules\refdynawebv2\models\Ref::getDesc('EXPENSES_TYPE', $row['expenses_course_type'], 'descr')));
$sheet->setCellValue('C' . $count1, strtoupper($row['course_title']));
$sheet->setCellValue('D' . $count1, $row['expenses_total']);
$sheet->setCellValue('E' . $count1, strtoupper($row['expenses_package_name']));
$sheet->setCellValue('F' . $count1, $row['expenses_accommodation']);
$sheet->setCellValue('G' . $count1, $row['expenses_dobi']);
$sheet->setCellValue('H' . $count1, $row['expenses_meal']);
$sheet->setCellValue('I' . $count1, $row['expenses_consultant']);
$sheet->setCellValue('J' . $count1, $row['expenses_speaker']);
$sheet->setCellValue('K' . $count1, $row['expenses_others']);
$sheet->setCellValue('L' . $count1, strtoupper(\backend\modules\refdynawebv2\models\Ref::getDesc('EXPENSES_FORM', $row['expenses_impact_form'], 'descr')));
$sheet->setCellValue('M' . $count1, strtoupper($row['expenses_remarks']));
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Laporan Perbelanjaan Kursus.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
public function actionCancelapplication($course_title = '', $user_name = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$query = "SELECT u.fullname AS user_name, i.course_title, p.cancel_remarks
FROM course_participation p
INNER JOIN course_info i ON i.course_id=p.participation_course_id
INNER JOIN frontend_user u ON u.id=p.participation_user_id
WHERE
p.participation_user_status = 'user_cancel' AND
p.participation_course_type = 'course_info' AND
i.course_title LIKE '%$course_title%' AND
u.fullname LIKE '%$user_name%'";
$dataProvider = new SqlDataProvider(['sql' => $query, 'pagination' => ['pageSize' => false],]);
$sheet->setCellValue('A1', 'Tajuk Kursus');
$sheet->setCellValue('B1', 'Nama Pengguna');
$sheet->setCellValue('C1', 'Alasan Pembatalan');
$count1 = 1;
foreach ($dataProvider->models as $row) {
$count1++;
$sheet->setCellValue('A' . $count1, strtoupper($row['course_title']));
$sheet->setCellValue('B' . $count1, strtoupper($row['user_name']));
$sheet->setCellValue('C' . $count1, strtoupper($row['cancel_remarks']));
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Laporan Pembatalan Penyertaan.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
public function actionPrintattendancelist($course_id = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$course_name = '';
$course_date = '';
$course_time = '';
$course_location = '';
if (($modelCourse = \backend\modules\courseInfo\models\CourseInfo::findOne($course_id)) !== null) {
$course_name = $modelCourse->course_title;
if ($modelCourse->course_start_date == $modelCourse->course_end_date)
$course_date = date("j M Y", strtotime($modelCourse->course_start_date));
else
$course_date = date("j M Y", strtotime($modelCourse->course_start_date)) . ' hingga ' . date("j M Y", strtotime($modelCourse->course_end_date));
$course_time = date("h:i A", strtotime($modelCourse->course_start_time)) . ' hingga ' . date("h:i A", strtotime($modelCourse->course_end_time));
$course_location = $modelCourse->course_location;
}
$sheet->setCellValue('A1', 'Tajuk Kursus');
$sheet->setCellValue('B1', $course_name);
$sheet->setCellValue('A2', 'Tarikh');
$sheet->setCellValue('B2', $course_date);
$sheet->setCellValue('A3', 'Masa');
$sheet->setCellValue('B3', $course_time);
$sheet->setCellValue('A4', 'Lokasi');
$sheet->setCellValue('B4', $course_location);
$sheet->setCellValue('A5', 'BIL.');
$sheet->setCellValue('B5', 'NAMA');
$sheet->setCellValue('C5', 'NO. K/P');
$sheet->setCellValue('D5', 'BAHAGIAN / JPPM NEGERI');
$count_user = 0;
$count_row = 5;
$model2 = \backend\modules\courseParticipation\models\CourseParticipation::find()->innerJoin('frontend_user', 'course_participation.participation_user_id=frontend_user.id')
->where(['=', 'participation_course_type', 'course_info'])
->andwhere(['=', 'participation_course_id', $course_id])
->andwhere(['=', 'participation_user_status', 'user_confirm'])
->andwhere(['=', 'participation_supervisor_status', 'supervisor_support'])
->andwhere(['=', 'participation_coordinator_status', 'coordinator_support'])
->orderBy(['frontend_user.fullname' => SORT_ASC])
->all();
if (!empty($model2)) {
foreach ($model2 as $row2) {
$count_user++;
$count_row++;
$sheet->setCellValue('A' . $count_row, $count_user);
$sheet->setCellValue('B' . $count_row, \backend\modules\fruserdynav2\models\FrontendUser::getname($row2->participation_user_id));
$sheet->setCellValue('C' . $count_row, \backend\modules\fruserdynav2\models\FrontendUser::geticno($row2->participation_user_id));
$sheet->setCellValue('D' . $count_row, \backend\modules\fruserdynav2\models\FrontendUser::getstate($row2->participation_user_id));
}
}
$spreadsheet->getActiveSheet()->getStyle('A5:D5')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('f3eff4');
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Senarai Kehadiran Peserta.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
public function actionPrintattendancelist2($course_id = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$course_name = '';
$course_date = '';
$course_time = '';
$course_location = '';
if (($modelCourse = \backend\modules\courseInfo\models\CourseInfo::findOne($course_id)) !== null) {
$course_name = $modelCourse->course_title;
if ($modelCourse->course_start_date == $modelCourse->course_end_date)
$course_date = date("j M Y", strtotime($modelCourse->course_start_date));
else
$course_date = date("j M Y", strtotime($modelCourse->course_start_date)) . ' hingga ' . date("j M Y", strtotime($modelCourse->course_end_date));
$course_time = date("h:i A", strtotime($modelCourse->course_start_time)) . ' hingga ' . date("h:i A", strtotime($modelCourse->course_end_time));
$course_location = $modelCourse->course_location;
}
$sheet->setCellValue('A1', 'Tajuk Kursus');
$sheet->setCellValue('B1', $course_name);
$sheet->setCellValue('A2', 'Tarikh');
$sheet->setCellValue('B2', $course_date);
$sheet->setCellValue('A3', 'Masa');
$sheet->setCellValue('B3', $course_time);
$sheet->setCellValue('A4', 'Lokasi');
$sheet->setCellValue('B4', $course_location);
$sheet->setCellValue('A5', 'BIL.');
$sheet->setCellValue('B5', 'NAMA');
$sheet->setCellValue('C5', 'NO. K/P');
$sheet->setCellValue('D5', 'BAHAGIAN / JPPM NEGERI');
$count_user = 0;
$count_row = 5;
$model2 = \backend\modules\courseParticipation\models\CourseParticipation::find()->innerJoin('frontend_user', 'course_participation.participation_user_id=frontend_user.id')
->where(['=', 'participation_course_type', 'course_info'])
->andwhere(['=', 'participation_course_id', $course_id])
->andwhere(['=', 'participation_user_status', 'user_confirm'])
->andwhere(['=', 'participation_supervisor_status', 'supervisor_support'])
->andwhere(['=', 'participation_coordinator_status', 'coordinator_support'])
->andwhere(['=','attendance','1'])
->orderBy(['frontend_user.fullname' => SORT_ASC])
->all();
if (!empty($model2)) {
foreach ($model2 as $row2) {
$count_user++;
$count_row++;
$sheet->setCellValue('A' . $count_row, $count_user);
$sheet->setCellValue('B' . $count_row, \backend\modules\fruserdynav2\models\FrontendUser::getname($row2->participation_user_id));
$sheet->setCellValue('C' . $count_row, \backend\modules\fruserdynav2\models\FrontendUser::geticno($row2->participation_user_id));
$sheet->setCellValue('D' . $count_row, \backend\modules\fruserdynav2\models\FrontendUser::getstate($row2->participation_user_id));
}
}
$spreadsheet->getActiveSheet()->getStyle('A5:D5')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('f3eff4');
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Senarai Kehadiran Peserta.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
public function actionTraininganalysis($search_start_date = '', $search_end_date = '') {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'NAMA PENGGUNA');
$sheet->setCellValue('B1', 'BIDANG');
$sheet->setCellValue('C1', 'CADANGAN KURSUS');
$sheet->setCellValue('D1', 'JENIS KOMPTENSI');
$sheet->setCellValue('E1', 'TAHAP KEPERLUAN KURSUS');
$sheet->setCellValue('F1', 'TARIKH HANTAR');
$count_row = 1;
$query = \backend\modules\trainingAnalysis\models\TrainingAnalysis::find();
if (!empty($search_start_date) && !empty($search_end_date)) {
$query->andfilterwhere(['BETWEEN', 'DATE(created_at)', $search_start_date, $search_end_date]);
}
$query->orderBy(['created_at' => SORT_DESC]);
$model = $query->all();
if (!empty($model)) {
foreach ($model as $row) {
$count_row++;
$sheet->setCellValue('A' . $count_row, \backend\modules\fruserdynav2\models\FrontendUser::getname($row->created_by));
$sheet->setCellValue('B' . $count_row, \backend\modules\refdynawebv2\models\Ref::getDesc('ANALYSIS_AREA', $row->analysis_area, 'descr'));
$sheet->setCellValue('C' . $count_row, $row->analysis_course_name);
$sheet->setCellValue('D' . $count_row, \backend\modules\refdynawebv2\models\Ref::getDesc('ANALYSIS_COMPETENCE', $row->analysis_competence, 'descr'));
$sheet->setCellValue('E' . $count_row, \backend\modules\refdynawebv2\models\Ref::getDesc('ANALYSIS_STAGE', $row->analysis_stage, 'descr'));
$sheet->setCellValue('F' . $count_row, date("d-m-Y", strtotime($row->created_at)));
}
}
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('d2f8d2');
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Analisa Latihan.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();
}
}