Senarai Maklum Balas Awam
{source}<?php
use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
defined('_JEXEC') or die;
$app = Factory::getApplication();
$db = Factory::getDbo();
/* =====================================================
HANDLE BUTTON SELESAI
===================================================== */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submission_id'])) {
$submissionId = (int) $_POST['submission_id'];
$ulasanAdmin = $_POST['ulasan_admin'] ?? '';
// Ambil tarikh submit
$query = $db->getQuery(true)

->select('DateSubmitted')

->from('mufti5_rsform_submissions')

->where('SubmissionId=' . $submissionId);
$db->setQuery($query);
$dateSubmitted = $db->loadResult();
// Ambil semua field RSForm
$query = $db->getQuery(true)

->select('FieldName, FieldValue')

->from('mufti5_rsform_submission_values')

->where('SubmissionId=' . $submissionId);
$db->setQuery($query);
$values = $db->loadAssocList('FieldName', 'FieldValue');
if ($values) {

// Insert ke table selesai

$query = $db->getQuery(true)


->insert('mufti5_rsform_selesai')


->columns([



'Date_Submitted',



'Tajuk',



'Nama_Penuh',



'Email',



'No_Tel_Bimbit',



'Kategori',



'Aduan_dan_Maklumbalas',



'Ulasan_Admin',



'Tindakan'


])


->values(



$db->quote($dateSubmitted) . ',' .



$db->quote($values['Tajuk'] ?? '') . ',' .



$db->quote($values['Nama_Penuh'] ?? '') . ',' .



$db->quote($values['Email'] ?? '') . ',' .



$db->quote($values['No_Tel_Bimbit'] ?? '') . ',' .



$db->quote($values['Kategori'] ?? '') . ',' .



$db->quote($values['Aduan_dan_Maklumbalas'] ?? '') . ',' .



$db->quote($ulasanAdmin) . ',' .



$db->quote('Selesai')


);

$db->setQuery($query)->execute();

// Padam submission asal

$db->setQuery(


$db->getQuery(true)



->delete('mufti5_rsform_submissions')



->where('SubmissionId=' . $submissionId)

)->execute();

$db->setQuery(


$db->getQuery(true)



->delete('mufti5_rsform_submission_values')



->where('SubmissionId=' . $submissionId)

)->execute();
}
$app->redirect(Uri::getInstance());
}
/* =====================================================
DATA DASHBOARD
===================================================== */
// Count ikut kategori
$db->setQuery("
SELECT sv.FieldValue AS Kategori, COUNT(*) AS total
FROM mufti5_rsform_submission_values sv
WHERE sv.FieldName='Kategori'
GROUP BY sv.FieldValue
");
$counts = $db->loadAssocList('Kategori', 'total');
// Count selesai
$db->setQuery("SELECT COUNT(*) FROM mufti5_rsform_selesai");
$selesaiCount = (int) $db->loadResult();
// Ambil submission aktif
$db->setQuery("
SELECT s.SubmissionId, s.DateSubmitted,


MAX(CASE WHEN v.FieldName='Tajuk' THEN v.FieldValue END) AS Tajuk,


MAX(CASE WHEN v.FieldName='Nama_Penuh' THEN v.FieldValue END) AS Nama_Penuh,


MAX(CASE WHEN v.FieldName='Email' THEN v.FieldValue END) AS Email,


MAX(CASE WHEN v.FieldName='No_Tel_Bimbit' THEN v.FieldValue END) AS No_Tel_Bimbit,


MAX(CASE WHEN v.FieldName='Kategori' THEN v.FieldValue END) AS Kategori,


MAX(CASE WHEN v.FieldName='Aduan_dan_Maklumbalas' THEN v.FieldValue END) AS Aduan_dan_Maklumbalas
FROM mufti5_rsform_submissions s
JOIN mufti5_rsform_submission_values v ON s.SubmissionId=v.SubmissionId
GROUP BY s.SubmissionId
ORDER BY s.SubmissionId DESC
");
$rows = $db->loadObjectList();
// Ambil selesai
$db->setQuery("SELECT * FROM mufti5_rsform_selesai ORDER BY ID DESC");
$rowsSelesai = $db->loadObjectList();
?>
<!-- ================= DASHBOARD ================= -->
<div class="uk-grid-small uk-child-width-1-3@m" uk-grid>
<?php foreach (['Maklumbalas','Cadangan'] as $k): ?>
<div>

<div class="uk-card uk-card-secondary uk-card-body uk-text-center card" data-kat="<?= $k ?>">


<h3><?= $k ?></h3>


<p class="count"><?= $counts[$k] ?? 0 ?></p>

</div>
</div>
<?php endforeach; ?>
<div>

<div class="uk-card uk-card-secondary uk-card-body uk-text-center card" data-kat="Selesai">


<h3>Selesai</h3>


<p class="count"><?= $selesaiCount ?></p>

</div>
</div>
</div>
<h3 id="details" style="margin-top:30px;color:#000;">Senarai</h3>
<table class="uk-table uk-table-divider uk-table-small table-maklumbalas" id="table" style="display:none">
<thead>

<tr>


<th>No</th>


<th>Tarikh</th>


<th>Tajuk</th>


<th>Nama</th>


<th>Email</th>


<th>No Tel</th>


<th>Aduan / Maklumbalas</th>


<th>Tindakan</th>

</tr>
</thead>
<tbody>
<?php $no=1; foreach ($rows as $r): ?>

<tr data-kat="<?= $r->Kategori ?>">


<td><?= $no++ ?></td>


<td><?= $r->DateSubmitted ?></td>


<td><?= htmlspecialchars($r->Tajuk) ?></td>


<td><?= htmlspecialchars($r->Nama_Penuh) ?></td>


<td><?= htmlspecialchars($r->Email) ?></td>


<td><?= htmlspecialchars($r->No_Tel_Bimbit) ?></td>


<td><?= nl2br(htmlspecialchars($r->Aduan_dan_Maklumbalas)) ?></td>


<td>



<form method="post" style="display:inline">




<input type="hidden" name="submission_id" value="<?= $r->SubmissionId ?>">




<textarea name="ulasan_admin"





class="uk-textarea"





rows="2"





placeholder="Ulasan admin (optional)"





style="margin-bottom:6px;"></textarea>




<button class="uk-button uk-button-primary uk-button-small"





onclick="return confirm('Sahkan aduan ini selesai?')">





Selesai




</button>



</form>


</td>

</tr>
<?php endforeach; ?>
<?php foreach ($rowsSelesai as $r): ?>

<tr data-kat="Selesai">


<td><?= $no++ ?></td>


<td><?= $r->Date_Submitted ?></td>


<td><?= htmlspecialchars($r->Tajuk) ?></td>


<td><?= htmlspecialchars($r->Nama_Penuh) ?></td>


<td><?= htmlspecialchars($r->Email) ?></td>


<td><?= htmlspecialchars($r->No_Tel_Bimbit) ?></td>


<td><?= nl2br(htmlspecialchars($r->Aduan_dan_Maklumbalas)) ?></td>


<td>



<strong><?= $r->Tindakan ?></strong><br>



<small>




<strong>Ulasan :</strong><br>




<?= nl2br(htmlspecialchars($r->Ulasan_Admin)) ?>



</small>


</td>

</tr>
<?php endforeach; ?>
</tbody>
</table>
<style>
.card { cursor:pointer }
.count { font-size:28px;font-weight:bold }
.table-maklumbalas thead { background:#222;color:#fff }
</style>
<script>
document.querySelectorAll('.card').forEach(card=>{
card.onclick = ()=>{

let k = card.dataset.kat;

document.getElementById('details').innerText = 'Senarai ' + k;

document.getElementById('table').style.display = 'table';

document.querySelectorAll('#table tbody tr').forEach(row=>{


row.style.display = (row.dataset.kat === k) ? 'table-row' : 'none';

});

location.href = '#details';
}
});
</script>
<!-- ================= LOGOUT BUTTON ================= -->
<div style="margin-top:30px; text-align:center;">
<form action="<?= Route::_('index.php?option=com_users&task=user.logout'); ?>" method="post">
<input type="hidden" name="<?= Session::getFormToken(); ?>" value="1" />
<button type="submit" class="btn btn-danger">Log Out</button>
</form>
</div>{/source}
use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
defined('_JEXEC') or die;
$app = Factory::getApplication();
$db = Factory::getDbo();
/* =====================================================
HANDLE BUTTON SELESAI
===================================================== */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submission_id'])) {
}
/* =====================================================
DATA DASHBOARD
===================================================== */
// Count ikut kategori
$db->setQuery("
");
$counts = $db->loadAssocList('Kategori', 'total');
// Count selesai
$db->setQuery("SELECT COUNT(*) FROM mufti5_rsform_selesai");
$selesaiCount = (int) $db->loadResult();
// Ambil submission aktif
$db->setQuery("
");
$rows = $db->loadObjectList();
// Ambil selesai
$db->setQuery("SELECT * FROM mufti5_rsform_selesai ORDER BY ID DESC");
$rowsSelesai = $db->loadObjectList();
?>
<!-- ================= DASHBOARD ================= -->
<div class="uk-grid-small uk-child-width-1-3@m" uk-grid>
<?php foreach (['Maklumbalas','Cadangan'] as $k): ?>
<?php endforeach; ?>
</div>
<h3 id="details" style="margin-top:30px;color:#000;">Senarai</h3>
<table class="uk-table uk-table-divider uk-table-small table-maklumbalas" id="table" style="display:none">
<?php $no=1; foreach ($rows as $r): ?>
<?php endforeach; ?>
<?php foreach ($rowsSelesai as $r): ?>
<?php endforeach; ?>
</table>
<style>
.card { cursor:pointer }
.count { font-size:28px;font-weight:bold }
.table-maklumbalas thead { background:#222;color:#fff }
</style>
<script>
document.querySelectorAll('.card').forEach(card=>{
});
</script>
<!-- ================= LOGOUT BUTTON ================= -->
<div style="margin-top:30px; text-align:center;">
</form>
</div>{/source}





