⚝
One Hat Cyber Team
⚝
Your IP:
192.168.31.6
Server IP:
192.168.1.11
Server:
Linux pams 6.1.0-29-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
PHP Version:
8.2.28
Buat File
|
Buat Folder
Upload File
Eksekusi
Dir :
~
/
var
/
www
/
lppm
/
Modules
/
Api
/
Controllers
/
Viewing : Api.php
<?php namespace Modules\Api\Controllers; use App\Controllers\BaseController; use CodeIgniter\API\ResponseTrait; use Ramsey\Uuid\Uuid; use Modules\Backend\Berita\Models\BeritaModel; class Api extends BaseController { use ResponseTrait; public function index() { echo "SIPP Mas OK"; } public function login() { helper('jwt'); $input = $this->request->getJSON(true); $email = $input['email'] ?? ''; $password = $input['password'] ?? ''; $user['email'] = 'lppm@uidepok.ac.id'; $user['password'] = '$2y$10$LS4vB2CYNPD18xYiAnanuu2NBW2VD3L9QWdaptrKGjG3tu4zjdiNG'; if($user['email'] != $email){ return $this->failUnauthorized('User Not Found'); } // Verifikasi User dan Password if (!password_verify($password, $user['password'])) { return $this->failUnauthorized('Invalid Credentials'); } $payload = [ 'email' => $user['email'], ]; $token = createJWT($payload); return $this->respond([ 'message' => 'Login Successful', 'email' => $user['email'], 'token' => $token ], 200); } public function anggotakelompok(){ $p = $this->request->getJSON(true); $id = $p['id']; $ta = $p['ta']; $data = $this->db->table('anggota') ->join('kelompok', 'anggota.id_kelompok = kelompok.id') ->where(['id_anggota' => $id]) ->get()->getResultArray(); if (empty($data)) { $data = []; } return $this->respond([ 'message' => 'Successful', 'data' => $data ], 200); } public function detailkelompok(){ $p = $this->request->getJSON(true); $id = $p['id']; $data['kelompok'] = $this->db->table('kelompok') ->where('id', $id)->get()->getRow(); $data['anggota_dosen'] = $this->db->table('anggota') ->select('anggota.*, dosen.nama, dosen.nip, dosen.id_dosen') ->join('dosen', 'anggota.id_anggota = dosen.id_dosen') ->join('kelompok', 'kelompok.id = anggota.id_kelompok') ->where('kelompok.id', $id) ->orderBy('anggota.ketua', 'DESC') ->get()->getResult(); $data['anggota_mhs'] = $this->db->table('anggota') ->select('anggota.*, mhs.nama, mhs.nim, mhs.id_mhs') ->join('mhs', 'anggota.id_anggota = mhs.id_mhs') ->join('kelompok', 'kelompok.id = anggota.id_kelompok') ->where('kelompok.id', $id) ->orderBy('anggota.ketua', 'DESC') ->get()->getResult(); $data['kk'] = 'Belum Di set'; foreach ($data['anggota_mhs'] as $k) { if($k->ketua == 'Ketua'){ $data['kk'] = $k->nama; } } foreach ($data['anggota_dosen'] as $k) { if($k->ketua == 'Ketua'){ $data['kk'] = $k->nama; } } $data['dosen'] = $this->db->table('dosen')->where('homebase !=', 0)->get()->getResult(); $data['mhs'] = $this->db->table('mhs')->get()->getResult(); return $this->respond([ 'message' => 'Successful', 'data' => $data ], 200); } public function updatekelompok(){ $p = $this->request->getJSON(true); $id = $p['id']; $db = $this->db->table('kelompok')->where('id', $id); if($p['type'] == 'judul'){ $db->update(['judul' => $p['isian']]); }elseif($p['type'] == 'publikasi'){ $db->update(['link_publikasi' => $p['isian']]); }else{ return $this->fail([ 'message' => 'Parameter Tidak Ditemukan', 'data' => [] ], 400); } return $this->respond([ 'message' => 'Successful', 'data' => [] ], 200); } public function updatedokumen(){ $p = $this->request->getJSON(true); $id = $p['id']; $db = $this->db->table('kelompok')->where('id', $id); $colom = "file_".$p['type']; $db->update([$colom => $p['namaFile']]); return $this->respond([ 'message' => 'Successful', 'data' => [] ], 200); } public function berita(){ $beritaModel = new BeritaModel(); $db = $beritaModel->where('status', 'published') ->orderBy('published_at', 'DESC') ->limit(6) ->get()->getResultArray(); $i = 0; foreach ($db as $k) { $data[$i]['judul'] = $k['title']; $data[$i]['content'] = $k['content']; $data[$i]['tgl'] = $k['published_at']; $data[$i]['writer'] = $k['author_name']; $data[$i]['reader'] = $k['reader']; $data[$i]['foto'] = 'https://lppm.uidepok.ac.id/uploads/berita/'.$k['image']; $i++; } return $this->respond([ 'message' => 'Successful', 'data' => $data ], 200); } public function periodeKkn(){ $hari_ini = date('Y-m-d'); $data = $this->db->table('kkn') ->where('tgl_pendaftaran <=', $hari_ini) ->where('tgl_mulai >', $hari_ini) ->get()->getRowArray(); return $this->respond([ 'message' => 'Successful', 'data' => $data ], 200); } //Cek Daftara Peserta Mhs public function cekDaftarKkn(){ // 1. Ambil data input berupa JSON $input = $this->request->getJSON(true); // Jika input kosong atau bukan JSON yang valid if (empty($input)) { return $this->fail('Data input tidak boleh kosong.', 400); } // 2. Validasi Eksistensi Data di PostgreSQL menggunakan 'is_not_unique' $rules = [ 'id_mhs' => [ 'label' => 'ID Mahasiswa', 'rules' => 'required|is_not_unique[mhs.id_mhs]', 'errors' => [ 'required' => '{field} wajib diisi.', 'is_not_unique' => 'Mahasiswa tidak terdaftar di SIPP LPPM.' ], ] ]; $validation = \Config\Services::validation(); // <--- TAMBAHKAN BARIS INI $validation->setRules($rules); if (!$validation->run($input)) { // Mengembalikan error list berbentuk JSON jika validasi gagal return $this->failValidationErrors($validation->getErrors()); } $dt = $this->db->table('peserta_kkn')->where('id_mhs', $input['id_mhs'])->get()->getRow(); return $this->respondCreated([ 'status' => 201, 'message' => 'Success', 'data' => $dt ]); } //Pendaftaran Mhs public function daftarKkn() { // 1. Ambil data input berupa JSON $input = $this->request->getJSON(true); // Jika input kosong atau bukan JSON yang valid if (empty($input)) { return $this->fail('Data input tidak boleh kosong.', 400); } // 2. Validasi Eksistensi Data di PostgreSQL menggunakan 'is_not_unique' $rules = [ 'id_mhs' => [ 'label' => 'ID Mahasiswa', 'rules' => 'required|is_not_unique[mhs.id_mhs]', 'errors' => [ 'required' => '{field} wajib diisi.', 'is_not_unique' => 'Mahasiswa tidak terdaftar di SIPP LPPM.' ], ], 'id_kkn' => [ 'label' => 'ID KKN', 'rules' => 'required|is_not_unique[kkn.id]', 'errors' => [ 'required' => '{field} wajib diisi.', 'is_not_unique' => 'Periode KKN tidak ditemukan.' ], ], ]; $validation = \Config\Services::validation(); // <--- TAMBAHKAN BARIS INI $validation->setRules($rules); if (!$validation->run($input)) { // Mengembalikan error list berbentuk JSON jika validasi gagal return $this->failValidationErrors($validation->getErrors()); } $sudahDaftar = $this->db->table('peserta_kkn') ->where([ 'id_mhs' => $input['id_mhs'] ])->countAllResults(); if ($sudahDaftar > 0) { return $this->failResourceExists('Anda sudah terdaftar pada kegiatan KKN.'); } $dataInsert = [ 'id' => Uuid::uuid4()->toString(), // Generate UUID otomatis 'id_mhs' => $input['id_mhs'], 'id_kkn' => $input['id_kkn'], ]; try { // Jalankan Insert via Query Builder/Table $this->db->table('peserta_kkn')->insert($dataInsert); // 5. Kembalikan Response Sukses return $this->respondCreated([ 'status' => 201, 'message' => 'Pendaftaran Berhasil', 'data' => [ 'id' => $dataInsert['id'], ] ]); } catch (\Exception $e) { // Handle error database jika ada masalah (seperti constraint psql) return $this->failServerError('Gagal menyimpan data ke database: ' . $e->getMessage()); } } public function kknDosen(){ // 1. Ambil data input berupa JSON $input = $this->request->getJSON(true); // Jika input kosong atau bukan JSON yang valid if (empty($input)) { return $this->fail('Data input tidak boleh kosong.', 400); } // 2. Validasi Eksistensi Data $rules = [ 'id_dosen' => [ 'label' => 'ID Dosen', 'rules' => 'required', 'errors' => [ 'required' => '{field} wajib diisi.', ] ] ]; $validation = \Config\Services::validation(); // <--- TAMBAHKAN BARIS INI $validation->setRules($rules); if (!$validation->run($input)) { // Mengembalikan error list berbentuk JSON jika validasi gagal return $this->failValidationErrors($validation->getErrors()); } $ta = $this->db->table('tahun')->where('status', 1)->get()->getRow(); $dt = $this->db->table('peserta_kkn p') ->select('mhs.id_mhs, mhs.nim, mhs.nama') ->join('kkn', 'p.id_kkn = kkn.id') ->join('mhs', 'p.id_mhs = mhs.id_mhs') ->where('p.id_dospem', $input['id_dosen']) ->where('kkn.ta',$ta->kode) ->get()->getResultArray(); return $this->respondCreated([ 'status' => 201, 'message' => 'Success', 'data' => $dt ]); } public function SimpanNilaiKkn(){ // 1. Ambil data input berupa JSON $p = $this->request->getJSON(true); $jml = count($p['id_mhs']); for ($i=0; $i < $jml; $i++) { $dt[$i]['id'] = Uuid::uuid4()->toString(); $dt[$i]['id_mhs'] = $p['id_mhs'][$i]; $dt[$i]['kehadiran'] = $p['kehadiran'][$i]; $dt[$i]['laporan'] = $p['laporan'][$i]; $dt[$i]['kerja_sama'] = $p['kerja_sama'][$i]; $dt[$i]['sosial'] = $p['sosial'][$i]; $dt[$i]['proker'] = $p['proker'][$i]; } $all_ids = array_column($dt, 'id_mhs'); $builder = $this->db->table('nilai_kkn'); $existing_rows = $builder->select('id_mhs') ->whereIn('id_mhs', $all_ids) ->get() ->getResultArray(); // Buat list id_mhs yang sudah terdaftar $existing_ids = array_column($existing_rows, 'id_mhs'); // 4. Kelompokkan data menjadi 2 array: Insert dan Update $data_to_insert = []; $data_to_update = []; foreach ($dt as $item) { if (in_array($item['id_mhs'], $existing_ids)) { $data_to_update[] = $item; } else { $data_to_insert[] = $item; } } $builder = $this->db->table('nilai_kkn'); if (!empty($data_to_insert)) { $builder->insertBatch($data_to_insert); } if (!empty($data_to_update)) { // Argumen kedua adalah primary key/unique key yang dipakai sebagai acuan update $builder->updateBatch($data_to_update, 'id_mhs'); } // 6. Cek Status Transaksi if ($builder === false) { return $this->response->setJSON(['status' => false, 'message' => 'Gagal memproses data']); } return $this->respondCreated([ 'status' => 201, 'message' => 'Success', 'inserted_count' => count($data_to_insert), 'updated_count' => count($data_to_update) ]); } }