Stabilize legacy Steven API endpoints and add OpenAPI spec

This commit is contained in:
Power BI Dev
2026-05-07 14:50:31 +07:00
parent f1c1f42a4c
commit e7b07a3cfd
17 changed files with 2755 additions and 0 deletions

View File

@@ -0,0 +1,137 @@
<?php
session_start();
include '../conf/koneksiPDO.php';
include '../conf/function.php';
$conn = new createCon();
$dbh = $conn->connect();
header('Content-Type: application/json');
if (!isset($_GET['bypassSaya'])) {
$loginMhs = requireSessionRole('mhs');
$nim = $loginMhs['nim'];
} else {
$loginDosen = isset($_SESSION['login-dosen']) ? $_SESSION['login-dosen'] : null;
$loginAdmin = isset($_SESSION['login-admin']) ? $_SESSION['login-admin'] : null;
if (!is_array($loginDosen) && !is_array($loginAdmin)) {
jsonResponse(['status' => 403, 'msg' => 'Forbidden'], 403);
}
}
$idRekapHasil = isset($_GET['idRekapHasil']) ? (int) $_GET['idRekapHasil'] : 0;
$jenis = isset($_GET['jenis']) ? trim((string) $_GET['jenis']) : '';
if ($idRekapHasil <= 0 || $jenis === '') {
jsonResponse(['status' => 0, 'msg' => 'Parameter tidak lengkap'], 422);
}
$sql = 'SELECT * FROM tbrekaphasil WHERE id = :idRekapHasil';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
$stmt->execute();
$rekap = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$rekap) {
jsonResponse(['status' => 0, 'msg' => 'Data Not Found'], 404);
}
if (!isset($_GET['bypassSaya'])) {
if ($rekap['nim'] !== $nim) {
jsonResponse(['status' => 403, 'msg' => 'Forbidden'], 403);
}
} elseif (!is_array($loginAdmin)) {
$dosenNip = isset($loginDosen['nip']) ? (string) $loginDosen['nip'] : '';
$allowedNips = [
(string) $rekap['pemb1'],
(string) $rekap['pemb2'],
(string) $rekap['peng1'],
(string) $rekap['peng2'],
];
if ($dosenNip === '' || !in_array($dosenNip, $allowedNips, true)) {
jsonResponse(['status' => 403, 'msg' => 'Forbidden'], 403);
}
}
$sql = 'SELECT * FROM tb_verif_berkas WHERE idRekapHasil = :idRekapHasil AND jenisSidang = :jenisSidang';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
$stmt->bindParam(':jenisSidang', $jenis);
$stmt->execute();
$catatanAdmin = '';
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$catatanAdmin = $row['catatanDariAdmin'];
}
$sql = 'SELECT * FROM tb_berkas_sidang WHERE idRekapHasil = :idRekapHasil AND jenisSidang = :jenisSidang';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
$stmt->bindParam(':jenisSidang', $jenis);
$stmt->execute();
$listBerkas = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$namaBerkas = $row['nama'];
$idBerkas = $row['idBerkas'];
$driveId = $row['driveId'];
$status = $row['status'];
if ($driveId != null && $driveId != '') {
$driveId = 'https://drive.google.com/open?id='.$driveId;
}
array_push($listBerkas, [
'id' => $idBerkas,
'nama' => $namaBerkas,
'file' => $driveId,
'status' => $status,
]);
}
$berkasSidang = [];
switch ($jenis) {
case 'Sidang':
$berkasSidang = [
'ktm' => ['judul' => 'Kartu Tanda Mahasiswa (KTM) terakhir', 'data' => null],
'spp' => ['judul' => 'Tanda Bukti Pembayaran SPP terakhir', 'data' => null],
'foto' => ['judul' => 'Pas Photo ukuran 3x4 = 3 lembar (Warna Latar Belakang Biru)', 'data' => null],
'lirs' => ['judul' => 'Lembaran Isian Rencana Studi (LIRS) terakhir', 'data' => null],
'transkrip' => ['judul' => 'Rekapitulasi Nilai Terakhir (Transkrip)', 'data' => null],
'buktiAbsen' => ['judul' => 'Bukti Absen Seminar Outline Skripsi', 'data' => null],
'beritaAcaraSeminarOutline' => ['judul' => 'Berita Acara Seminar Outline Skripsi', 'data' => null],
'suratRekomendasiSidang' => ['judul' => 'Surat Rekomendasi Pelaksanaan Sidang Akhir Skripsi Secara Daring dari Jurusan/Program Studi', 'data' => null],
'bebasReferensiTeknik' => ['judul' => 'Bebas Referensi Fakultas Teknik', 'data' => null],
'bebasReferensiUntan' => ['judul' => 'Bebas Referensi UNTAN', 'data' => null],
'bebasReferensiPerpusDaerah' => ['judul' => 'Bebas Referensi Perpustakaan Daerah', 'data' => null],
'TI08' => ['judul' => 'Siap Sidang TI. 08', 'data' => null],
'buktiUploadJurnal' => ['judul' => 'Bukti Upload Jurnal ( Teknik Informatika)', 'data' => null],
'ifTA07' => ['judul' => 'Format IF-TA-07', 'data' => null],
'b4' => ['judul' => 'Kartu Konsultasi Skripsi (B4)', 'data' => null],
'b1' => ['judul' => 'Format B.1', 'data' => null],
'b5' => ['judul' => 'Format B.5', 'data' => null],
'suratWisuda' => ['judul' => 'Surat Pernyataan Wisuda', 'data' => null],
'biodataSarjana' => ['judul' => 'Biodata Sarjana Baru', 'data' => null],
'ijazahSMA' => ['judul' => 'Ijazah SMA', 'data' => null],
'toefl' => ['judul' => 'Sertifikat TOEFL (nilai min. 425)', 'data' => null],
'kartuKeluarga' => ['judul' => 'Kartu Keluarga', 'data' => null],
'ktp' => ['judul' => 'KTP', 'data' => null],
'skripsi' => ['judul' => 'Skripsi/Tugas Akhir', 'data' => null],
];
break;
default: echo json_encode(['status' => 0, 'msg' => 'Jenis tidak dikenali']); exit;
}
foreach ($berkasSidang as $key => $val) {
foreach ($listBerkas as $key2 => $val2) {
if ($key == $val2['nama']) {
$berkasSidang[$key]['data'] = $val2;
}
}
}
echo json_encode(utf8ize(['status' => 1, 'data' => $berkasSidang, 'catatanAdmin' => $catatanAdmin]));