⚝
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
/
Penilaian
/
Controllers
/
Edit File: Penilaian.php
<?php namespace Modules\Penilaian\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Border; use PhpOffice\PhpSpreadsheet\Style\Alignment; use PhpOffice\PhpSpreadsheet\Style\Fill; use PhpOffice\PhpSpreadsheet\Style\Color; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; require_once(APPPATH . 'ThirdParty/tcpdf/config/tcpdf_config.php'); require_once(APPPATH . 'ThirdParty/tcpdf/tcpdf.php'); use TCPDF; class Penilaian extends BaseController { public function index(){ $data['title'] = 'Periode Penilaian'; $data['li_1'] = 'Daftar Penilaian'; $data['body'] = 'Modules\Penilaian\Views\list'; $db = $this->db->table('periode_penilaian pp'); if(session()->has('id_sp') && session('id_sp') != '0'){ $db->where(['pp.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 Periode', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'tahun' => [ 'label' => 'tahun', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'smt' => [ 'label' => 'smt', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'tgl_cetak' => [ 'label' => 'tgl_cetak', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'singkatan' => [ 'label' => 'singkatan', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ] ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('penilaian')); } $db = $this->db->table('periode_penilaian'); $input = TRUE; $id = Uuid::uuid4()->toString(); $insert = [ 'id' => $id, 'id_sp' => session('id_sp'), 'nama' => $p['nama'], 'tahun' => $p['tahun'], 'smt' => $p['smt'], 'tgl_cetak' => $p['tgl_cetak'], 'singkatan' => $p['singkatan'], ]; if($input){ $db->insertBatch($insert); } session()->setFlashData(success('Berhasil menambah Data ')); return redirect('penilaian'); } public function edit(){ $p = $this->request->getPost(); $rules = [ 'nama' => [ 'label' => 'Nama Periode', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'tahun' => [ 'label' => 'tahun', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'smt' => [ 'label' => 'smt', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'tgl_cetak' => [ 'label' => 'tgl_cetak', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'singkatan' => [ 'label' => 'singkatan', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ] ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('penilaian')); } $update = [ 'id_sp' => session('id_sp'), 'nama' => $p['nama'], 'tahun' => $p['tahun'], 'smt' => $p['smt'], 'tgl_cetak' => $p['tgl_cetak'], 'singkatan' => $p['singkatan'], ]; if($this->db->table('periode_penilaian')->where('id', $p['data_id'])->update($update)){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->to(base_url('penilaian')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('penilaian')); } } public function set($id = null){ $db = $this->db->table('periode_penilaian'); $db->update(['aktif' => 0]); session()->set('id_pp', $id); if($db->where('id', $id)->update((['aktif' => 1]))){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->back(); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->back(); } } public function delete($id = null){ if($this->db->table('periode_penilaian')->where('id', $id)->delete()){ session()->setFlashData(success('Berhasil Mengapus Data')); return redirect()->to(base_url('penilaian')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('penilaian')); } } public function get($id = null){ $d = $this->db->table('periode_penilaian')->where('id', $id)->get()->getRow(); return json_encode($d); } public function nilai_mapel($id = null){ $db = $this->db->table('periode_penilaian pp'); $db->where(['pp.aktif' => '1']); $pp = $db->get()->getRow();; session()->set('id_pp', $pp->id); $j = $this->db->table('jadwal j') ->select('m.kode as mapel, g.nama as guru, k.kelas, k.rombel, j.id, k.id as id_kelas') ->join('mapel m', 'j.id_mapel = m.id') ->join('kelas k', 'j.id_kelas = k.id') ->join('guru g', 'j.id_guru = g.id') ->where('j.id_tp', session('id_tp')) ->where('j.id', $id) ->where('j.id_guru', session('id'))->get()->getRow(); $pd = $this->db->table('isi') ->select('pd.nama, pd.nis, pd.id as id_pd') ->join('pd', 'isi.id_pd = pd.id') ->join('kelas k', 'isi.id_kelas = k.id') ->where('k.id', $j->id_kelas) ->get()->getResult(); $nilai = $this->db->table('nilai') ->where('id_jadwal', $j->id) ->get()->getResult(); $bobot = $this->db->table('bobot') ->where('id_jadwal', $j->id) ->get()->getRow(); $komponen = $this->db->table('komponen') ->where('id_jadwal', $j->id) ->get()->getResult(); $data['materi1'] = ''; $data['materi2'] = ''; $data['kkm1'] = 0; $data['kkm2'] = 0; foreach ($komponen as $k) { if($k->jenis == 'PH'){ $data['materi1'] = $k->materi; $data['kkm1'] = $k->kkm; }elseif($k->jenis == 'PA'){ $data['materi2'] = $k->materi; $data['kkm2'] = $k->kkm; } } foreach ($nilai as $k) { $data['nilai'][$k->jenis][$k->id_pd] = $k->nilai; } $data['nama_pp'] = $pp->nama; $data['singkatan_pp'] = $pp->singkatan; $data['id_jadwal'] = $id; $data['title'] = 'Penilaian '.$pp->nama; $data['li_1'] = 'Penilaian Mapel'; $data['body'] = 'Modules\Penilaian\Views\penilaian'; $data['pd'] = $pd; $data['bobot'] = $bobot; return view('template', $data); } public function cek_bobot($id = null){ $j = $this->db->table('jadwal j'); } public function formXls($id){ $j = $this->db->table('jadwal j') ->select('m.nama as mapel, g.nama as guru, k.kelas, k.rombel, j.id, k.id as id_kelas') ->join('mapel m', 'j.id_mapel = m.id') ->join('kelas k', 'j.id_kelas = k.id') ->join('guru g', 'j.id_guru = g.id') ->where('j.id_tp', session('id_tp')) ->where('j.id', $id) ->where('j.id_guru', session('id'))->get()->getRow(); $pd = $this->db->table('isi') ->select('pd.nama as Nama, pd.nis as NIS, pd.id as id_pd') ->join('pd', 'isi.id_pd = pd.id') ->join('kelas k', 'isi.id_kelas = k.id') ->where('k.id', $j->id_kelas) ->get()->getResultArray(); /*$data_siswa = [ ['No' => 1, 'NIS' => '12123131', 'Nama' => 'Udin', 'Nilai' => ''], ['No' => 2, 'NIS' => '21212312', 'Nama' => 'Mamat', 'Nilai' => ''], ['No' => 3, 'NIS' => '12341221', 'Nama' => 'Rohmlah', 'Nilai' => ''], ['No' => 4, 'NIS' => '12381122', 'Nama' => 'Jenab', 'Nilai' => ''], ];*/ $data_siswa = $pd; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle('Penilaian Harian'); // --- Bagian Header --- // Judul Form $sheet->setCellValue('A1', 'Form Nilai Harian'); $sheet->mergeCells('A1:E1'); $sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16); $sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); // Detail Informasi $sheet->setCellValue('A2', 'ID'); $sheet->setCellValue('C2', $j->id); $sheet->setCellValue('A3', 'Nama Kelas'); $sheet->setCellValue('C3', $j->kelas.$j->rombel); $sheet->setCellValue('A4', 'Nama Guru'); $sheet->setCellValue('C4', $j->guru); $sheet->setCellValue('A5', 'Nama Mapel'); $sheet->setCellValue('C5', $j->mapel); // Mengatur lebar kolom agar terlihat rapi $sheet->getColumnDimension('A')->setWidth(5); $sheet->getColumnDimension('B')->setWidth(15); $sheet->getColumnDimension('C')->setWidth(20); $sheet->getColumnDimension('D')->setWidth(25); $sheet->getColumnDimension('E')->setWidth(15); // --- Bagian Tabel --- $header = ['No', 'NIS', 'Nama', 'Nilai']; $startRow = 7; $sheet->fromArray($header, null, 'B' . $startRow); // Mengatur style header tabel $styleHeader = [ 'font' => ['bold' => true], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER], 'borders' => ['allBorders' => ['borderStyle' => Border::BORDER_THIN]], 'fill' => ['fillType' => Fill::FILL_SOLID, 'startColor' => ['rgb' => 'D3D3D3']] ]; $sheet->getStyle('B' . $startRow . ':E' . $startRow)->applyFromArray($styleHeader); // Mengisi data siswa ke dalam tabel $row = $startRow + 1; $no = 1; foreach ($data_siswa as $siswa) { $sheet->setCellValue('B' . $row, $no++); $sheet->setCellValue('C' . $row, $siswa['NIS']); $sheet->setCellValue('D' . $row, $siswa['Nama']); $sheet->setCellValue('E' . $row, '0'); $row++; } $sheet->getStyle('C')->getNumberFormat()->setFormatCode('###0'); $sheet->getStyle('E')->getNumberFormat()->setFormatCode('0'); // Mengatur border untuk semua data $styleBody = [ 'borders' => ['allBorders' => ['borderStyle' => Border::BORDER_THIN]] ]; $sheet->getStyle('B' . ($startRow + 1) . ':E' . ($row - 1))->applyFromArray($styleBody); // Mengatur rata tengah untuk kolom No, NIS, dan Nilai $sheet->getStyle('B' . ($startRow + 1) . ':C' . ($row - 1))->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); $sheet->getStyle('E' . ($startRow + 1) . ':E' . ($row - 1))->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); // 2. Membuat Sheet kedua $sheet2 = new Worksheet($spreadsheet, 'PTS-PAS'); $spreadsheet->addSheet($sheet2, 1); // Tambahkan sheet ke-2 pada index 1 // Mengaktifkan sheet kedua dan mengisi datanya $spreadsheet->setActiveSheetIndex(1); // Judul Form $sheet2->setCellValue('A1', 'Form Nilai PTS/PAS'); $sheet2->mergeCells('A1:E1'); $sheet2->getStyle('A1')->getFont()->setBold(true)->setSize(16); $sheet2->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); // Detail Informasi $sheet2->setCellValue('A2', 'ID'); $sheet2->setCellValue('C2', $j->id); $sheet2->setCellValue('A3', 'Nama Kelas'); $sheet2->setCellValue('C3', $j->kelas.$j->rombel); $sheet2->setCellValue('A4', 'Nama Guru'); $sheet2->setCellValue('C4', $j->guru); $sheet2->setCellValue('A5', 'Nama Mapel'); $sheet2->setCellValue('C5', $j->mapel); // Mengatur lebar kolom agar terlihat rapi $sheet2->getColumnDimension('A')->setWidth(5); $sheet2->getColumnDimension('B')->setWidth(15); $sheet2->getColumnDimension('C')->setWidth(20); $sheet2->getColumnDimension('D')->setWidth(25); $sheet2->getColumnDimension('E')->setWidth(15); // --- Bagian Tabel --- $header = ['No', 'NIS', 'Nama', 'Nilai']; $startRow = 7; $sheet2->fromArray($header, null, 'B' . $startRow); // Mengatur style header tabel $styleHeader = [ 'font' => ['bold' => true], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER], 'borders' => ['allBorders' => ['borderStyle' => Border::BORDER_THIN]], 'fill' => ['fillType' => Fill::FILL_SOLID, 'startColor' => ['rgb' => 'D3D3D3']] ]; $sheet2->getStyle('B' . $startRow . ':E' . $startRow)->applyFromArray($styleHeader); $row = $startRow + 1; $no =1; foreach ($data_siswa as $siswa) { $sheet2->setCellValue('B' . $row, $no++); $sheet2->setCellValue('C' . $row, $siswa['NIS']); $sheet2->setCellValue('D' . $row, $siswa['Nama']); $sheet2->setCellValue('E' . $row, '0'); $row++; } $sheet2->getStyle('C')->getNumberFormat()->setFormatCode('###0'); $sheet2->getStyle('E')->getNumberFormat()->setFormatCode('0'); // Mengatur border untuk semua data $sheet2->getStyle('B' . ($startRow + 1) . ':E' . ($row - 1))->applyFromArray($styleBody); // Mengatur rata tengah untuk kolom No, NIS, dan Nilai $sheet2->getStyle('B' . ($startRow + 1) . ':C' . ($row - 1))->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); $sheet2->getStyle('E' . ($startRow + 1) . ':E' . ($row - 1))->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); // Mengembalikan fokus ke sheet pertama agar menjadi sheet yang aktif saat file dibuka $spreadsheet->setActiveSheetIndex(0); // --- Pengaturan Unduhan File --- $writer = new Xlsx($spreadsheet); $fileName = 'Form Nilai '.$j->mapel.' '.$j->kelas.$j->rombel.'.xlsx'; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $fileName . '"'); header('Cache-Control: max-age=0'); $writer->save('php://output'); exit; } public function saveXls(){ // 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()->back(); } // Ambil file yang diunggah $file = $this->request->getFile('upload'); // Pastikan file berhasil diunggah dan tidak ada error if ($file->isValid() && ! $file->hasMoved()) { $newName = $file->getRandomName(); // Buat nama unik untuk file $file->move(WRITEPATH . 'uploads', $newName); // Pindahkan file $filePath = WRITEPATH . 'uploads/' . $newName; try { $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath); $sheet = $spreadsheet->getSheetByName('Penilaian Harian'); $dt = $sheet->toArray(); unlink($filePath); $id_jadwal = $dt[1][2]; $pp = $this->db->table('periode_penilaian')->where(['aktif' => '1', 'id_sp' => session('id_sp')])->get()->getRow(); $j = $this->db->table('jadwal')->where(['id' => $id_jadwal, 'id_sp' => session('id_sp')])->get()->getRow(); $db_nilai = $this->db->table('nilai'); for($i=7;$i<count($dt);$i++){ $nis = $dt[$i][2]; $pd = $this->db->table('pd')->where(['nis' => $nis, 'id_sp' => session('id_sp')])->get()->getRow(); if(isset($pd->id)){ $clear = [ 'id_pd' => $pd->id, 'id_sp' => session('id_sp'), 'id_pp' => $pp->id, 'id_jadwal' => $id_jadwal, 'jenis' => 'PH', ]; $db_nilai->where($clear)->delete(); $id = Uuid::uuid4()->toString(); $input[] = [ 'id' => $id, 'id_sp' => session('id_sp'), 'id_pp' => $pp->id, 'id_pd' => $pd->id, 'id_jadwal' => $id_jadwal, 'id_guru' => $j->id_guru, 'id_mapel' => $j->id_mapel, 'id_kelas' => $j->id_kelas, 'jenis' => 'PH', 'nilai' => $dt[$i][4], ]; } } $db_nilai->insertBatch($input); $sheet2 = $spreadsheet->getSheetByName('PTS-PAS'); $dt2 = $sheet2->toArray(); for($i=7;$i<count($dt2);$i++){ $nis = $dt2[$i][2]; $pd = $this->db->table('pd')->where(['nis' => $nis, 'id_sp' => session('id_sp')])->get()->getRow(); if(isset($pd->id)){ $clear = [ 'id_pd' => $pd->id, 'id_sp' => session('id_sp'), 'id_pp' => $pp->id, 'id_jadwal' => $id_jadwal, 'jenis' => 'PA', ]; $db_nilai->where($clear)->delete(); $id = Uuid::uuid4()->toString(); $input2[] = [ 'id' => $id, 'id_sp' => session('id_sp'), 'id_pp' => $pp->id, 'id_pd' => $pd->id, 'id_jadwal' => $id_jadwal, 'id_guru' => $j->id_guru, 'id_mapel' => $j->id_mapel, 'id_kelas' => $j->id_kelas, 'jenis' => 'PA', 'nilai' => $dt2[$i][4], ]; } } $db_nilai->insertBatch($input2); session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->back(); } catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) { session()->setFlashData(gagal($e->getMessage())); return redirect()->back(); } } else { // Tangani jika ada masalah dengan proses upload session()->setFlashData(gagal($file->getErrorString())); return redirect()->back(); } } public function save_nilai(){ $p = $this->request->getPost(); $db_nilai = $this->db->table('nilai'); $id_jadwal = $p['id_jadwal']; $j = $this->db->table('jadwal')->where(['id' => $id_jadwal, 'id_sp' => session('id_sp')])->get()->getRow(); $bobot = $this->db->table('bobot')->where(['id_jadwal' =>$id_jadwal, 'id_sp' => session('id_sp')]); $cek_bobot = $bobot->get()->getRow(); if(isset($cek_bobot->id)){ $update_bobot = [ 'sumatif' => $p['bobot_ph'], 'pas' => $p['bobot_pa'], ]; $bobot->update($update_bobot); }else{ $id_bobot = Uuid::uuid4()->toString(); $insert_bobot = [ 'sumatif' => $p['bobot_ph'], 'pas' => $p['bobot_pa'], 'id' => $id_bobot, 'id_sp' => session('id_sp'), 'id_jadwal' => $id_jadwal ]; $bobot->insert($insert_bobot); } $komponen = $this->db->table('komponen'); $cek_komponen_ph = $komponen->where(['jenis' => 'PH', 'id_jadwal' => $id_jadwal, 'id_sp' => session('id_sp')])->get()->getRow(); if(isset($cek_komponen_ph->id)){ $id_komponen_ph = $cek_komponen_ph->id; $update_komponen =[ 'materi' => $p['materi1'], 'kkm' => $p['kkm1'], ]; $komponen->where('id', $id_komponen_ph)->update($update_komponen); }else{ $id_komponen_ph = Uuid::uuid4()->toString(); $input_komponen_ph = [ 'id' => $id_komponen_ph, 'id_jadwal' => $id_jadwal, 'id_guru' => $j->id_guru, 'id_mapel' => $j->id_mapel, 'id_kelas' => $j->id_kelas, 'id_sp' => session('id_sp'), 'materi' => $p['materi1'], 'kkm' => $p['kkm1'], 'jenis' => 'PH', ]; $komponen->insert($input_komponen_ph); } $cek_komponen_pa = $komponen->where(['jenis' => 'PA', 'id_jadwal' => $id_jadwal, 'id_sp' => session('id_sp')])->get()->getRow(); if(isset($cek_komponen_pa->id)){ $id_komponen_pa = $cek_komponen_pa->id; $update_komponen =[ 'materi' => $p['materi2'], 'kkm' => $p['kkm2'], ]; $komponen->where('id', $id_komponen_pa)->update($update_komponen); }else{ $id_komponen_pa = Uuid::uuid4()->toString(); $input_komponen_pa = [ 'id' => $id_komponen_pa, 'id_jadwal' => $id_jadwal, 'id_guru' => $j->id_guru, 'id_mapel' => $j->id_mapel, 'id_kelas' => $j->id_kelas, 'id_sp' => session('id_sp'), 'materi' => $p['materi2'], 'kkm' => $p['kkm2'], 'jenis' => 'PA', ]; $komponen->insert($input_komponen_pa); } for($i=0;$i<count($p['id_pd']);$i++){ $clear = [ 'id_pd' => $p['id_pd'][$i], 'id_sp' => session('id_sp'), 'id_pp' => session('id_pp'), 'id_jadwal' => $p['id_jadwal'], ]; $db_nilai->where($clear)->delete(); $id = Uuid::uuid4()->toString(); $ph[] = [ 'id' => $id, 'id_sp' => session('id_sp'), 'id_pd' => $p['id_pd'][$i], 'id_pp' => session('id_pp'), 'id_jadwal' => $id_jadwal, 'id_guru' => $j->id_guru, 'id_mapel' => $j->id_mapel, 'id_kelas' => $j->id_kelas, 'id_komponen' => $id_komponen_ph, 'jenis' => 'PH', 'nilai' => $p['nilai_ph'][$i], ]; $id = Uuid::uuid4()->toString(); $pa[] = [ 'id' => $id, 'id_sp' => session('id_sp'), 'id_pd' => $p['id_pd'][$i], 'id_pp' => session('id_pp'), 'id_jadwal' => $id_jadwal, 'id_guru' => $j->id_guru, 'id_mapel' => $j->id_mapel, 'id_kelas' => $j->id_kelas, 'id_komponen' => $id_komponen_pa, 'jenis' => 'PA', 'nilai' => $p['nilai_pa'][$i], ]; } $db_nilai->insertBatch($ph); $db_nilai->insertBatch($pa); session()->setFlashData(success('Berhasil Menyimpan Data')); return json_encode("OK"); } public function cetakRapotSiswa($id){ //Lembaga Pendidikan $sp = $this->db->table('sp') ->select('sp.*, user.nama as nm_keuangan') ->join('user','sp.nama_keuangan = user.id', 'inner') ->Where('sp.id', session('id_sp'))->get()->getRow(); //Peserta Didik $pd = $this->db->table('pd')->where(['id' => $id])->get()->getRow(); //Kelas Aktif $kelas = $this->db->table('isi') ->select('k.kelas, k.rombel, k.id AS id_kelas') ->join('pd', 'isi.id_pd = pd.id') ->join('kelas k', 'isi.id_kelas = k.id') ->where(['pd.id' => $id, 'k.id_tp' => session('id_tp')])->get()->getRow(); //Periode Penilaian $pp = $this->db->table('periode_penilaian')->where(['aktif' => '1'])->get()->getRow(); $id_pd = $id; $id_kelas = $kelas->id_kelas; $mapel = $this->db->table('mapel m') ->select('id, nama, urut, induk') ->get()->getResult(); // --- 2. ORGANISASI DATA --- $data['mapel'] = $mapel; // --- 3. GENERATE HTML (DARI VIEW) --- // Kita akan membuat view terpisah untuk tabel $isi_rapot = view('Modules\Penilaian\Views\tabel-rapot', $data); $kertas = [210, 295]; $pdf = new \TCPDF("P", PDF_UNIT, $kertas, true, 'UTF-8', false); $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('SIPADAT'); $pdf->SetTitle('Rapot '.$pd->nama.' '.$kelas->kelas.$kelas->rombel); $pdf->SetSubject('Buyas Apps'); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetMargins(20, 10, 20); $pdf->AddPage(); $file = ROOTPATH .'public/assets/dist/img/AdminLTELogo.png'; $pdf->Image($file, 10, 10, 30, 30, 'PNG', '', '', false, 300, '', false, false, 0, true, false, false); $pdf->setFont('bookantiqua_b','',14); // MultiCell($w, $h, $txt, $border=0, $align='J', $fill=0, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0) $x = 25; $pdf->MultiCell(170, 5, strtoupper(env('yys_name')), 0, 'C', 0, 1, $x, '', true); $pdf->MultiCell(170, 5, $sp->nama, 0, 'C', 0, 1, $x, '', true); $pdf->MultiCell(170, 5, 'TERAKREDITASI A', 0, 'C', 0, 1, $x, '', true); //$pdf->MultiCell(85, 5, 'NPSN : 69976252 ', 0, 'C', 0, 0, 30, '', true); //$pdf->MultiCell(85, 5, 'NSM : 111232760141 ', 0, 'C', 0, 1, 105, '', true); $pdf->setFont('bookantiqua','',10); $pdf->MultiCell(170, 5, $sp->alamat, 0, 'C', 0, 1, '', '', true); $pdf->Line(10, 35, 200, 35); $pdf->Line(10, 34, 200, 34, ['width' => 0.5]); $pdf->setFont('bookantiqua_b','',12); $pdf->MultiCell(170, 5, 'LAPORAN '.strtoupper($pp->nama), 0, 'C', 0, 1, 20, 38, true); $pdf->Line(10, 45, 200, 45,['width' => 0.1]); $pdf->setFont('bookantiqua','',10); $bio = '<table border="0"> <tr> <td width="20%">Nama</td> <td width="5%">:</td> <td width="30%">'.$pd->nama.'</td> <td width="20%">Kelas</td> <td width="5%">:</td> <td width="25%">'.$kelas->kelas.$kelas->rombel.'</td> </tr> <tr> <td width="20%">Tahun Pelajaran</td> <td width="5%">:</td> <td width="30%">'.$pp->tahun.'</td> <td width="20%">Semester</td> <td width="5%">:</td> <td width="25%">'.$pp->smt.'</td> </tr> </table>'; //writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=0, $reseth=true, $align='', $autopadding=true) $pdf->writeHTMLCell($w=190, $h='', $x=10, $y=46, $bio, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true); $pdf->Line(10, 56, 200, 56,['width' => 0.1]); $pdf->setFont('bookantiqua_b','',12); $pdf->MultiCell(170, 5, 'CAPAIAN HASIL BELAJAR', 0, 'C', 0, 1, 20, 58, true); $pdf->setFont('bookantiqua','',12); $pdf->writeHTMLCell($w=190, $h='', $x=10, $y=67, $isi_rapot, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true); // $pdf->writeHTML($isi_rapot, true, false, true, false, ''); $pdf->AddPage(); $extra = '<table border="1" cellpadding="3"> <tr style="text-align:center"> <td width="10%">No</td> <td width="30%">Kegiatan Extra Kurikuler</td> <td width="20%">Nilai</td> <td width="40%">Keterangan</td> </tr>'; for ($i=0; $i <3 ; $i++) { $extra .=' <tr> <td width="10%"></td> <td width="30%"></td> <td width="20%"></td> <td width="40%"></td> </tr>'; } $extra .=' </table>'; $pdf->setFont('bookantiqua_b','',12); $pdf->MultiCell(170, 10, 'Ekstrakurikuler', 0, 'J', 0, 1, 10, '', true, 0, false, true, 10, 'B'); $pdf->setFont('bookantiqua','',12); $pdf->writeHTMLCell($w=190, $h='', $x=10, $y='', $extra, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true); $prestasi = '<table border="1" cellpadding="3"> <tr style="text-align:center"> <td width="10%">No</td> <td width="30%">Jenis Prestasi</td> <td width="60%">Keterangan</td> </tr>'; for ($i=0; $i <3 ; $i++) { $prestasi .=' <tr> <td width="10%"></td> <td width="30%"></td> <td width="60%"></td> </tr>'; } $prestasi .=' </table>'; $pdf->setFont('bookantiqua_b','',12); $pdf->MultiCell(170, 10, 'Prestasi', 0, 'J', 0, 1, 10, '', true, 0, false, true, 10, 'B'); $pdf->setFont('bookantiqua','',12); $pdf->writeHTMLCell($w=190, $h='', $x=10, $y='', $prestasi, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true); $absen = '<table border="1" cellpadding="3"> <tr style="text-align:left"> <td width="40%">Sakit</td> <td width="20%"></td> <td width="40%">Hari</td> </tr> <tr style="text-align:left"> <td width="40%">Izin</td> <td width="20%"></td> <td width="40%">Hari</td> </tr> <tr style="text-align:left"> <td width="40%">Alfa</td> <td width="20%"></td> <td width="40%">Hari</td> </tr> </table>'; $pdf->setFont('bookantiqua_b','',12); $pdf->MultiCell(170, 10, 'Ketidakhadiran', 0, 'J', 0, 1, 10, '', true, 0, false, true, 10, 'B'); $pdf->setFont('bookantiqua','',12); $pdf->writeHTMLCell($w=190, $h='', $x=10, $y='', $absen, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true); $pdf->setFont('bookantiqua_b','',12); $pdf->MultiCell(170, 10, 'Catatan Pendidik', 0, 'L', 0, 1, 10, '', true, 0, false, true, 10, 'B'); $pdf->MultiCell(190, 20, '', 1, 'L', 0, 1, 11, '', true, 0, false, true, 10, 'B'); $pdf->Output('Rapot '.$pd->nama.' '.$kelas->kelas.$kelas->rombel.'.pdf', 'I'); exit(); } public function cetakRapotKelas($id){ $mapel = $this->db->table('mapel m') ->select('id, nama, urut, induk') ->get()->getResult(); // --- 2. ORGANISASI DATA --- $data['mapel'] = $mapel; // --- 3. GENERATE HTML (DARI VIEW) --- // Kita akan membuat view terpisah untuk tabel return view('Modules\Penilaian\Views\tabel-rapot', $data); } }
Simpan