SMAMUGAPAY/app/Controllers/Admin/Siswa.php

182 lines
7.5 KiB
PHP

<?php
namespace App\Controllers\Admin;
use App\Models\Siswa_model;
use App\Models\Kelas_model;
use App\Models\Tahun_model;
use CodeIgniter\Controller;
class Siswa extends BaseController
{
// Fungsi untuk membuat slug otomatis
public function createSlug($name)
{
$slug = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $name))); // Mengubah nama menjadi slug
return $slug;
}
// Halaman utama untuk menampilkan data siswa
public function index()
{
$m_siswa = new Siswa_model();
$pager = service('pager');
$keywords = $this->request->getVar('keywords');
if (isset($keywords)) {
$totalnya = $m_siswa->total_cari($keywords);
$title = 'Hasil pencarian: ' . $keywords . ' - ' . $totalnya->total . ' ditemukan';
$page = (int) ($this->request->getGet('page') ?? 1);
$perPage = 10;
$total = $totalnya->total;
$pager_links = $pager->makeLinks($page, $perPage, $total, 'bootstrap_pagination');
$page = ($this->request->getGet('page')) ? ($this->request->getGet('page') - 1) * $perPage : 0;
$siswa = $m_siswa->paginasi_cari($keywords, $perPage, $page);
} else {
$totalnya = $m_siswa->total();
$title = 'Data Master Siswa (' . $totalnya->total . ')';
$page = (int) ($this->request->getGet('page') ?? 1);
$perPage = 10;
$total = $totalnya->total;
$pager_links = $pager->makeLinks($page, $perPage, $total, 'bootstrap_pagination');
$page = ($this->request->getGet('page')) ? ($this->request->getGet('page') - 1) * $perPage : 0;
$siswa = $m_siswa->paginasi($perPage, $page);
}
$data = [
'title' => $title,
'siswa' => $siswa,
'pagination' => $pager_links,
'content' => 'admin/siswa/index'
];
echo view('admin/layout/wrapper', $data);
}
// Fungsi untuk tambah data siswa
public function tambah()
{
$m_siswa = new Siswa_model();
$siswa = $m_siswa->last_id();
$urutan = ($siswa) ? $siswa->id_siswa + 1 : 1;
if ($this->request->getMethod() === 'post' && $this->validate([
'nama_siswa' => 'required',
])) {
$hashedPassword = password_hash($this->request->getPost('nis'), PASSWORD_DEFAULT);
// Membuat slug otomatis
$slug_siswa = $this->createSlug($this->request->getPost('nama_siswa'));
// Menangkap data jenis pembiayaan
$jenis_pembiayaan = $this->request->getPost('jenis_pembiayaan');
// Menyiapkan data untuk disimpan ke database
$data = [
'nama_siswa' => $this->request->getPost('nama_siswa'),
'slug_siswa' => $slug_siswa, // Menambahkan slug_siswa
'nis' => $this->request->getPost('nis'),
'password' => $hashedPassword,
'jenis_kelamin' => $this->request->getPost('jenis_kelamin'),
'kategori' => $this->request->getPost('kategori'),
'telepon' => $this->request->getPost('telepon'),
'email' => $this->request->getPost('email'),
'status_siswa' => $this->request->getPost('status_siswa'),
'id_tahun' => $this->request->getPost('id_tahun'),
'id_kelas' => $this->request->getPost('id_kelas'),
'nama_ayah' => $this->request->getPost('nama_ayah'),
'telepon_ayah' => $this->request->getPost('telepon_ayah'),
'nama_ibu' => $this->request->getPost('nama_ibu'),
'telepon_ibu' => $this->request->getPost('telepon_ibu'),
];
// Menyimpan data ke database
if ($m_siswa->insert($data)) {
$this->session->setFlashdata('sukses', 'Data siswa telah ditambah');
} else {
$this->session->setFlashdata('error', 'Terjadi kesalahan, data tidak bisa ditambahkan');
}
return redirect()->to(base_url('admin/siswa'));
} else {
$data = [
'title' => 'Tambah Data Siswa',
'siswa' => $siswa,
'urutan' => $urutan,
'content' => 'admin/siswa/tambah'
];
echo view('admin/layout/wrapper', $data);
}
}
// Fungsi untuk edit data siswa
public function edit($id_siswa)
{
$m_siswa = new Siswa_model();
$siswa = $m_siswa->detail($id_siswa);
if ($this->request->getMethod() === 'post' && $this->validate([
'nama_siswa' => 'required',
'gambar' => [
'ext_in[gambar,jpg,jpeg,gif,png,svg]',
'max_size[gambar,4096]',
],
])) {
// Penanganan unggah gambar (update)
$gambar = $this->request->getFile('gambar');
if ($gambar && $gambar->isValid() && !$gambar->hasMoved()) {
$namabaru = $gambar->getRandomName();
$gambar->move(WRITEPATH . 'uploads', $namabaru); // Simpan file di folder "uploads"
} else {
// Jika tidak ada gambar baru yang diunggah, gunakan gambar lama
$namabaru = $siswa->gambar; // Ambil gambar lama jika tidak ada gambar baru
}
// Membuat slug otomatis jika slug kosong
$slug_siswa = $siswa->slug_siswa;
if (empty($slug_siswa)) {
$slug_siswa = $this->createSlug($this->request->getPost('nama_siswa')); // Jika slug kosong, buat slug
}
// Menangkap data jenis pembiayaan
$jenis_pembiayaan = $this->request->getPost('jenis_pembiayaan');
// Menyimpan perubahan data
$data = [
'nama_siswa' => $this->request->getPost('nama_siswa'),
'slug_siswa' => $slug_siswa, // Masukkan slug_siswa
'nis' => $this->request->getPost('nis'),
'jenis_kelamin' => $this->request->getPost('jenis_kelamin'),
'telepon' => $this->request->getPost('telepon'),
'email' => $this->request->getPost('email'),
'gambar' => $namabaru, // Simpan nama gambar
'status_siswa' => $this->request->getPost('status_siswa'),
'id_tahun' => $this->request->getPost('id_tahun'),
'id_kelas' => $this->request->getPost('id_kelas'),
'nama_ayah' => $this->request->getPost('nama_ayah'),
'telepon_ayah' => $this->request->getPost('telepon_ayah'),
'nama_ibu' => $this->request->getPost('nama_ibu'),
'telepon_ibu' => $this->request->getPost('telepon_ibu'),
'kategori' => $jenis_pembiayaan, // Menyimpan jenis pembiayaan
];
// Menyimpan data ke database
if ($m_siswa->update($id_siswa, $data)) {
$this->session->setFlashdata('sukses', 'Data telah disimpan');
} else {
$this->session->setFlashdata('error', 'Terjadi kesalahan, data tidak bisa disimpan');
}
return redirect()->to(base_url('admin/siswa'));
} else {
// Kirim data ke view untuk menampilkan form edit dengan data yang sudah ada
$data = [
'title' => 'Edit Siswa: ' . $siswa->nama_siswa,
'siswa' => $siswa,
'content' => 'admin/siswa/edit'
];
echo view('admin/layout/wrapper', $data);
}
}
}