MIF_E31211958/app/Controllers/Evaluasi.php

189 lines
6.5 KiB
PHP

<?php
namespace App\Controllers;
use Dompdf\Dompdf;
use Dompdf\Options;
use App\Models\ModelPenilaian;
use App\Models\ModelDetailPenilaian;
use App\Models\ModelGuru;
use App\Models\ModelKriteria;
use App\Models\ModelEvaluasi;
use App\Models\ModelAbsensi;
class Evaluasi extends BaseController
{
protected $PenilaianModel;
protected $DetailPenilaianModel;
protected $GuruModel;
protected $KriteriaModel;
protected $EvaluasiModel;
protected $AbsensiModel;
function __construct()
{
$this->PenilaianModel = new ModelPenilaian();
$this->DetailPenilaianModel = new ModelDetailPenilaian();
$this->GuruModel = new ModelGuru();
$this->KriteriaModel = new ModelKriteria();
$this->EvaluasiModel = new ModelEvaluasi();
$this->AbsensiModel = new ModelAbsensi();
}
public function index()
{
$bulan_selected = $this->request->getPost('bulan');
$tahun_selected = $this->request->getPost('tahun');
if (session()->has('nip') && session()->has('username')) {
$data = array(
'body' => 'Evaluasi/list',
'username' => session('username'),
'nama' => session('nama'),
'hak_akses' => session('hak_akses'),
'nip' => session('nip'),
'bulan_selected' => $bulan_selected,
'tahun_selected' => $tahun_selected,
'evalBelum' => $this->EvaluasiModel->getEvaluasiBelum(),
);
if ($bulan_selected !== null || $tahun_selected !== null) {
// Jika kategori dipilih, ambil data penilaian sesuai kategori
$data['evalSudah'] = $this->EvaluasiModel->getEvaluasiSudah($bulan_selected, $tahun_selected);
} else {
$bulan_selected = date('m');
$tahun_selected = date('Y');
// Jika kategori tidak dipilih, inisialisasi $perhitungan dengan array kosong
$data['evalSudah'] = $this->EvaluasiModel->getEvaluasiSudah($bulan_selected, $tahun_selected);
}
return view('index', $data);
} else {
// Jika pengguna belum login, arahkan ke halaman login
return redirect()->to(base_url() . 'login');
}
}
public function input($id)
{
if (session()->has('nip') && session()->has('username')) {
$data = array(
'body' => 'Evaluasi/input',
'username' => session('username'),
'nama' => session('nama'),
'nip' => session('nip'),
'hak_akses' => session('hak_akses'),
'kriteria' => $this->KriteriaModel->getKriteria(),
'data' => $this->EvaluasiModel->getById($id)->getRow(),
);
return view('index', $data);
} else {
// Jika pengguna belum login, arahkan ke halaman login
return redirect()->to(base_url() . 'login');
}
}
public function insert($id)
{
$data = $this->DetailPenilaianModel->update($id, [
'is_eval' => 1,
]);
if ($data == true) {
$data = array(
'id_detailpenilaian' => $id,
'keterangan' => $this->request->getPost('keterangan'),
);
if ($this->EvaluasiModel->insert_eval($data)) {
session()->setFlashdata('success', 'Evaluasi Berhasil');
return redirect()->to(base_url() . 'evaluasi/list');
} else {
session()->setFlashdata('error', 'Evaluasi Gagal!');
return redirect()->to(base_url() . 'evaluasi/input');
}
} else {
return redirect()->to(base_url() . 'evaluasi/input')->with('error', 'Evaluasi Gagal');
}
}
public function edit($id)
{
if (session()->has('nip') && session()->has('username')) {
$data = array(
'body' => 'Evaluasi/edit',
'username' => session('username'),
'nama' => session('nama'),
'nip' => session('nip'),
'hak_akses' => session('hak_akses'),
'kriteria' => $this->KriteriaModel->getKriteria(),
'data' => $this->EvaluasiModel->getById2($id)->getRow(),
);
return view('index', $data);
} else {
// Jika pengguna belum login, arahkan ke halaman login
return redirect()->to(base_url() . 'login');
}
}
public function update($id)
{
$data = $this->EvaluasiModel->update($id, [
'keterangan' => $this->request->getVar('keterangan'),
]);
if ($data == true) {
return redirect()->to(base_url() . 'evaluasi/list')->with('success', 'Data Berhasil Diubah!');
} else {
return redirect()->to(base_url() . 'evaluasi/edit')->with('error', 'Data Gagal Diubah!');
}
}
public function delete($id)
{
$this->EvaluasiModel->delete($id);
return redirect()->to(base_url() . 'evaluasi/list')->with('success', 'Data Berhasil Dihapus!');
}
public function indexCetak()
{
return view('Penilaian/cetak');
}
public function cetakRapor($id)
{
$data['data'] = $this->EvaluasiModel->getById2($id)->getRow();
if ($data['data']) {
$nip = $data['data']->nip;
// Ambil data absensi 3 bulan terakhir
$modelAbsensi = new ModelAbsensi();
$bulanSekarang = $data['data']->bulan; // Bulan sekarang (1-12)
$tahunSekarang = $data['data']->tahun; // Tahun sekarang
$rekapAbsensi = $modelAbsensi->getRekapAbsensi($bulanSekarang, $tahunSekarang, $nip);
$data['rekap_absensi'] = $rekapAbsensi;
// Mulai pembuatan PDF
$dompdf = new Dompdf();
$options = new Options();
$dompdf->set_option('isRemoteEnabled', true);
// Muat HTML ke Dompdf
$dompdf->loadHtml(view('Evaluasi/cetak', $data));
// Atur ukuran dan orientasi halaman (opsional)
$dompdf->setPaper('A4', 'portrait');
// Render PDF
$dompdf->render();
// Output PDF ke browser atau simpan di server
$dompdf->stream("output.pdf", ["Attachment" => false]);
// Jika ingin menyimpan PDF ke server, gunakan:
// $pdfOutput = $dompdf->output();
// file_put_contents('path/to/save/output.pdf', $pdfOutput);
} else {
// Handle jika data tidak ditemukan
return redirect()->to(base_url() . 'error');
}
}
}