⚝
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
/
apik
/
modules
/
Pembayaran
/
Controllers
/
Edit File: Pembayaran.php
<?php namespace Modules\Pembayaran\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; class Pembayaran extends BaseController { public function index() { $data['title'] = 'Pembayaran'; $data['li_1'] = 'Daftar Pembayaran'; $data['body'] = 'Modules\Pembayaran\Views\list.php'; $data['table'] = $this->db->table('pembayaran')->get()->getResult(); return view('template', $data); } public function sync(){ $url = link_api().'/api/pembayaran'; $data = []; $pembayaran = json_decode(api_siak($url, $data), true); $db = $this->db->table('pembayaran'); foreach ($pembayaran as $k) { $id = Uuid::uuid4()->toString(); $input[] =[ "id_pembayaran" => $k['id_pembayaran'], "nama" => $k['nama'], "harga" => $k['harga'], "frek" => $k['frek'], "cicilan" => $k['cicilan'], ]; } $db->truncate(); $db->insertBatch($input); session()->setFlashData(success('Berhasil Menyingkron '.count($pembayaran).' Data')); return redirect()->to(base_url('pembayaran')); echo '<pre>'; print_r($pembayaran); echo '</pre>'; } public function add(){ $p = $this->request->getPost(); $rules = [ 'nama' => [ 'label' => 'Nama Lengkap', // Mengizinkan Huruf (A-z), Spasi, Titik (.), dan Koma (,) 'rules' => 'required|regex_match[/^[a-zA-Z\s.,]*$/]|min_length[3]|max_length[100]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'regex_match' => '{field} hanya boleh berisi huruf, spasi, titik, atau koma.', // Pesan error baru 'min_length' => '{field} minimal {param} karakter.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'cicilan' => [ 'label' => 'Pilihan Cicilan tidak sesuai', // Label untuk pesan error 'rules' => 'required|in_list[1,2]', 'errors' => [ 'in_list' => '{field} harus bernilai 1 atau 2 saja.', 'required' => '{field} wajib diisi.', ], ], 'frekuensi' => [ 'label' => 'Frekuensi Pembayaran tidak sesuai', // Label untuk pesan error 'rules' => 'required|in_list[1,2,3,4,5]', 'errors' => [ 'in_list' => '{field} harus bernilai Perbulan, Pertahun, Persemester, 1x atau Perjenjang.', 'required' => '{field} wajib diisi.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pembayaran')); } $id = Uuid::uuid4()->toString(); $d = [ 'id_pembayaran' => $id, 'nama' => $p['nama'], 'frek' => $p['frekuensi'], 'cicilan' => $p['cicilan'], ]; if($this->db->table('pembayaran')->insert($d)){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect('pembayaran'); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect('pembayaran'); } } public function delete($id = null){ if($this->db->table('pembayaran')->where('id_pembayaran', enc($id))->delete()){ session()->setFlashData(success('Berhasil Mengapus Data')); return redirect()->to(base_url('pembayaran')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pembayaran')); } } public function get($id = null){ $d = $this->db->table('pembayaran')->where('id_pembayaran', enc($id))->get()->getRow(); return json_encode($d); } public function edit(){ $p = $this->request->getPost(); $rules = [ 'nama' => [ 'label' => 'Nama Lengkap', // Mengizinkan Huruf (A-z), Spasi, Titik (.), dan Koma (,) 'rules' => 'required|regex_match[/^[a-zA-Z\s.,]*$/]|min_length[3]|max_length[100]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'regex_match' => '{field} hanya boleh berisi huruf, spasi, titik, atau koma.', // Pesan error baru 'min_length' => '{field} minimal {param} karakter.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'cicilan' => [ 'label' => 'Pilihan Cicilan tidak sesuai', // Label untuk pesan error 'rules' => 'required|in_list[1,2]', 'errors' => [ 'in_list' => '{field} harus bernilai 1 atau 2 saja.', 'required' => '{field} wajib diisi.', ], ], 'frekuensi' => [ 'label' => 'Frekuensi Pembayaran tidak sesuai', // Label untuk pesan error 'rules' => 'required|in_list[1,2,3,4,5]', 'errors' => [ 'in_list' => '{field} harus bernilai Perbulan, Pertahun, Persemester, 1x atau Perjenjang.', 'required' => '{field} wajib diisi.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pembayaran')); } $d = [ 'nama' => $p['nama'], 'frek' => $p['frekuensi'], 'cicilan' => $p['cicilan'], ]; if($this->db->table('pembayaran')->where('id_pembayaran', enc($p['data_id']))->update($d)){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->to(base_url('pembayaran')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pembayaran')); } } public function getAuthMhs($dt){ $id = enc($dt); $dt = $this->db->table('auth_mhs')->select('jurusan, jumlah')->where('id_pembayaran', $id)->get()->getResult(); return json_encode($dt); } public function authMhs(){ $p = $this->request->getPost(); $id_pembayaran = enc($p['id_auth_pembayaran']); $db = $this->db->table('auth_mhs'); $cek = $this->db->table('auth_mhs') ->select('id, jurusan') ->where('id_pembayaran', $id_pembayaran) ->whereIn('jurusan', $p['jurusan']) ->get() ->getResultArray();; $existingMap = array_column($cek, 'id', 'jurusan'); $dataToInsert = []; $dataToUpdate = []; $jmlInsert = 0; $jmlUpdate = 0; // ========================================== // LANGKAH 2: Pilah data di memori PHP (Tanpa Query) // ========================================== $i=0; foreach ($p['jurusan'] as $kd_jurusan) { if (array_key_exists($kd_jurusan, $existingMap)) { // JIKA UPDATE: Gunakan ID aslinya sebagai acuan primary key $dataToUpdate[] = [ 'id' => $existingMap[$kd_jurusan], // <--- ID dimasukkan ke sini 'id_pembayaran' => $id_pembayaran, 'jurusan' => $kd_jurusan, 'jumlah' => $p['jumlah'][$i] ]; $jmlUpdate++; } else { $id = Uuid::uuid4()->toString(); $dataToInsert[] = [ 'id' => $id, 'id_pembayaran' => $id_pembayaran, 'jurusan' => $kd_jurusan, 'jumlah' => $p['jumlah'][$i] ]; $jmlInsert++; } $i++; } // ========================================== // LANGKAH 3: Eksekusi Bulk Operation // ========================================== // 3a. Insert data baru sekaligus if (!empty($dataToInsert)) { $db->insertBatch($dataToInsert); } // 3b. Update data lama sekaligus, acuannya adalah kolom 'id' if (!empty($dataToUpdate)) { // Sekarang parameter kedua menggunakan 'id' sebagai pengunci baris yang sah $db->updateBatch($dataToUpdate, 'id'); } session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->to(base_url('pembayaran')); } }
Simpan