JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

pnp2 | JustPaste.app
20 days ago4 views
👨‍💻Programming

pnp2

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.
← Back to timeline