%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
<?php
/**
* Admin: detail & proses permohonan informasi.
*/
require_once dirname(__DIR__) . '/config/config.php';
require_once dirname(__DIR__) . '/includes/auth.php';
require_once dirname(__DIR__) . '/includes/queries.php';
require_once dirname(__DIR__) . '/includes/upload.php';
require_central();
$id = (int) get_param('id', '0');
$stmt = db()->prepare(
'SELECT p.*, k.nama AS kategori_nama, a.nama AS petugas_nama
FROM permohonan p
LEFT JOIN kategori_informasi k ON k.id = p.kategori_id
LEFT JOIN admin_users a ON a.id = p.diproses_oleh
WHERE p.id = ? LIMIT 1'
);
$stmt->execute([$id]);
$p = $stmt->fetch();
if (!$p) {
set_flash('error', 'Permohonan tidak ditemukan.');
redirect('admin/permohonan.php');
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
csrf_verify();
$newStatus = post_param('status');
$tanggapan = post_param('tanggapan');
$validStatus = ['verifikasi', 'diproses', 'selesai', 'ditolak'];
if (!in_array($newStatus, $validStatus, true)) {
set_flash('error', 'Status tidak valid.');
redirect('admin/permohonan-detail.php?id=' . $id);
}
$fileTanggapan = $p['file_tanggapan'];
if (!empty($_FILES['file_tanggapan']['name'])) {
$up = handle_upload($_FILES['file_tanggapan'], 'tanggapan');
if (!$up['ok']) {
set_flash('error', 'Gagal mengunggah berkas: ' . $up['error']);
redirect('admin/permohonan-detail.php?id=' . $id);
}
delete_upload('tanggapan', $fileTanggapan);
$fileTanggapan = $up['filename'];
}
$tanggalSelesai = ($newStatus === 'selesai') ? date('Y-m-d H:i:s') : null;
$upd = db()->prepare(
'UPDATE permohonan
SET status = ?, tanggapan = ?, file_tanggapan = ?, diproses_oleh = ?, tanggal_selesai = ?
WHERE id = ?'
);
$upd->execute([$newStatus, $tanggapan, $fileTanggapan, current_admin()['id'], $tanggalSelesai, $id]);
set_flash('success', 'Permohonan berhasil diperbarui.');
redirect('admin/permohonan-detail.php?id=' . $id);
}
$adaFileTanggapan = !empty($p['file_tanggapan']) && is_file(UPLOAD_PATH . '/tanggapan/' . $p['file_tanggapan']);
$pageTitle = 'Detail Permohonan ' . $p['no_resi'];
$activeMenu = 'permohonan';
require __DIR__ . '/partials/head.php';
?>
<div class="mb-6">
<a href="<?= e(url('admin/permohonan.php')) ?>" class="text-sm text-slate-500 hover:text-mateng-green inline-flex items-center gap-2 mb-3"><i class="fas fa-arrow-left"></i> Kembali ke daftar</a>
<div class="flex flex-wrap items-center justify-between gap-3">
<h2 class="text-2xl font-bold text-slate-900">Permohonan <?= e($p['no_resi']) ?></h2>
<?= badge_status($p['status']) ?>
</div>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Detail permohonan -->
<div class="lg:col-span-2 space-y-6">
<div class="bg-white border border-slate-100 rounded-xl shadow-sm p-6">
<?php
$tipe = $p['tipe_pemohon'] ?? 'perorangan';
$tipeLabel = ['perorangan' => 'Perorangan', 'badan_hukum' => 'Kelompok Berbadan Hukum', 'non_badan_hukum' => 'Kelompok Tak Berbadan Hukum'][$tipe] ?? 'Perorangan';
$tipeBadge = ['perorangan' => 'bg-amber-50 text-orange-600', 'badan_hukum' => 'bg-emerald-50 text-teal-600', 'non_badan_hukum' => 'bg-pink-50 text-rose-600'][$tipe] ?? 'bg-slate-100 text-slate-600';
$isGroup = $tipe !== 'perorangan';
?>
<div class="flex items-center justify-between mb-4">
<h3 class="font-bold text-slate-800 flex items-center gap-2"><i class="fas fa-user text-mateng-green"></i> Data Pemohon</h3>
<span class="text-xs font-semibold px-2.5 py-1 rounded-full <?= $tipeBadge ?>"><?= e($tipeLabel) ?></span>
</div>
<?php if ($isGroup): ?>
<div class="bg-slate-50 border border-slate-100 rounded-lg p-4 mb-4">
<p class="text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3"><?= $tipe === 'badan_hukum' ? 'Data Badan Hukum' : 'Data Kelompok' ?></p>
<dl class="grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-3 text-sm">
<div class="sm:col-span-2"><dt class="text-slate-400 mb-0.5"><?= $tipe === 'badan_hukum' ? 'Nama Badan Hukum / Organisasi' : 'Nama Kelompok / Komunitas' ?></dt><dd class="font-medium text-slate-800"><?= e($p['nama_lembaga'] ?: '-') ?></dd></div>
<?php if ($tipe === 'badan_hukum'): ?>
<div><dt class="text-slate-400 mb-0.5">Nomor AHU Kemenkumham</dt><dd class="font-medium text-slate-800"><?= e($p['no_ahu'] ?: '-') ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">Nomor Akta Notaris</dt><dd class="font-medium text-slate-800"><?= e($p['akta_notaris'] ?: '-') ?></dd></div>
<?php else: ?>
<div><dt class="text-slate-400 mb-0.5">Jumlah Anggota</dt><dd class="font-medium text-slate-800"><?= $p['jumlah_anggota'] !== null ? (int) $p['jumlah_anggota'] . ' orang' : '-' ?></dd></div>
<?php endif; ?>
</dl>
</div>
<p class="text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3">Penanggung Jawab</p>
<?php endif; ?>
<dl class="grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-4 text-sm">
<div><dt class="text-slate-400 mb-0.5"><?= $isGroup ? 'Nama Penanggung Jawab' : 'Nama Lengkap' ?></dt><dd class="font-medium text-slate-800"><?= e($p['nama']) ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">NIK</dt><dd class="font-medium text-slate-800"><?= e($p['nik']) ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">Email</dt><dd class="font-medium text-slate-800"><?= e($p['email']) ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">No. HP</dt><dd class="font-medium text-slate-800"><?= e($p['no_hp']) ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">Pekerjaan</dt><dd class="font-medium text-slate-800"><?= e($p['pekerjaan'] ?: '-') ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">Alamat</dt><dd class="font-medium text-slate-800"><?= e($p['alamat'] ?: '-') ?></dd></div>
</dl>
</div>
<div class="bg-white border border-slate-100 rounded-xl shadow-sm p-6">
<h3 class="font-bold text-slate-800 mb-4 flex items-center gap-2"><i class="fas fa-file-lines text-mateng-blue"></i> Rincian Permohonan</h3>
<dl class="space-y-4 text-sm">
<div><dt class="text-slate-400 mb-0.5">Kategori</dt><dd class="font-medium text-slate-800"><?= e($p['kategori_nama'] ?: 'Tidak ditentukan') ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">Rincian Informasi yang Diminta</dt><dd class="font-medium text-slate-800 whitespace-pre-line"><?= e($p['rincian_informasi']) ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">Tujuan Penggunaan</dt><dd class="font-medium text-slate-800 whitespace-pre-line"><?= e($p['tujuan_penggunaan']) ?></dd></div>
<div class="grid grid-cols-2 gap-4">
<div><dt class="text-slate-400 mb-0.5">Cara Memperoleh</dt><dd class="font-medium text-slate-800 capitalize"><?= e($p['cara_memperoleh']) ?></dd></div>
<div><dt class="text-slate-400 mb-0.5">Cara Menerima</dt><dd class="font-medium text-slate-800 capitalize"><?= e($p['cara_terima']) ?></dd></div>
</div>
<div><dt class="text-slate-400 mb-0.5">Tanggal Pengajuan</dt><dd class="font-medium text-slate-800"><?= e(tanggal_id($p['created_at'], true)) ?></dd></div>
</dl>
</div>
</div>
<!-- Form proses -->
<div class="space-y-6">
<form method="post" enctype="multipart/form-data" class="bg-white border border-slate-100 rounded-xl shadow-sm p-6 sticky top-4">
<?= csrf_field() ?>
<h3 class="font-bold text-slate-800 mb-4 flex items-center gap-2"><i class="fas fa-tasks text-mateng-gold"></i> Proses Permohonan</h3>
<div class="mb-4">
<label class="block text-sm font-medium text-slate-700 mb-1.5">Status</label>
<select name="status" class="w-full rounded-lg border border-slate-300 px-4 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100 bg-white">
<?php foreach (['verifikasi' => 'Verifikasi', 'diproses' => 'Diproses', 'selesai' => 'Selesai', 'ditolak' => 'Ditolak'] as $key => $label): ?>
<option value="<?= e($key) ?>" <?= $p['status'] === $key ? 'selected' : '' ?>><?= e($label) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="mb-4">
<label class="block text-sm font-medium text-slate-700 mb-1.5">Tanggapan untuk Pemohon</label>
<textarea name="tanggapan" rows="5" class="w-full rounded-lg border border-slate-300 px-4 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100" placeholder="Tulis tanggapan / penjelasan kepada pemohon..."><?= e($p['tanggapan']) ?></textarea>
</div>
<div class="mb-5">
<label class="block text-sm font-medium text-slate-700 mb-1.5">Lampiran Dokumen Tanggapan</label>
<?php if ($adaFileTanggapan): ?>
<div class="flex items-center gap-2 text-sm text-slate-600 bg-slate-50 border border-slate-200 rounded-lg px-3 py-2 mb-2">
<i class="fas <?= e(file_icon($p['file_tanggapan'])) ?>"></i>
<span class="flex-grow truncate">Berkas terlampir</span>
<a href="<?= e(url('admin/unduh-tanggapan.php?id=' . $p['id'])) ?>" class="text-mateng-blue hover:underline">Unduh</a>
</div>
<?php endif; ?>
<input type="file" name="file_tanggapan" class="w-full text-sm text-slate-600 file:mr-3 file:py-2 file:px-4 file:rounded-lg file:border-0 file:bg-mateng-green/10 file:text-mateng-green file:font-semibold hover:file:bg-mateng-green/20 file:cursor-pointer">
<p class="text-xs text-slate-400 mt-1">PDF/DOC/XLS/JPG/PNG, maks <?= format_size(MAX_UPLOAD_SIZE) ?>.</p>
</div>
<button type="submit" class="w-full bg-mateng-green hover:bg-green-700 text-white font-bold py-3 rounded-lg transition-colors flex items-center justify-center gap-2">
<i class="fas fa-save"></i> Simpan Perubahan
</button>
</form>
<?php if ($p['petugas_nama'] || $p['tanggal_selesai']): ?>
<div class="bg-slate-50 border border-slate-200 rounded-xl p-5 text-sm">
<h4 class="font-semibold text-slate-700 mb-3">Riwayat Proses</h4>
<?php if ($p['petugas_nama']): ?><p class="text-slate-500 mb-1"><i class="fas fa-user-shield mr-1.5"></i>Diproses oleh: <strong class="text-slate-700"><?= e($p['petugas_nama']) ?></strong></p><?php endif; ?>
<?php if ($p['tanggal_selesai']): ?><p class="text-slate-500"><i class="fas fa-check-circle mr-1.5"></i>Selesai: <strong class="text-slate-700"><?= e(tanggal_id($p['tanggal_selesai'], true)) ?></strong></p><?php endif; ?>
</div>
<?php endif; ?>
</div>
</div>
<?php require __DIR__ . '/partials/foot.php'; ?>