1. DistribusiSoalRepository.cs
Ganti konstanta status efektif. Selama ApprovalStatus = 'Pending', status ditampilkan sebagai MenungguApproval:
csharp
private const string EffectiveStatusSql =
"(CASE WHEN a.ApprovalStatus = 'Pending' THEN 'MenungguApproval' " +
"WHEN a.Status = 'Aktif' AND a.TanggalSelesai < GETDATE() THEN 'Selesai' ELSE a.Status END)";
Di GetAgendaList, ubah filter induk agar agenda reschedule yang pending ikut tampil:
sql
WHERE (a.ParentAgendaID IS NULL OR a.ApprovalStatus = 'Pending')
Tambahkan satu kolom di SELECT, setelah cat.ApprovalStatus AS CatatanStatus, supaya diketahui apa yang sedang menunggu:
sql
,
(SELECT TOP 1 pl.RequestType
FROM ISEE_PNP_ApprovalLog pl
WHERE pl.ReferenceID = a.ID
AND pl.RequestType IN ('Agenda','StopAgenda')
AND pl.ApprovalStatus = 'Pending'
ORDER BY pl.ID DESC) AS PendingTipe
Di reader, setelah indeks 18, tambahkan:
csharp
PendingTipe = reader.IsDBNull(19) ? "" : reader.GetString(19)
Kalau sebelumnya Anda belum menambahkan kolom Catatan (indeks 14–18), tambahkan itu dulu dari panduan sebelumnya. Kolom ini harus tepat di indeks 19.
2. DistribusiSoalViewModel
csharp
public string PendingTipe { get; set; } // Agenda / StopAgenda
3. distribusi-soal.js
Ganti _getStatusBadge:
javascript
_getStatusBadge: function(status, pendingTipe) {
if (status === "Aktif") return '<span class="badge success">Aktif</span>';
if (status === "Berhenti") return '<span class="badge danger">Berhenti</span>';
if (status === "Selesai") return '<span class="badge badge-light">Selesai</span>';
var label = pendingTipe === "StopAgenda" ? "Menunggu Approval (Penghentian)" : "Menunggu Approval";
return '<span class="badge warning">' + label + '</span>';
},
Di _renderRow, kirim parameter kedua ke fungsi itu, dan nonaktifkan Stop saat pending:
javascript
var badge = this._getStatusBadge(item.Status, item.PendingTipe);
var isPending = item.Status === "MenungguApproval";
...
if (isPending) {
actions = '<span style="color:var(--ink-400);">-</span>';
} else if (isHistory) {
...
Dengan ini agenda pending tetap ada di tab “Distribusi Berjalan”. Pembuatan baru dan reschedule tampil “Menunggu Approval”. Permintaan penghentian tampil “Menunggu Approval (Penghentian)”, tidak langsung pindah ke History. Setelah disetujui, status menjadi Berhenti dan pindah ke History. Kalau ditolak, status kembali Aktif. Perubahan ini ikut realtime lewat notifikasi yang sudah ada.
Satu hal yang belum saya ubah: agenda yang ditolak saat pembuatan statusnya menjadi Draft, dan saat ini tidak tampil di tab mana pun. Jika Anda ingin agenda yang ditolak juga terlihat, misalnya di History dengan badge “Ditolak”, kabari saja.4 views