Stabilize legacy Steven API endpoints and add OpenAPI spec
This commit is contained in:
220
steven/API/doxid_penunjukan_penguji.php
Normal file
220
steven/API/doxid_penunjukan_penguji.php
Normal file
@@ -0,0 +1,220 @@
|
||||
<?php
|
||||
|
||||
header("Content-Type: application/json");
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
$jsonData = getRequestJson();
|
||||
|
||||
if (!isset($jsonData['id'], $jsonData['peng1'], $jsonData['peng2'])) {
|
||||
jsonResponse([
|
||||
'status' => 0,
|
||||
'msg' => 'Parameter tidak lengkap',
|
||||
], 422);
|
||||
}
|
||||
|
||||
$id = $jsonData['id'];
|
||||
$peng1 = $jsonData['peng1'];
|
||||
$peng2 = $jsonData['peng2'];
|
||||
|
||||
if(empty($peng1) || empty($peng2)){
|
||||
echo json_encode([
|
||||
'status' => 0,
|
||||
'msg' => "Penguji Tidak Boleh Kosong",
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
/**
|
||||
$jsonInput = json_encode($jsonData);
|
||||
$sql = "INSERT INTO tescurldaridoxid(data) VALUES (:data)";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':data', $jsonInput);
|
||||
$stmt->execute();
|
||||
*/
|
||||
|
||||
$sql = "UPDATE tbrekaphasil SET peng1 = :peng1, peng2 = :peng2 WHERE id = :id";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':peng1', $peng1);
|
||||
$stmt->bindParam(':peng2', $peng2);
|
||||
$stmt->bindParam(':id', $id);
|
||||
$stmt->execute();
|
||||
|
||||
$error = $stmt->errorInfo();
|
||||
|
||||
$isError = true;
|
||||
|
||||
if ($error[0] == '00000') {
|
||||
$isError = false;
|
||||
}
|
||||
|
||||
if ($isError) {
|
||||
echo json_encode(
|
||||
[
|
||||
'status' => 0,
|
||||
'msg' => 'Terjadi kesalahan teknis!!!',
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$listNomorWA = [];
|
||||
|
||||
$sql = "SELECT * FROM tbdosen";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->execute();
|
||||
|
||||
$listDosen = [];
|
||||
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
|
||||
$listDosen[$row['nip']] = $row;
|
||||
}
|
||||
|
||||
$sql = "SELECT tbrekaphasil.*, tbmhs.nmLengkap, tbmhs.noHP FROM tbrekaphasil LEFT JOIN tbmhs ON tbrekaphasil.nim = tbmhs.nim WHERE tbrekaphasil.id = :id";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':id', $id);
|
||||
$stmt->execute();
|
||||
|
||||
if($stmt->rowCount() == 0){
|
||||
echo json_encode([
|
||||
'status' => 0,
|
||||
'msg' => "Data Skripsi Tidak Ditemukan",
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
|
||||
$todayDate = date('d-m-Y');
|
||||
$tanggalPenunjukanPenguji = $row['timestampPenunjukanPenguji'];
|
||||
$semesterPenunjukanPenguji = $row['semesterPenunjukanPenguji'];
|
||||
if(empty($tanggalPenunjukanPenguji)){
|
||||
$tanggalPenunjukanPenguji = date('Y-m-d');
|
||||
$bulanKeputusan = date('m', strtotime($tanggalPenunjukanPenguji));
|
||||
$tahunKeputusan = date('Y', strtotime($tanggalPenunjukanPenguji));
|
||||
|
||||
if ($bulanKeputusan >= 2 && $bulanKeputusan <= 7) {
|
||||
$tahunKeputusan = $tahunKeputusan - 1;
|
||||
$semesterKeputusan = 'GEN';
|
||||
} else {
|
||||
$semesterKeputusan = 'GAS';
|
||||
$tahunKeputusan = $tahunKeputusan;
|
||||
}
|
||||
|
||||
$semesterPenunjukanPenguji = $semesterKeputusan.'-'.$tahunKeputusan;
|
||||
|
||||
$sql = "UPDATE tbrekaphasil SET timestampPenunjukanPenguji = :tanggal, semesterPenunjukanPenguji = :semester WHERE id = :id";
|
||||
$stmt1 = $dbh->prepare($sql);
|
||||
$stmt1->bindParam(':tanggal', $tanggalPenunjukanPenguji);
|
||||
$stmt1->bindParam(':semester', $semesterPenunjukanPenguji);
|
||||
$stmt1->bindParam(':id', $id);
|
||||
$stmt1->execute();
|
||||
}
|
||||
|
||||
$waktuPenguji = date('Y-m-d');
|
||||
$hari = date('w');
|
||||
|
||||
$hariText = '';
|
||||
switch ($hari) {
|
||||
case '0': $hariText = 'Minggu'; break;
|
||||
case '1': $hariText = 'Senin'; break;
|
||||
case '2': $hariText = 'Selasa'; break;
|
||||
case '3': $hariText = 'Rabu'; break;
|
||||
case '4': $hariText = 'Kamis'; break;
|
||||
case '5': $hariText = 'Jumat'; break;
|
||||
case '6': $hariText = 'Sabtu'; break;
|
||||
}
|
||||
|
||||
$idPraoutline = $row['idpraoutline'];
|
||||
$judul = $row['judul_final'];
|
||||
|
||||
$noHPMahasiswa = $row['noHP'];
|
||||
$namaMahasiswa = strtoupper($row['nmLengkap']);
|
||||
$nimMahasiswa = strtoupper($row['nim']);
|
||||
|
||||
//kirimkan ke no bu tuning
|
||||
array_push($listNomorWA, "082350250892");
|
||||
|
||||
if(!empty($noHPMahasiswa)){
|
||||
array_push($listNomorWA, $noHPMahasiswa);
|
||||
}
|
||||
|
||||
$nipPemb1 = $row['pemb1'];
|
||||
$nipPemb2 = $row['pemb2'];
|
||||
$nipPeng1 = $row['peng1'];
|
||||
$nipPeng2 = $row['peng2'];
|
||||
|
||||
$namaPemb1 = '';
|
||||
$namaPemb2 = '';
|
||||
$namaPeng1 = '';
|
||||
$namaPeng2 = '';
|
||||
|
||||
$noPemb1 = '';
|
||||
$noPemb2 = '';
|
||||
$noPeng1 = '';
|
||||
$noPeng2 = '';
|
||||
|
||||
if(!empty($nipPemb1) && isset($listDosen[$nipPemb1])){
|
||||
$namaPemb1 = $listDosen[$nipPemb1]['nmLengkap'];
|
||||
|
||||
if(!empty($listDosen[$nipPemb1]['nohp'])){
|
||||
$noPemb1 = $listDosen[$nipPemb1]['nohp'];
|
||||
array_push($listNomorWA, $listDosen[$nipPemb1]['nohp']);
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($nipPemb2) && isset($listDosen[$nipPemb2])){
|
||||
$namaPemb2 = $listDosen[$nipPemb2]['nmLengkap'];
|
||||
|
||||
if(!empty($listDosen[$nipPemb2]['nohp'])){
|
||||
$noPemb2 = $listDosen[$nipPemb2]['nohp'];
|
||||
array_push($listNomorWA, $listDosen[$nipPemb2]['nohp']);
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($nipPeng1) && isset($listDosen[$nipPeng1])){
|
||||
$namaPeng1 = $listDosen[$nipPeng1]['nmLengkap'];
|
||||
|
||||
if(!empty($listDosen[$nipPeng1]['nohp'])){
|
||||
$noPeng1 = $listDosen[$nipPeng1]['nohp'];
|
||||
array_push($listNomorWA, $listDosen[$nipPeng1]['nohp']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!empty($nipPeng2) && isset($listDosen[$nipPeng2])){
|
||||
$namaPeng2 = $listDosen[$nipPeng2]['nmLengkap'];
|
||||
|
||||
if(!empty($listDosen[$nipPeng2]['nohp'])){
|
||||
$noPeng2 = $listDosen[$nipPeng2]['nohp'];
|
||||
array_push($listNomorWA, $listDosen[$nipPeng2]['nohp']);
|
||||
}
|
||||
}
|
||||
|
||||
$isiNotif = "*KEPUTUSAN PENUNJUKKAN PENGUJI (SPOTA)*\n\nDosen penguji untuk skripsi mahasiswa *$namaMahasiswa / $nimMahasiswa* ($noHPMahasiswa) dengan judul *$judul* pada *$hariText, $todayDate* untuk pelaksanaan Seminar Hasil (Sidang Tertutup) dengan susunan Tim Penguji sebagai berikut:\n\nPembimbing 1 (Ketua): *$namaPemb1* ($noPemb1)\nPembimbing 2 (Sekretaris) : *$namaPemb2* ($noPemb2)\nPenguji 1 : *$namaPeng1* ($noPeng1)\nPenguji 2 : *$namaPeng2* ($noPeng2)\n\n*SPOTA INFORMATIKA UNTAN*\nKlik Disini :\nhttps://spota.untan.ac.id/dosen/dashboard.php?page=praoutline&menu=review&prid=$idPraoutline";
|
||||
}
|
||||
|
||||
$listNomorWA = array_values(array_unique($listNomorWA));
|
||||
|
||||
foreach($listNomorWA as $key => $val){
|
||||
if (empty($val)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$nomorWA = '62'.intval($val);
|
||||
$sql = "INSERT INTO tbl_notif_wa(toX,isiPesan, status) VALUES (:toX, :isiPesan, '0')";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':toX', $nomorWA);
|
||||
$stmt->bindParam(':isiPesan', $isiNotif);
|
||||
$stmt->execute();
|
||||
}
|
||||
|
||||
echo json_encode(
|
||||
[
|
||||
'status' => 1,
|
||||
'msg' => 'Berhasil mengupdate data penguji untuk data ini!!!',
|
||||
]
|
||||
);
|
||||
}
|
||||
137
steven/API/getBerkasSidangMahasiswa.php
Normal file
137
steven/API/getBerkasSidangMahasiswa.php
Normal 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]));
|
||||
105
steven/API/getDetailTugasAkhirMahasiswa.php
Normal file
105
steven/API/getDetailTugasAkhirMahasiswa.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', '0');
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
|
||||
if ($id <= 0) {
|
||||
jsonResponse([
|
||||
'status' => 0,
|
||||
'msg' => 'Parameter id tidak valid',
|
||||
], 422);
|
||||
}
|
||||
|
||||
$listTahunMasukMahasiswa = [];
|
||||
$sql = "SELECT * FROM tbmhs";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->execute();
|
||||
|
||||
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
|
||||
$nimDb = $row['nim'];
|
||||
$thnMasukDb = $row['thnmasuk'];
|
||||
|
||||
$listTahunMasukMahasiswa[$nimDb] = intval($thnMasukDb);
|
||||
}
|
||||
|
||||
//$sql = "SELECT tbpraoutline.*, tbrekaphasil.judul_final, tbrekaphasil.pemb1, tbrekaphasil.pemb2, tbrekaphasil.peng1, tbrekaphasil.peng2, tbrekaphasil.kep_akhir, tbrekaphasil.tgl_kep, tbrekaphasil.wkt_kep FROM tbpraoutline LEFT JOIN tbrekaphasil ON tbpraoutline.id = tbrekaphasil.idpraoutline";
|
||||
$sql = "SELECT tbrekaphasil.*, tbpraoutline.kelompokKeahlian FROM tbrekaphasil LEFT JOIN tbpraoutline ON tbrekaphasil.idpraoutline = tbpraoutline.id WHERE tbrekaphasil.id = :id";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':id', $id);
|
||||
$stmt->execute();
|
||||
|
||||
if($stmt->rowCount() == 0){
|
||||
jsonResponse([
|
||||
'status' => 0,
|
||||
'msg' => 'Data Not Found',
|
||||
], 404);
|
||||
}
|
||||
$data = null;
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
$id = $row['id'];
|
||||
$nim = $row['nim'];
|
||||
$judul = $row['judul_final'];
|
||||
$pemb1 = $row['pemb1'];
|
||||
$pemb2 = $row['pemb2'];
|
||||
$peng1 = $row['peng1'];
|
||||
$peng2 = $row['peng2'];
|
||||
$semester = $row['semester'];
|
||||
$tahun = $row['tahun_ajaran'];
|
||||
$tanggalKep = $row['tgl_kep'];
|
||||
$waktuKep = $row['wkt_kep'];
|
||||
$kepAkhir = $row['kep_akhir'];
|
||||
$kelompokKeahlian = $row['kelompokKeahlian'];
|
||||
$jadwal = [];
|
||||
|
||||
if(!isset($listTahunMasukMahasiswa[$nim])){
|
||||
continue;
|
||||
}else{
|
||||
if($listTahunMasukMahasiswa[$nim] < 2014){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$sql = "SELECT * FROM tbjadwal LEFT JOIN tbmhs ON tbjadwal.idMhs = tbmhs.idmhs WHERE nim = :nim AND publish = 'Y' ORDER BY start";
|
||||
$stmt1 = $dbh->prepare($sql);
|
||||
$stmt1->bindParam(':nim', $nim);
|
||||
$stmt1->execute();
|
||||
|
||||
while($row1 = $stmt1->fetch(PDO::FETCH_ASSOC)){
|
||||
array_push($jadwal,[
|
||||
'jenis' => $row1['jenis'],
|
||||
'waktu' => $row1['start'],
|
||||
'ruangan' => $row1['ruangan'],
|
||||
]);
|
||||
}
|
||||
|
||||
$data = array(
|
||||
'id' => $id,
|
||||
'judul' => $judul,
|
||||
'nim' => $nim,
|
||||
'pemb1' => $pemb1,
|
||||
'pemb2' => $pemb2,
|
||||
'peng1' => $peng1,
|
||||
'peng2' => $peng2,
|
||||
'semester' => $semester,
|
||||
'tahun' => $tahun,
|
||||
'tanggalKeputusan' => $tanggalKep,
|
||||
'waktuKeputusan' => $waktuKep,
|
||||
'kelompokKeahlian' => $kelompokKeahlian,
|
||||
'jadwal' => $jadwal,
|
||||
'kepAkhir' => $kepAkhir,
|
||||
);
|
||||
}
|
||||
|
||||
echo json_encode(utf8ize(['status' => 1, 'data' => $data]));
|
||||
90
steven/API/getListDataTAMahasiswa.php
Normal file
90
steven/API/getListDataTAMahasiswa.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', '0');
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$server = new Server();
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
$listTahunMasukMahasiswa = [];
|
||||
$sql = "SELECT * FROM tbmhs";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->execute();
|
||||
|
||||
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
|
||||
$nimDb = $row['nim'];
|
||||
$thnMasukDb = $row['thnmasuk'];
|
||||
|
||||
$listTahunMasukMahasiswa[$nimDb] = intval($thnMasukDb);
|
||||
}
|
||||
|
||||
//$sql = "SELECT tbpraoutline.*, tbrekaphasil.judul_final, tbrekaphasil.pemb1, tbrekaphasil.pemb2, tbrekaphasil.peng1, tbrekaphasil.peng2, tbrekaphasil.kep_akhir, tbrekaphasil.tgl_kep, tbrekaphasil.wkt_kep FROM tbpraoutline LEFT JOIN tbrekaphasil ON tbpraoutline.id = tbrekaphasil.idpraoutline";
|
||||
$sql = "SELECT tbrekaphasil.*, tbpraoutline.kelompokKeahlian FROM tbrekaphasil LEFT JOIN tbpraoutline ON tbrekaphasil.idpraoutline = tbpraoutline.id WHERE kep_akhir = '1'";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->execute();
|
||||
|
||||
$data = array();
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
$id = $row['id'];
|
||||
$nim = $row['nim'];
|
||||
$judul = $row['judul_final'];
|
||||
$pemb1 = $row['pemb1'];
|
||||
$pemb2 = $row['pemb2'];
|
||||
$peng1 = $row['peng1'];
|
||||
$peng2 = $row['peng2'];
|
||||
$semester = $row['semester'];
|
||||
$tahun = $row['tahun_ajaran'];
|
||||
$tanggalKep = $row['tgl_kep'];
|
||||
$waktuKep = $row['wkt_kep'];
|
||||
$kelompokKeahlian = $row['kelompokKeahlian'];
|
||||
$jadwal = [];
|
||||
|
||||
if(!isset($listTahunMasukMahasiswa[$nim])){
|
||||
continue;
|
||||
}else{
|
||||
if($listTahunMasukMahasiswa[$nim] < 2014){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$sql = "SELECT * FROM tbjadwal LEFT JOIN tbmhs ON tbjadwal.idMhs = tbmhs.idmhs WHERE nim = :nim AND publish = 'Y' ORDER BY start";
|
||||
$stmt1 = $dbh->prepare($sql);
|
||||
$stmt1->bindParam(':nim', $nim);
|
||||
$stmt1->execute();
|
||||
|
||||
while($row1 = $stmt1->fetch(PDO::FETCH_ASSOC)){
|
||||
array_push($jadwal,[
|
||||
'jenis' => $row1['jenis'],
|
||||
'waktu' => $row1['start'],
|
||||
'ruangan' => $row1['ruangan'],
|
||||
]);
|
||||
}
|
||||
|
||||
array_push($data, array(
|
||||
'id' => $id,
|
||||
'judul' => $judul,
|
||||
'nim' => $nim,
|
||||
'pemb1' => $pemb1,
|
||||
'pemb2' => $pemb2,
|
||||
'peng1' => $peng1,
|
||||
'peng2' => $peng2,
|
||||
'semester' => $semester,
|
||||
'tahun' => $tahun,
|
||||
'tanggalKeputusan' => $tanggalKep,
|
||||
'waktuKeputusan' => $waktuKep,
|
||||
'kelompokKeahlian' => $kelompokKeahlian,
|
||||
'jadwal' => $jadwal,
|
||||
));
|
||||
}
|
||||
|
||||
echo json_encode(utf8ize(array('status' => 1, 'data' => $data)));
|
||||
57
steven/API/getListKK.php
Normal file
57
steven/API/getListKK.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$server = new Server();
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
checkKey('GET', 'secret');
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
$sql = 'SELECT * FROM tb_kelompok_keahlian LEFT JOIN tbdosen ON tb_kelompok_keahlian.ketuaKK = tbdosen.iddosen';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->execute();
|
||||
|
||||
$data = [];
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
$idKK = $row['idKK'];
|
||||
$listAnggotaKK = [];
|
||||
|
||||
array_push($listAnggotaKK, [
|
||||
'status' => 'ketua',
|
||||
'id' => $row['iddosen'],
|
||||
'nama' => $row['nmLengkap'],
|
||||
]);
|
||||
|
||||
$sql = 'SELECT * FROM tbdosen WHERE kelompokKeahlian = :kk';
|
||||
$stmt1 = $dbh->prepare($sql);
|
||||
$stmt1->bindParam(':kk', $idKK);
|
||||
$stmt1->execute();
|
||||
|
||||
while ($row1 = $stmt1->fetch(PDO::FETCH_ASSOC)) {
|
||||
if ($row1['iddosen'] == $row['iddosen']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
array_push($listAnggotaKK, [
|
||||
'status' => 'anggota',
|
||||
'id' => $row1['iddosen'],
|
||||
'nama' => $row1['nmLengkap'],
|
||||
]);
|
||||
}
|
||||
|
||||
array_push($data, [
|
||||
'id' => $row['idKK'],
|
||||
'nama' => $row['namaKK'],
|
||||
'anggotaKK' => $listAnggotaKK,
|
||||
]);
|
||||
}
|
||||
|
||||
echo json_encode(utf8ize(['status' => 1, 'data' => $data]));
|
||||
129
steven/API/notifIngatkanKeKKMasing.php
Normal file
129
steven/API/notifIngatkanKeKKMasing.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$server = new Server();
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
checkKey('GET', 'secret');
|
||||
checkKey('GET', 'idKK');
|
||||
checkKey('GET', 'tgl');
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
$idKK = intval($_GET['idKK']);
|
||||
$timestampTgl = strtotime($_GET['tgl']);
|
||||
if ($timestampTgl === false) {
|
||||
jsonResponse(['status' => 0, 'msg' => 'Format tanggal tidak valid'], 422);
|
||||
}
|
||||
|
||||
$tanggalUpload = date('Y-m-d', $timestampTgl);
|
||||
|
||||
$sql = 'SELECT * FROM tb_kelompok_keahlian WHERE idKK = :idKK';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idKK', $idKK);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() === 0) {
|
||||
jsonResponse(['status' => 0, 'msg' => 'KK tidak ditemukan'], 404);
|
||||
}
|
||||
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
$namaKK = $row['namaKK'];
|
||||
$ketuaKK = $row['ketuaKK'];
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM tbdosen WHERE iddosen = :ketuaKK OR jenis = :jenisKajur';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$jenisKajur = 'K';
|
||||
$stmt->bindParam(':ketuaKK', $ketuaKK);
|
||||
$stmt->bindParam(':jenisKajur', $jenisKajur);
|
||||
$stmt->execute();
|
||||
|
||||
$listNoHP = [];
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
$noHPDosen = $row['nohp'];
|
||||
array_push($listNoHP, $noHPDosen);
|
||||
}
|
||||
|
||||
$statusUsulan = '0';
|
||||
$sql = 'SELECT tbpraoutline.*, tbmhs.idmhs, tbmhs.thnmasuk, tbmhs.nmLengkap FROM tbpraoutline LEFT JOIN tbmhs ON tbpraoutline.nim = tbmhs.nim WHERE status_usulan = :statusUsulan AND kelompokKeahlian = :idKK AND tgl_upload < :tanggalUpload';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':statusUsulan', $statusUsulan);
|
||||
$stmt->bindParam(':idKK', $idKK);
|
||||
$stmt->bindParam(':tanggalUpload', $tanggalUpload);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() === 0) {
|
||||
jsonResponse(['status' => 0, 'msg' => 'Tidak ada judul yang belum diclose untuk KK ini'], 404);
|
||||
}
|
||||
|
||||
$judul = '*PERMINTAAN KEPUTUSAN DRAFT PROPOSAL*';
|
||||
|
||||
$isiNotif = "\n\nDraft proposal yang masih menunggu keputusan dari KK *$namaKK* sebagai berikut:\n\n";
|
||||
|
||||
$i = 1;
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
$id = $row['id'];
|
||||
$nim = $row['nim'];
|
||||
$nama = $row['nmLengkap'];
|
||||
$judulSkripsi = $row['judul'];
|
||||
$tanggalUpload = date('d-m-Y', strtotime($row['tgl_upload']));
|
||||
|
||||
$isiNotif .= "$i. $judulSkripsi ($nama/$nim) - Tanggal Upload : *$tanggalUpload*\n\n";
|
||||
|
||||
++$i;
|
||||
}
|
||||
|
||||
$sendWA = $judul.$isiNotif."*SPOTA INFORMATIKA UNTAN*";
|
||||
|
||||
foreach ($listNoHP as $key => $hp) {
|
||||
if(empty($hp)){
|
||||
continue;
|
||||
}
|
||||
|
||||
$hp = '62'.intval($hp);
|
||||
$sql = "INSERT INTO tbl_notif_wa(toX, isiPesan) VALUES(:tujuan, :pesan)";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':tujuan', $hp);
|
||||
$stmt->bindParam(':pesan', $sendWA);
|
||||
$stmt->execute();
|
||||
|
||||
// $data = [
|
||||
// 'api_key' => '979b07377545d6ccda68e8fa2e8d629cad2216de',
|
||||
// 'sender' => '6281522658229',
|
||||
// 'number' => $hp,
|
||||
// 'message' => $sendWA, ];
|
||||
|
||||
// //print_r($data);
|
||||
|
||||
// $curl = curl_init();
|
||||
// curl_setopt_array($curl, [
|
||||
// CURLOPT_URL => 'https://wa.gofly.id/api/send-message.php',
|
||||
// CURLOPT_RETURNTRANSFER => true,
|
||||
// CURLOPT_ENCODING => '',
|
||||
// CURLOPT_MAXREDIRS => 10,
|
||||
// CURLOPT_TIMEOUT => 2,
|
||||
// CURLOPT_FOLLOWLOCATION => true,
|
||||
// CURLOPT_SSL_VERIFYPEER => 0,
|
||||
// CURLOPT_CONNECTTIMEOUT => 2,
|
||||
// CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||||
// CURLOPT_CUSTOMREQUEST => 'POST',
|
||||
// CURLOPT_POSTFIELDS => json_encode($data), ]
|
||||
// );
|
||||
|
||||
// $response = curl_exec($curl);
|
||||
|
||||
// if (curl_errno($curl)) {
|
||||
// $error_msg = curl_error($curl);
|
||||
// echo $error_msg;
|
||||
// }
|
||||
}
|
||||
|
||||
echo json_encode(['status' => 1, 'msg' => 'ok']);
|
||||
527
steven/API/openapi.yaml
Normal file
527
steven/API/openapi.yaml
Normal file
@@ -0,0 +1,527 @@
|
||||
openapi: 3.0.3
|
||||
info:
|
||||
title: SPOTA Legacy Steven API
|
||||
version: 0.1.0
|
||||
description: |
|
||||
Dokumentasi awal endpoint legacy di `steven/API`.
|
||||
Fokus dokumen ini adalah endpoint yang sudah distabilkan dan masih dipakai integrasi lama.
|
||||
servers:
|
||||
- url: https://spota.informatika.untan.ac.id/steven/API
|
||||
security:
|
||||
- LegacySecretQuery: []
|
||||
- LegacySecretHeader: []
|
||||
tags:
|
||||
- name: Robot
|
||||
description: Endpoint machine-to-machine dengan secret legacy.
|
||||
- name: Session
|
||||
description: Endpoint yang memerlukan session login aplikasi.
|
||||
paths:
|
||||
/getListMahasiswa.php:
|
||||
get:
|
||||
tags: [Robot]
|
||||
summary: Ambil daftar mahasiswa
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/SecretQuery'
|
||||
- name: mulaiTahun
|
||||
in: query
|
||||
schema:
|
||||
type: integer
|
||||
description: Filter angkatan minimal.
|
||||
- name: withHP
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
description: Jika ada, sertakan `hp` dan `hpOrtu`.
|
||||
responses:
|
||||
'200':
|
||||
description: Data mahasiswa
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListMahasiswaResponse'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
/getListDosen.php:
|
||||
get:
|
||||
tags: [Robot]
|
||||
summary: Ambil daftar dosen
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/SecretQuery'
|
||||
responses:
|
||||
'200':
|
||||
description: Data dosen
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListDosenResponse'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
/getListTugasAkhir.php:
|
||||
get:
|
||||
tags: [Robot]
|
||||
summary: Ambil daftar tugas akhir mahasiswa
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/SecretQuery'
|
||||
- name: mulaiTahun
|
||||
in: query
|
||||
schema:
|
||||
type: integer
|
||||
- name: withoutKep
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
description: Jika ada, data tidak difilter `kep_akhir = 1`.
|
||||
responses:
|
||||
'200':
|
||||
description: Data tugas akhir
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListTugasAkhirResponse'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
/getListDataTAMahasiswa.php:
|
||||
get:
|
||||
tags: [Robot]
|
||||
summary: Ambil data rekap tugas akhir beserta jadwal
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/SecretQuery'
|
||||
responses:
|
||||
'200':
|
||||
description: Data TA mahasiswa
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListDataTaMahasiswaResponse'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
/getDetailTugasAkhirMahasiswa.php:
|
||||
get:
|
||||
tags: [Robot]
|
||||
summary: Ambil detail tugas akhir mahasiswa
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/SecretQuery'
|
||||
- name: id
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: Detail tugas akhir
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
/getListKK.php:
|
||||
get:
|
||||
tags: [Robot]
|
||||
summary: Ambil daftar kelompok keahlian
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/SecretQuery'
|
||||
responses:
|
||||
'200':
|
||||
description: Data kelompok keahlian
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
/sendMail.php:
|
||||
post:
|
||||
tags: [Robot]
|
||||
summary: Kirim email HTML ke banyak penerima
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/x-www-form-urlencoded:
|
||||
schema:
|
||||
type: object
|
||||
required: [secret, to, judul, content]
|
||||
properties:
|
||||
secret:
|
||||
type: string
|
||||
to:
|
||||
type: string
|
||||
description: JSON array string email penerima.
|
||||
example: '["user1@example.com","user2@example.com"]'
|
||||
judul:
|
||||
type: string
|
||||
content:
|
||||
type: string
|
||||
from:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Email terkirim
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/StandardSuccess'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'422':
|
||||
$ref: '#/components/responses/ValidationError'
|
||||
/willy_manageJadwal.php:
|
||||
post:
|
||||
tags: [Robot]
|
||||
summary: Tambah, ubah, atau hapus jadwal sidang
|
||||
security:
|
||||
- LegacySecretHeader: []
|
||||
- LegacySecretQuery: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/ManageJadwalAddRequest'
|
||||
- $ref: '#/components/schemas/ManageJadwalUpdateRequest'
|
||||
- $ref: '#/components/schemas/ManageJadwalDeleteRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Operasi jadwal berhasil
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'422':
|
||||
$ref: '#/components/responses/ValidationError'
|
||||
/getBerkasSidangMahasiswa.php:
|
||||
get:
|
||||
tags: [Session]
|
||||
summary: Ambil daftar berkas sidang mahasiswa
|
||||
description: |
|
||||
Default untuk mahasiswa yang sedang login.
|
||||
Jika memakai `bypassSaya`, akses hanya untuk dosen terkait atau admin.
|
||||
security: []
|
||||
parameters:
|
||||
- name: idRekapHasil
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
- name: jenis
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
enum: [Outline, SidHas, Sidang]
|
||||
- name: bypassSaya
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Berkas sidang
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
'403':
|
||||
description: Forbidden
|
||||
/verifBerkasAdmin.php:
|
||||
post:
|
||||
tags: [Session]
|
||||
summary: Verifikasi berkas oleh admin
|
||||
security: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
responses:
|
||||
'200':
|
||||
description: Verifikasi tersimpan
|
||||
'403':
|
||||
description: Forbidden
|
||||
/verifBerkasDosen.php:
|
||||
post:
|
||||
tags: [Session]
|
||||
summary: Verifikasi berkas oleh dosen terkait
|
||||
security: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
responses:
|
||||
'200':
|
||||
description: Verifikasi tersimpan
|
||||
'403':
|
||||
description: Forbidden
|
||||
components:
|
||||
securitySchemes:
|
||||
LegacySecretQuery:
|
||||
type: apiKey
|
||||
in: query
|
||||
name: secret
|
||||
LegacySecretHeader:
|
||||
type: apiKey
|
||||
in: header
|
||||
name: X-API-Key
|
||||
parameters:
|
||||
SecretQuery:
|
||||
name: secret
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
Unauthorized:
|
||||
description: Secret salah atau tidak dikirim.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ErrorResponse'
|
||||
ValidationError:
|
||||
description: Parameter tidak lengkap atau tidak valid.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ErrorResponse'
|
||||
schemas:
|
||||
StandardSuccess:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
oneOf:
|
||||
- type: integer
|
||||
- type: boolean
|
||||
msg:
|
||||
type: string
|
||||
ErrorResponse:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
oneOf:
|
||||
- type: integer
|
||||
- type: boolean
|
||||
msg:
|
||||
type: string
|
||||
MahasiswaItem:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
nim:
|
||||
type: string
|
||||
nama:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
urlFoto:
|
||||
type: string
|
||||
angkatan:
|
||||
type: integer
|
||||
hp:
|
||||
type: string
|
||||
hpOrtu:
|
||||
type: string
|
||||
ListMahasiswaResponse:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: integer
|
||||
msg:
|
||||
type: string
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/MahasiswaItem'
|
||||
DosenItem:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
nip:
|
||||
type: string
|
||||
nama:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
hp:
|
||||
type: string
|
||||
urlFoto:
|
||||
type: string
|
||||
ListDosenResponse:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: integer
|
||||
msg:
|
||||
type: string
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/DosenItem'
|
||||
TugasAkhirItem:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
judul:
|
||||
type: string
|
||||
nim:
|
||||
type: string
|
||||
nama:
|
||||
type: string
|
||||
pemb1:
|
||||
type: string
|
||||
pemb2:
|
||||
type: string
|
||||
peng1:
|
||||
type: string
|
||||
peng2:
|
||||
type: string
|
||||
semester:
|
||||
type: string
|
||||
tahun:
|
||||
type: string
|
||||
tanggalKeputusan:
|
||||
type: string
|
||||
waktuKeputusan:
|
||||
type: string
|
||||
idPraoutline:
|
||||
type: integer
|
||||
keputusan:
|
||||
type: string
|
||||
sidang:
|
||||
type: integer
|
||||
ListTugasAkhirResponse:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: integer
|
||||
msg:
|
||||
type: string
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/TugasAkhirItem'
|
||||
JadwalItem:
|
||||
type: object
|
||||
properties:
|
||||
jenis:
|
||||
type: string
|
||||
waktu:
|
||||
type: string
|
||||
ruangan:
|
||||
type: string
|
||||
DataTaMahasiswaItem:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
judul:
|
||||
type: string
|
||||
nim:
|
||||
type: string
|
||||
pemb1:
|
||||
type: string
|
||||
pemb2:
|
||||
type: string
|
||||
peng1:
|
||||
type: string
|
||||
peng2:
|
||||
type: string
|
||||
semester:
|
||||
type: string
|
||||
tahun:
|
||||
type: string
|
||||
tanggalKeputusan:
|
||||
type: string
|
||||
waktuKeputusan:
|
||||
type: string
|
||||
kelompokKeahlian:
|
||||
type: string
|
||||
jadwal:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/JadwalItem'
|
||||
ListDataTaMahasiswaResponse:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: integer
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/DataTaMahasiswaItem'
|
||||
ManageJadwalBaseRequest:
|
||||
type: object
|
||||
required:
|
||||
- act
|
||||
- nim
|
||||
- judul
|
||||
- ruangan
|
||||
- jenis
|
||||
- waktuSidang
|
||||
- namaPemb1
|
||||
- namaPemb2
|
||||
- namaPeng1
|
||||
- namaPeng2
|
||||
properties:
|
||||
act:
|
||||
type: string
|
||||
secret:
|
||||
type: string
|
||||
nim:
|
||||
type: string
|
||||
judul:
|
||||
type: string
|
||||
ruangan:
|
||||
type: string
|
||||
jenis:
|
||||
type: string
|
||||
enum: [Outline, SidHas, Sidang]
|
||||
waktuSidang:
|
||||
type: string
|
||||
example: '2026-05-07 08:00:00'
|
||||
namaPemb1:
|
||||
type: string
|
||||
namaPemb2:
|
||||
type: string
|
||||
namaPeng1:
|
||||
type: string
|
||||
namaPeng2:
|
||||
type: string
|
||||
ManageJadwalAddRequest:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ManageJadwalBaseRequest'
|
||||
- type: object
|
||||
properties:
|
||||
act:
|
||||
type: string
|
||||
enum: [add]
|
||||
ManageJadwalUpdateRequest:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ManageJadwalBaseRequest'
|
||||
- type: object
|
||||
required: [id]
|
||||
properties:
|
||||
act:
|
||||
type: string
|
||||
enum: [update]
|
||||
id:
|
||||
type: integer
|
||||
ManageJadwalDeleteRequest:
|
||||
type: object
|
||||
required: [act, secret, id, nim]
|
||||
properties:
|
||||
act:
|
||||
type: string
|
||||
enum: [delete]
|
||||
secret:
|
||||
type: string
|
||||
id:
|
||||
type: integer
|
||||
nim:
|
||||
type: string
|
||||
111
steven/API/postBerkasSidangMahasiswa.php
Normal file
111
steven/API/postBerkasSidangMahasiswa.php
Normal file
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$loginMhs = requireSessionRole('mhs');
|
||||
$nim = isset($loginMhs['nim']) ? $loginMhs['nim'] : '';
|
||||
$idMhs = isset($loginMhs['id']) ? $loginMhs['id'] : 0;
|
||||
|
||||
$idJadwal = isset($_GET['idJadwal']) ? (int) $_GET['idJadwal'] : 0;
|
||||
if ($idJadwal <= 0) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Parameter idJadwal tidak valid'], 422);
|
||||
}
|
||||
|
||||
if (!isset($_POST['listKey'])) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Parameter listKey tidak lengkap'], 422);
|
||||
}
|
||||
|
||||
$listKey = json_decode($_POST['listKey'], true);
|
||||
if (!is_array($listKey) || empty($listKey)) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Format listKey tidak valid'], 422);
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM tbjadwal WHERE id = :idJadwal AND idMhs = :idMhs';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idJadwal', $idJadwal);
|
||||
$stmt->bindParam(':idMhs', $idMhs);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() === 0) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Forbidden'], 403);
|
||||
}
|
||||
|
||||
$namaFolder = 'dll';
|
||||
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
$jenisSidang = strtolower($row['jenis']);
|
||||
switch ($jenisSidang) {
|
||||
case 'outline': $namaFolder = 'Seminar Outline'; break;
|
||||
case 'sidhas': $namaFolder = 'Seminar Hasil'; break;
|
||||
case 'sidang': $namaFolder = 'Sidang Akhir'; break;
|
||||
}
|
||||
}
|
||||
|
||||
$urlAPIDrive = 'http://203.24.50.140/';
|
||||
$banyakSukses = 0;
|
||||
|
||||
foreach ($listKey as $key => $val) {
|
||||
if (isset($_FILES[$val])) {
|
||||
$tmpfile = $_FILES[$val]['tmp_name'];
|
||||
$filename = basename($_FILES[$val]['name']);
|
||||
$typeFile = $_FILES[$val]['type'];
|
||||
|
||||
$cFile = curl_file_create($tmpfile, $typeFile, $filename);
|
||||
|
||||
$post = ['nim' => $nim, 'file_gdrive' => $cFile, 'folderMhs' => $namaFolder];
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $urlAPIDrive);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_PORT, 8080);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
|
||||
curl_close($ch);
|
||||
|
||||
$decodedResult = json_decode($result, true);
|
||||
|
||||
if ($decodedResult['status'] == 1) {
|
||||
$fileId = $decodedResult['fileId'];
|
||||
|
||||
++$banyakSukses;
|
||||
$sql = 'SELECT * FROM tb_berkas_sidang WHERE idJadwal = :idJadwal AND nama = :nama';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idJadwal', $idJadwal);
|
||||
$stmt->bindParam(':nama', $val);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() == 0) {
|
||||
$sql = 'INSERT INTO tb_berkas_sidang(idJadwal, nama, driveId) VALUES(:idJadwal, :nama, :driveId)';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idJadwal', $idJadwal);
|
||||
$stmt->bindParam(':nama', $val);
|
||||
$stmt->bindParam(':driveId', $fileId);
|
||||
$stmt->execute();
|
||||
} else {
|
||||
$sql = 'UPDATE tb_berkas_sidang SET driveId = :driveId WHERE idJadwal = :idJadwal AND nama = :nama';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idJadwal', $idJadwal);
|
||||
$stmt->bindParam(':nama', $val);
|
||||
$stmt->bindParam(':driveId', $fileId);
|
||||
$stmt->execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'msg' => $banyakSukses.' file berhasil diupload',
|
||||
]);
|
||||
89
steven/API/postBerkasSidangMahasiswaNew.php
Normal file
89
steven/API/postBerkasSidangMahasiswaNew.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$loginMhs = requireSessionRole('mhs');
|
||||
$nim = $loginMhs['nim'];
|
||||
|
||||
$idRekapHasil = isset($_GET['idRekapHasil']) ? (int) $_GET['idRekapHasil'] : 0;
|
||||
$jenis = isset($_GET['jenis']) ? trim((string) $_GET['jenis']) : '';
|
||||
|
||||
if ($idRekapHasil <= 0 || $jenis === '' || !isset($_POST['data'])) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Parameter tidak lengkap'], 422);
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM tbrekaphasil WHERE id = :idRekapHasil AND nim = :nim';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':nim', $nim);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() === 0) {
|
||||
echo json_encode(['status' => false, 'msg' => 'Forbidden']);
|
||||
exit;
|
||||
}
|
||||
|
||||
// $namaFolder = 'dll';
|
||||
|
||||
// while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
// $jenisSidang = strtolower($row['jenis']);
|
||||
// switch ($jenisSidang) {
|
||||
// case 'outline': $namaFolder = 'Seminar Outline'; break;
|
||||
// case 'sidhas': $namaFolder = 'Seminar Hasil'; break;
|
||||
// case 'sidang': $namaFolder = 'Sidang Akhir'; break;
|
||||
// }
|
||||
// }
|
||||
|
||||
$listData = json_decode($_POST['data'], true);
|
||||
if (!is_array($listData)) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Format data tidak valid'], 422);
|
||||
}
|
||||
|
||||
$banyakSukses = 0;
|
||||
foreach ($listData as $key => $val) {
|
||||
if (!is_array($val) || empty($val['file']) || empty($val['nama'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$fileId = $val['file'];
|
||||
$namaFile = $val['nama'];
|
||||
|
||||
$sql = 'SELECT * FROM tb_berkas_sidang WHERE idRekapHasil = :idRekapHasil AND jenisSidang = :jenisSidang AND nama = :nama';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenisSidang', $jenis);
|
||||
$stmt->bindParam(':nama', $namaFile);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() == 0) {
|
||||
$sql = 'INSERT INTO tb_berkas_sidang(idRekapHasil, jenisSidang, nama, driveId) VALUES(:idRekapHasil, :jenisSidang, :nama, :driveId)';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenisSidang', $jenis);
|
||||
$stmt->bindParam(':nama', $namaFile);
|
||||
$stmt->bindParam(':driveId', $fileId);
|
||||
$stmt->execute();
|
||||
} else {
|
||||
$sql = 'UPDATE tb_berkas_sidang SET driveId = :driveId WHERE idRekapHasil = :idRekapHasil AND nama = :nama AND jenisSidang = :jenisSidang';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenisSidang', $jenis);
|
||||
$stmt->bindParam(':nama', $namaFile);
|
||||
$stmt->bindParam(':driveId', $fileId);
|
||||
$stmt->execute();
|
||||
}
|
||||
++$banyakSukses;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'msg' => $banyakSukses.' file berhasil diupload',
|
||||
]);
|
||||
185
steven/API/sendMail.php
Normal file
185
steven/API/sendMail.php
Normal file
@@ -0,0 +1,185 @@
|
||||
<?php
|
||||
|
||||
// use PHPMailer\PHPMailer\Exception;
|
||||
// use PHPMailer\PHPMailer\PHPMailer;
|
||||
|
||||
// require 'phpmailer/src/Exception.php';
|
||||
// require 'phpmailer/src/PHPMailer.php';
|
||||
// require 'phpmailer/src/SMTP.php';
|
||||
// $mail = new PHPMailer();
|
||||
|
||||
// $to = $_POST['to'];
|
||||
// $judul = $_POST['judul'];
|
||||
// $content = $_POST['content'];
|
||||
|
||||
// if (isset($_POST['from'])) {
|
||||
// $from = $_POST['from'];
|
||||
// $fromText = $from;
|
||||
// } else {
|
||||
// $from = 'system@spota.untan.ac.id';
|
||||
// $fromText = 'SPOTA Informatika UNTAN';
|
||||
// }
|
||||
|
||||
// $ch = curl_init();
|
||||
// $emailParams = [];
|
||||
// $emailParams['to'] = $to;
|
||||
// $emailParams['judul'] = $judul;
|
||||
// $emailParams['content'] = $content;
|
||||
// $emailParams['from'] = $from;
|
||||
|
||||
// $postdata = $emailParams;
|
||||
// curl_setopt($ch, CURLOPT_URL, 'https://informatika.untan.ac.id/API/sendMail.php');
|
||||
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
// curl_setopt($ch, CURLOPT_POST, 1);
|
||||
// curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
|
||||
// curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
// curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
||||
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
// curl_exec($ch);
|
||||
|
||||
// echo 'ok';
|
||||
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
require 'phpmailer/src/Exception.php';
|
||||
require 'phpmailer/src/PHPMailer.php';
|
||||
require 'phpmailer/src/SMTP.php';
|
||||
$mail = new PHPMailer();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
requireRobotSecret();
|
||||
|
||||
$to = isset($_POST['to']) ? $_POST['to'] : '[]';
|
||||
$judul = isset($_POST['judul']) ? $_POST['judul'] : '';
|
||||
$content = isset($_POST['content']) ? $_POST['content'] : '';
|
||||
|
||||
if ($judul === '' || $content === '') {
|
||||
jsonResponse(['status' => 0, 'msg' => 'Parameter tidak lengkap'], 422);
|
||||
}
|
||||
|
||||
if (isset($_POST['from'])) {
|
||||
$from = $_POST['from'];
|
||||
$fromText = $from;
|
||||
} else {
|
||||
$from = 'system@spota.untan.ac.id';
|
||||
$fromText = 'SPOTA Informatika UNTAN';
|
||||
}
|
||||
|
||||
try {
|
||||
//Server settings
|
||||
//$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output
|
||||
$mail->isSMTP(); // Send using SMTP
|
||||
$mail->Host = (string) (getenv('SPOTA_SMTP_HOST') ?: 'smtp.gmail.com');
|
||||
$mail->SMTPAuth = true;
|
||||
$mail->SMTPDebug = 0;
|
||||
//$mail->SMTPSecure = 'tls'; // Enable SMTP authentication
|
||||
//gmail
|
||||
// $mail->Username = 'mail.informatika.untan@gmail.com'; // SMTP username
|
||||
// $mail->Password = 'informatikauntan247mail'; // SMTP password
|
||||
$mail->Username = (string) (getenv('SPOTA_SMTP_USERNAME') ?: 'tu1@informatika.untan.ac.id');
|
||||
$mail->Password = (string) (getenv('SPOTA_SMTP_PASSWORD') ?: 'IFuntanpnk-2020');
|
||||
|
||||
$mail->Port = (int) (getenv('SPOTA_SMTP_PORT') ?: 587);
|
||||
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
|
||||
|
||||
// $mail->SMTPOptions = [
|
||||
// 'ssl' => [
|
||||
// 'verify_peer' => false,
|
||||
// 'verify_peer_name' => false,
|
||||
// 'allow_self_signed' => true,
|
||||
// ],
|
||||
// ];
|
||||
//Recipients
|
||||
$mail->setFrom($from, $fromText);
|
||||
$toArr = json_decode($to, 1);
|
||||
|
||||
if (!is_array($toArr) || empty($toArr)) {
|
||||
jsonResponse(['status' => 0, 'msg' => 'Penerima email tidak valid'], 422);
|
||||
}
|
||||
|
||||
foreach ($toArr as $key => $val) {
|
||||
$mail->addAddress(trim($val), $val); // Add a recipient
|
||||
}
|
||||
//$mail->addReplyTo('info@example.com', 'Information');
|
||||
//$mail->addCC('cc@example.com');
|
||||
//$mail->addBCC('bcc@example.com');
|
||||
|
||||
// Attachments
|
||||
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
|
||||
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
|
||||
|
||||
// Content
|
||||
$mail->isHTML(true); // Set email format to HTML
|
||||
$mail->Subject = $judul;
|
||||
$mail->Body = $content;
|
||||
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
|
||||
|
||||
if ($mail->send()) {
|
||||
echo json_encode(['status' => 1, 'msg' => 'Message has been sent']);
|
||||
} else {
|
||||
echo json_encode(['status' => 0, 'msg' => 'Mailer Error: '.$mail->ErrorInfo]);
|
||||
}
|
||||
//;
|
||||
} catch (Exception $e) {
|
||||
echo json_encode(['status' => 0, 'msg' => "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"]);
|
||||
}
|
||||
|
||||
// try {
|
||||
// //Server settings
|
||||
// //$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output
|
||||
// $mail->isSMTP(); // Send using SMTP
|
||||
// $mail->Host = 'smtp.gmail.com'; // Set the SMTP server to send through
|
||||
// $mail->SMTPAuth = true;
|
||||
// $mail->SMTPDebug = 4;
|
||||
// //$mail->SMTPSecure = 'tls'; // Enable SMTP authentication
|
||||
// //gmail
|
||||
// $mail->Username = 'mail.informatika.untan@gmail.com'; // SMTP username
|
||||
// $mail->Password = 'informatikauntan247mail'; // SMTP password
|
||||
// $mail->Port = 587; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` abov
|
||||
|
||||
// $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
|
||||
|
||||
// // $mail->SMTPOptions = [
|
||||
// // 'ssl' => [
|
||||
// // 'verify_peer' => false,
|
||||
// // 'verify_peer_name' => false,
|
||||
// // 'allow_self_signed' => true,
|
||||
// // ],
|
||||
// // ];
|
||||
// //Recipients
|
||||
// $mail->setFrom($from, $fromText);
|
||||
// $toArr = json_decode($to, 1);
|
||||
|
||||
// foreach ($toArr as $key => $val) {
|
||||
// $mail->addAddress(trim($val), $val); // Add a recipient
|
||||
// }
|
||||
// //$mail->addReplyTo('info@example.com', 'Information');
|
||||
// //$mail->addCC('cc@example.com');
|
||||
// //$mail->addBCC('bcc@example.com');
|
||||
|
||||
// // Attachments
|
||||
// //$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
|
||||
// //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
|
||||
|
||||
// // Content
|
||||
// $mail->isHTML(true); // Set email format to HTML
|
||||
// $mail->Subject = $judul;
|
||||
// $mail->Body = $content;
|
||||
// //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
|
||||
|
||||
// if ($mail->send()) {
|
||||
// echo 'Message has been sent';
|
||||
// } else {
|
||||
// echo 'error message';
|
||||
// echo 'Mailer Error: '.$mail->ErrorInfo;
|
||||
// }
|
||||
// //;
|
||||
// } catch (Exception $e) {
|
||||
// echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
|
||||
// }
|
||||
105
steven/API/sendMail_manual.php
Normal file
105
steven/API/sendMail_manual.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
// use PHPMailer\PHPMailer\PHPMailer;
|
||||
// use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
// require 'phpmailer/src/Exception.php';
|
||||
// require 'phpmailer/src/PHPMailer.php';
|
||||
// require 'phpmailer/src/SMTP.php';
|
||||
// $mail = new PHPMailer();
|
||||
|
||||
$to = isset($_POST['to']) ? $_POST['to'] : '[]';
|
||||
$judul = isset($_POST['judul']) ? $_POST['judul'] : '';
|
||||
$content = isset($_POST['content']) ? $_POST['content'] : '';
|
||||
|
||||
if ($judul === '' || $content === '') {
|
||||
jsonResponse(['status' => 0, 'msg' => 'Parameter tidak lengkap'], 422);
|
||||
}
|
||||
|
||||
if(isset($_POST['from'])){
|
||||
$from = $_POST['from'];
|
||||
}else{
|
||||
$from = "system@spota.untan.ac.id";
|
||||
}
|
||||
|
||||
$toArr = json_decode($to, 1);
|
||||
$emailTujuan = '';
|
||||
if (is_array($toArr) && sizeof($toArr) > 0) {
|
||||
$emailTujuan = implode(', ', $toArr);
|
||||
} else {
|
||||
jsonResponse(['status' => 0, 'msg' => 'Penerima email tidak valid'], 422);
|
||||
}
|
||||
|
||||
$headers = 'MIME-Version: 1.0'."\r\n";
|
||||
$headers .= 'Content-type:text/html;charset=UTF-8'."\r\n";
|
||||
$headers .= "From: $from";
|
||||
|
||||
$result = mail($emailTujuan, $judul, $content, $headers);
|
||||
echo json_encode([
|
||||
'status' => $result ? 1 : 0,
|
||||
'msg' => $result ? 'Message has been sent' : 'Message could not be sent',
|
||||
]);
|
||||
// try {
|
||||
// //Server settings
|
||||
// //$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output
|
||||
// $mail->isSMTP(); // Send using SMTP
|
||||
// $mail->Host = 'smtp.gmail.com'; // Set the SMTP server to send through
|
||||
// $mail->SMTPAuth = true; // Enable SMTP authentication
|
||||
// $mail->SMTPDebug = 4;
|
||||
// //gmail
|
||||
// $mail->Username = 'spota.ifuntan@gmail.com'; // SMTP username
|
||||
// $mail->Password = 'Steven123!@#'; // SMTP password
|
||||
|
||||
// $mail->Port = 587; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` abov
|
||||
|
||||
// $mail->SMTPOptions = array(
|
||||
// 'ssl' => array(
|
||||
// 'verify_peer' => false,
|
||||
// 'verify_peer_name' => false,
|
||||
// 'allow_self_signed' => true,
|
||||
// ),
|
||||
// );
|
||||
|
||||
// $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
|
||||
|
||||
// //Recipients
|
||||
// $mail->setFrom('spota.ifuntan@gmail.com', 'SPOTA IF UNTAN');
|
||||
// $mail->addReplyTo('spota.ifuntan@gmail.com', 'SPOTA IF UNTAN');
|
||||
|
||||
// $toArr = json_decode($to, 1);
|
||||
// if (sizeof($toArr) > 0) {
|
||||
// for ($i = 0; $i < sizeof($toArr); ++$i) {
|
||||
// if ($i === 0) {
|
||||
// $mail->addAddress($toArr[$i], ''); // Add a recipient
|
||||
// } else {
|
||||
// $mail->addCC($toArr[$i]);
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// exit();
|
||||
// }
|
||||
// //$mail->addCC('cc@example.com');
|
||||
// //$mail->addBCC('bcc@example.com');
|
||||
|
||||
// // Attachments
|
||||
// //$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
|
||||
// //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
|
||||
|
||||
// // Content
|
||||
// $mail->isHTML(true); // Set email format to HTML
|
||||
// $mail->Subject = $judul;
|
||||
// $mail->Body = $content;
|
||||
// //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
|
||||
|
||||
// $mail->send();
|
||||
// //echo 'Message has been sent';
|
||||
// } catch (Exception $e) {
|
||||
// //echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
|
||||
// }
|
||||
66
steven/API/verifBerkasAdmin.php
Normal file
66
steven/API/verifBerkasAdmin.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$loginAdmin = requireSessionRole('admin');
|
||||
|
||||
$idRekapHasil = isset($_POST['idRekap']) ? (int) $_POST['idRekap'] : 0;
|
||||
$jenis = isset($_POST['jenis']) ? trim((string) $_POST['jenis']) : '';
|
||||
$catatan = isset($_POST['catatan']) ? (string) $_POST['catatan'] : '';
|
||||
$listData = isset($_POST['dataVerif']) ? json_decode($_POST['dataVerif'], true) : null;
|
||||
|
||||
if ($idRekapHasil <= 0 || $jenis === '' || !is_array($listData)) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Parameter tidak lengkap'], 422);
|
||||
}
|
||||
|
||||
$sql = 'SELECT id FROM tb_verif_berkas WHERE idRekapHasil = :idRekapHasil AND jenisSidang = :jenis';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenis', $jenis);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() === 0) {
|
||||
$sql = 'INSERT INTO tb_verif_berkas(idRekapHasil, jenisSidang, catatanDariAdmin, verifPemb1, verifPemb2, verifPeng1, verifPeng2) VALUES(:idRekapHasil, :jenis, :catatan, 0, 0, 0, 0)';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenis', $jenis);
|
||||
$stmt->bindParam(':catatan', $catatan);
|
||||
$stmt->execute();
|
||||
}
|
||||
|
||||
$sql = 'UPDATE tb_verif_berkas SET catatanDariAdmin = :catatan WHERE idRekapHasil = :idRekapHasil AND jenisSidang = :jenis';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':catatan', $catatan);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenis', $jenis);
|
||||
$stmt->execute();
|
||||
|
||||
foreach ($listData as $key => $val) {
|
||||
if (!is_array($val) || !isset($val['id']) || !isset($val['verif'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$id = $val['id'];
|
||||
$verif = $val['verif'];
|
||||
|
||||
$sql = 'UPDATE tb_berkas_sidang SET status = :status WHERE idBerkas = :id AND idRekapHasil = :idRekapHasil AND jenisSidang = :jenis';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':status', $verif);
|
||||
$stmt->bindParam(':id', $id);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenis', $jenis);
|
||||
$stmt->execute();
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'msg' => 'Verifikasi berhasil',
|
||||
]);
|
||||
72
steven/API/verifBerkasDosen.php
Normal file
72
steven/API/verifBerkasDosen.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$loginDosen = requireSessionRole('dosen');
|
||||
|
||||
$idRekapHasil = isset($_POST['idRekap']) ? (int) $_POST['idRekap'] : 0;
|
||||
$jenis = isset($_POST['jenis']) ? trim((string) $_POST['jenis']) : '';
|
||||
$verif = isset($_POST['verif']) ? (int) $_POST['verif'] : 0;
|
||||
$sebagai = isset($_POST['sebagai']) ? trim((string) $_POST['sebagai']) : '';
|
||||
|
||||
if ($idRekapHasil <= 0 || $jenis === '' || $sebagai === '') {
|
||||
jsonResponse(['status' => false, 'msg' => 'Parameter tidak lengkap'], 422);
|
||||
}
|
||||
|
||||
$sql = 'SELECT pemb1, pemb2, peng1, peng2 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' => false, 'msg' => 'Data Not Found'], 404);
|
||||
}
|
||||
|
||||
$dosenNip = isset($loginDosen['nip']) ? (string) $loginDosen['nip'] : '';
|
||||
|
||||
switch ($sebagai) {
|
||||
case 'pemb1': $fieldName = 'verifPemb1'; $expectedNip = (string) $rekap['pemb1']; break;
|
||||
case 'pemb2': $fieldName = 'verifPemb2'; $expectedNip = (string) $rekap['pemb2']; break;
|
||||
case 'peng1': $fieldName = 'verifPeng1'; $expectedNip = (string) $rekap['peng1']; break;
|
||||
case 'peng2': $fieldName = 'verifPeng2'; $expectedNip = (string) $rekap['peng2']; break;
|
||||
default: jsonResponse(['status' => false, 'msg' => 'Status Dosen Tidak Dikenali'], 422);
|
||||
}
|
||||
|
||||
if ($expectedNip === '' || $expectedNip !== $dosenNip) {
|
||||
jsonResponse(['status' => false, 'msg' => 'Forbidden'], 403);
|
||||
}
|
||||
|
||||
$sql = 'SELECT id FROM tb_verif_berkas WHERE idRekapHasil = :idRekapHasil AND jenisSidang = :jenis';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenis', $jenis);
|
||||
$stmt->execute();
|
||||
|
||||
if ($stmt->rowCount() === 0) {
|
||||
$sql = 'INSERT INTO tb_verif_berkas(idRekapHasil, jenisSidang, catatanDariAdmin, verifPemb1, verifPemb2, verifPeng1, verifPeng2) VALUES(:idRekapHasil, :jenis, "", 0, 0, 0, 0)';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenis', $jenis);
|
||||
$stmt->execute();
|
||||
}
|
||||
|
||||
$sql = "UPDATE tb_verif_berkas SET {$fieldName} = :verif WHERE idRekapHasil = :idRekapHasil AND jenisSidang = :jenis";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':verif', $verif);
|
||||
$stmt->bindParam(':idRekapHasil', $idRekapHasil);
|
||||
$stmt->bindParam(':jenis', $jenis);
|
||||
$stmt->execute();
|
||||
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'msg' => 'Verifikasi berhasil',
|
||||
]);
|
||||
390
steven/API/willy_manageJadwal.php
Normal file
390
steven/API/willy_manageJadwal.php
Normal file
@@ -0,0 +1,390 @@
|
||||
<?php
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
$jsonData = getRequestJson();
|
||||
$act = isset($jsonData['act']) ? trim((string) $jsonData['act']) : '';
|
||||
|
||||
if ($act === '') {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'Parameter act tidak lengkap',
|
||||
], 422);
|
||||
}
|
||||
|
||||
function getManageJadwalTitle($jenis, $namaMahasiswa, $nimMahasiswa)
|
||||
{
|
||||
$judulSeminar = '';
|
||||
switch ($jenis) {
|
||||
case 'Outline':
|
||||
$judulSeminar = 'Seminar Outline';
|
||||
break;
|
||||
case 'SidHas':
|
||||
$judulSeminar = 'Sidang Hasil';
|
||||
break;
|
||||
case 'Sidang':
|
||||
$judulSeminar = 'Sidang Terbuka';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($judulSeminar === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $judulSeminar.' '.$namaMahasiswa.' / '.$nimMahasiswa;
|
||||
}
|
||||
|
||||
function loadMahasiswaByNim($dbh, $nim)
|
||||
{
|
||||
$sql = 'SELECT * FROM tbmhs WHERE nim = :nim';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':nim', $nim);
|
||||
$stmt->execute();
|
||||
|
||||
$mahasiswa = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$mahasiswa) {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'NIM mahasiswa tidak dikenali',
|
||||
], 404);
|
||||
}
|
||||
|
||||
return $mahasiswa;
|
||||
}
|
||||
|
||||
function loadDosenMeta($dbh, $namaPemb1, $namaPemb2, $namaPeng1, $namaPeng2)
|
||||
{
|
||||
$namaList = [$namaPemb1, $namaPemb2, $namaPeng1, $namaPeng2];
|
||||
$placeholders = [];
|
||||
$params = [];
|
||||
|
||||
foreach ($namaList as $index => $nama) {
|
||||
$key = ':nama'.$index;
|
||||
$placeholders[] = $key;
|
||||
$params[$key] = $nama;
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM tbdosen WHERE nmLengkap IN ('.implode(', ', $placeholders).')';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->execute($params);
|
||||
|
||||
$result = [
|
||||
'listEmail' => [],
|
||||
'idPemb1' => 0,
|
||||
'idPemb2' => 0,
|
||||
'idPeng1' => 0,
|
||||
'idPeng2' => 0,
|
||||
];
|
||||
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
if (!empty($row['email'])) {
|
||||
$result['listEmail'][] = $row['email'];
|
||||
}
|
||||
|
||||
if ($namaPemb1 === $row['nmLengkap']) {
|
||||
$result['idPemb1'] = (int) $row['iddosen'];
|
||||
}
|
||||
|
||||
if ($namaPemb2 === $row['nmLengkap']) {
|
||||
$result['idPemb2'] = (int) $row['iddosen'];
|
||||
}
|
||||
|
||||
if ($namaPeng1 === $row['nmLengkap']) {
|
||||
$result['idPeng1'] = (int) $row['iddosen'];
|
||||
}
|
||||
|
||||
if ($namaPeng2 === $row['nmLengkap']) {
|
||||
$result['idPeng2'] = (int) $row['iddosen'];
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function callCalendarApi($endpoint, $payload)
|
||||
{
|
||||
$url = 'http://203.24.50.140:8086/'.$endpoint;
|
||||
$postData = json_encode($payload);
|
||||
$opts = [
|
||||
'http' => [
|
||||
'method' => 'POST',
|
||||
'ignore_errors' => true,
|
||||
'header' => 'Content-Type: application/json',
|
||||
'content' => $postData,
|
||||
'timeout' => 20,
|
||||
],
|
||||
];
|
||||
|
||||
$context = stream_context_create($opts);
|
||||
$response = @file_get_contents($url, false, $context);
|
||||
if ($response === false || trim($response) === '') {
|
||||
return [];
|
||||
}
|
||||
|
||||
$decoded = json_decode($response, true);
|
||||
|
||||
return is_array($decoded) ? $decoded : [];
|
||||
}
|
||||
|
||||
function buildCalendarPayload($jenis, $namaMahasiswa, $nimMahasiswa, $ruangan, $waktuSidang, $listEmail, $calendarId = null)
|
||||
{
|
||||
$timestampStartSeminar = strtotime($waktuSidang);
|
||||
if ($timestampStartSeminar === false) {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'Format waktuSidang tidak valid',
|
||||
], 422);
|
||||
}
|
||||
|
||||
$timestampEndSeminar = strtotime('+2 hours', $timestampStartSeminar);
|
||||
$payload = [
|
||||
'judul' => getManageJadwalTitle($jenis, $namaMahasiswa, $nimMahasiswa),
|
||||
'ruangan' => $ruangan,
|
||||
'start' => date('Y-m-d\TH:i:s', $timestampStartSeminar),
|
||||
'end' => date('Y-m-d\TH:i:s', $timestampEndSeminar),
|
||||
'emailUser' => array_values(array_unique(array_filter($listEmail))),
|
||||
];
|
||||
|
||||
if ($calendarId !== null && $calendarId !== '') {
|
||||
$payload['id'] = $calendarId;
|
||||
}
|
||||
|
||||
return $payload;
|
||||
}
|
||||
|
||||
function getManageJadwalParams($jsonData, $needsId)
|
||||
{
|
||||
$required = [
|
||||
'nim',
|
||||
'judul',
|
||||
'ruangan',
|
||||
'jenis',
|
||||
'waktuSidang',
|
||||
'namaPemb1',
|
||||
'namaPemb2',
|
||||
'namaPeng1',
|
||||
'namaPeng2',
|
||||
];
|
||||
|
||||
if ($needsId) {
|
||||
$required[] = 'id';
|
||||
}
|
||||
|
||||
foreach ($required as $field) {
|
||||
if (!isset($jsonData[$field]) || trim((string) $jsonData[$field]) === '') {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'Parameter tidak lengkap',
|
||||
], 422);
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'id' => $needsId ? (int) $jsonData['id'] : 0,
|
||||
'nim' => trim((string) $jsonData['nim']),
|
||||
'judul' => trim((string) $jsonData['judul']),
|
||||
'ruangan' => trim((string) $jsonData['ruangan']),
|
||||
'jenis' => trim((string) $jsonData['jenis']),
|
||||
'waktuSidang' => trim((string) $jsonData['waktuSidang']),
|
||||
'namaPemb1' => trim((string) $jsonData['namaPemb1']),
|
||||
'namaPemb2' => trim((string) $jsonData['namaPemb2']),
|
||||
'namaPeng1' => trim((string) $jsonData['namaPeng1']),
|
||||
'namaPeng2' => trim((string) $jsonData['namaPeng2']),
|
||||
];
|
||||
}
|
||||
|
||||
switch ($act) {
|
||||
case 'add':
|
||||
$params = getManageJadwalParams($jsonData, false);
|
||||
$mahasiswa = loadMahasiswaByNim($dbh, $params['nim']);
|
||||
$dosenMeta = loadDosenMeta(
|
||||
$dbh,
|
||||
$params['namaPemb1'],
|
||||
$params['namaPemb2'],
|
||||
$params['namaPeng1'],
|
||||
$params['namaPeng2']
|
||||
);
|
||||
|
||||
$listEmail = $dosenMeta['listEmail'];
|
||||
if (!empty($mahasiswa['email'])) {
|
||||
$listEmail[] = $mahasiswa['email'];
|
||||
}
|
||||
|
||||
$calendarPayload = buildCalendarPayload(
|
||||
$params['jenis'],
|
||||
$mahasiswa['nmLengkap'],
|
||||
$mahasiswa['nim'],
|
||||
$params['ruangan'],
|
||||
$params['waktuSidang'],
|
||||
$listEmail
|
||||
);
|
||||
$calendarResponse = callCalendarApi('insertJadwal', $calendarPayload);
|
||||
$calendarId = isset($calendarResponse['id']) ? $calendarResponse['id'] : null;
|
||||
$calendarLink = isset($calendarResponse['link']) ? $calendarResponse['link'] : null;
|
||||
|
||||
$sql = "INSERT INTO tbjadwal(idMhs, judul, ruangan, jenis, start, pemb1, pemb2, peng1, peng2, end, idProdi, calendarId, calendarLink, idPemb1, idPemb2, idPeng1, idPeng2) VALUES(:idMhs, :judul, :ruangan, :jenis, :waktuSidang, :namaPemb1, :namaPemb2, :namaPeng1, :namaPeng2, '2000-01-01 00:00:00', '2', :calendarId, :calendarLink, :idPemb1, :idPemb2, :idPeng1, :idPeng2)";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindValue(':idMhs', $mahasiswa['idmhs']);
|
||||
$stmt->bindValue(':judul', $params['judul']);
|
||||
$stmt->bindValue(':ruangan', $params['ruangan']);
|
||||
$stmt->bindValue(':jenis', $params['jenis']);
|
||||
$stmt->bindValue(':waktuSidang', $params['waktuSidang']);
|
||||
$stmt->bindValue(':namaPemb1', $params['namaPemb1']);
|
||||
$stmt->bindValue(':namaPemb2', $params['namaPemb2']);
|
||||
$stmt->bindValue(':namaPeng1', $params['namaPeng1']);
|
||||
$stmt->bindValue(':namaPeng2', $params['namaPeng2']);
|
||||
$stmt->bindValue(':calendarId', $calendarId);
|
||||
$stmt->bindValue(':calendarLink', $calendarLink);
|
||||
$stmt->bindValue(':idPemb1', $dosenMeta['idPemb1']);
|
||||
$stmt->bindValue(':idPemb2', $dosenMeta['idPemb2']);
|
||||
$stmt->bindValue(':idPeng1', $dosenMeta['idPeng1']);
|
||||
$stmt->bindValue(':idPeng2', $dosenMeta['idPeng2']);
|
||||
$stmt->execute();
|
||||
|
||||
$error = $stmt->errorInfo();
|
||||
if ($error[0] !== '00000') {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'Terjadi kesalahan teknis!!!',
|
||||
'error' => $error,
|
||||
], 500);
|
||||
}
|
||||
|
||||
jsonResponse([
|
||||
'status' => true,
|
||||
'msg' => 'Berhasil menambah data jadwal!!!',
|
||||
'id' => $dbh->lastInsertId(),
|
||||
'link' => $calendarLink,
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
$params = getManageJadwalParams($jsonData, true);
|
||||
$mahasiswa = loadMahasiswaByNim($dbh, $params['nim']);
|
||||
$dosenMeta = loadDosenMeta(
|
||||
$dbh,
|
||||
$params['namaPemb1'],
|
||||
$params['namaPemb2'],
|
||||
$params['namaPeng1'],
|
||||
$params['namaPeng2']
|
||||
);
|
||||
|
||||
$listEmail = $dosenMeta['listEmail'];
|
||||
if (!empty($mahasiswa['email'])) {
|
||||
$listEmail[] = $mahasiswa['email'];
|
||||
}
|
||||
|
||||
$sql = 'SELECT calendarId FROM tbjadwal WHERE id = :id';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindValue(':id', $params['id']);
|
||||
$stmt->execute();
|
||||
$jadwal = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
$calendarId = $jadwal ? $jadwal['calendarId'] : null;
|
||||
|
||||
$sql = 'UPDATE tbjadwal SET idMhs = :idMhs, judul = :judul, ruangan = :ruangan, jenis = :jenis, start = :waktuSidang, pemb1 = :namaPemb1, pemb2 = :namaPemb2, peng1 = :namaPeng1, peng2 = :namaPeng2, idPemb1 = :idPemb1, idPemb2 = :idPemb2, idPeng1 = :idPeng1, idPeng2 = :idPeng2 WHERE id = :id';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindValue(':id', $params['id']);
|
||||
$stmt->bindValue(':idMhs', $mahasiswa['idmhs']);
|
||||
$stmt->bindValue(':judul', $params['judul']);
|
||||
$stmt->bindValue(':ruangan', $params['ruangan']);
|
||||
$stmt->bindValue(':jenis', $params['jenis']);
|
||||
$stmt->bindValue(':waktuSidang', $params['waktuSidang']);
|
||||
$stmt->bindValue(':namaPemb1', $params['namaPemb1']);
|
||||
$stmt->bindValue(':namaPemb2', $params['namaPemb2']);
|
||||
$stmt->bindValue(':namaPeng1', $params['namaPeng1']);
|
||||
$stmt->bindValue(':namaPeng2', $params['namaPeng2']);
|
||||
$stmt->bindValue(':idPemb1', $dosenMeta['idPemb1']);
|
||||
$stmt->bindValue(':idPemb2', $dosenMeta['idPemb2']);
|
||||
$stmt->bindValue(':idPeng1', $dosenMeta['idPeng1']);
|
||||
$stmt->bindValue(':idPeng2', $dosenMeta['idPeng2']);
|
||||
$stmt->execute();
|
||||
|
||||
$error = $stmt->errorInfo();
|
||||
if ($error[0] !== '00000') {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'Terjadi kesalahan teknis!!!',
|
||||
'error' => $error,
|
||||
], 500);
|
||||
}
|
||||
|
||||
if (!empty($calendarId)) {
|
||||
$calendarPayload = buildCalendarPayload(
|
||||
$params['jenis'],
|
||||
$mahasiswa['nmLengkap'],
|
||||
$mahasiswa['nim'],
|
||||
$params['ruangan'],
|
||||
$params['waktuSidang'],
|
||||
$listEmail,
|
||||
$calendarId
|
||||
);
|
||||
callCalendarApi('updateJadwal', $calendarPayload);
|
||||
}
|
||||
|
||||
jsonResponse([
|
||||
'status' => true,
|
||||
'msg' => 'Berhasil mengubah data jadwal!!!',
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
if (!isset($jsonData['id'], $jsonData['nim']) || trim((string) $jsonData['id']) === '' || trim((string) $jsonData['nim']) === '') {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'Parameter tidak lengkap',
|
||||
], 422);
|
||||
}
|
||||
|
||||
$id = (int) $jsonData['id'];
|
||||
$nim = trim((string) $jsonData['nim']);
|
||||
$mahasiswa = loadMahasiswaByNim($dbh, $nim);
|
||||
|
||||
$sql = 'SELECT calendarId FROM tbjadwal WHERE id = :id';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindValue(':id', $id);
|
||||
$stmt->execute();
|
||||
$jadwal = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
$calendarId = $jadwal ? $jadwal['calendarId'] : null;
|
||||
|
||||
$sql = 'DELETE FROM tbjadwal WHERE id = :id AND idMhs = :idMhs';
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindValue(':id', $id);
|
||||
$stmt->bindValue(':idMhs', $mahasiswa['idmhs']);
|
||||
$stmt->execute();
|
||||
|
||||
$error = $stmt->errorInfo();
|
||||
if ($error[0] !== '00000') {
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'Terjadi kesalahan teknis!!!',
|
||||
'error' => $error,
|
||||
], 500);
|
||||
}
|
||||
|
||||
if (!empty($calendarId)) {
|
||||
callCalendarApi('deleteJadwal', [
|
||||
'id' => $calendarId,
|
||||
]);
|
||||
}
|
||||
|
||||
jsonResponse([
|
||||
'status' => true,
|
||||
'msg' => 'Berhasil menghapus data jadwal!!!',
|
||||
]);
|
||||
break;
|
||||
|
||||
default:
|
||||
jsonResponse([
|
||||
'status' => false,
|
||||
'msg' => 'act tidak dikenali',
|
||||
], 422);
|
||||
}
|
||||
78
steven/API/willy_updateDataRekapHasil.php
Normal file
78
steven/API/willy_updateDataRekapHasil.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', '0');
|
||||
|
||||
include '../conf/class.server.php';
|
||||
include '../conf/koneksiPDO.php';
|
||||
include '../conf/function.php';
|
||||
|
||||
header("Content-Type: application/json");
|
||||
|
||||
$conn = new createCon();
|
||||
$dbh = $conn->connect();
|
||||
$jsonData = getRequestJson();
|
||||
|
||||
requireRobotSecret();
|
||||
|
||||
$act = isset($jsonData['act']) ? $jsonData['act'] : '';
|
||||
|
||||
// if($jsonData['nim'] != "D03111037"){
|
||||
// echo json_encode([
|
||||
// 'status' => false,
|
||||
// 'msg' => "NIM yang diinjikan hanya D03111037",
|
||||
// ]);
|
||||
// exit;
|
||||
// }
|
||||
|
||||
switch($act){
|
||||
case 'update' :
|
||||
if(!(empty($jsonData['id']) || empty($jsonData['judul']))){
|
||||
$id = $jsonData['id'];
|
||||
$judul = $jsonData['judul'];
|
||||
|
||||
$sql = "UPDATE tbrekaphasil SET judul_final = :judul WHERE id = :id";
|
||||
$stmt = $dbh->prepare($sql);
|
||||
$stmt->bindParam(':id', $id);
|
||||
$stmt->bindParam(':judul', $judul);
|
||||
$stmt->execute();
|
||||
|
||||
$error = $stmt->errorInfo();
|
||||
|
||||
$isError = true;
|
||||
|
||||
if ($error[0] == '00000') {
|
||||
$isError = false;
|
||||
}
|
||||
|
||||
if ($isError) {
|
||||
echo json_encode(
|
||||
[
|
||||
'status' => false,
|
||||
'msg' => 'Terjadi kesalahan teknis!!!',
|
||||
]
|
||||
);
|
||||
} else {
|
||||
echo json_encode(
|
||||
[
|
||||
'status' => true,
|
||||
'msg' => 'Berhasil mengubah data!!!',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
}else{
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'msg' => "Parameter tidak lengkap",
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
default :
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'msg' => "Parameter tidak lengkap",
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
Reference in New Issue
Block a user