<?php

namespace App\Models;

use CodeIgniter\Model;

class ModelRekap extends Model
{
    protected $table      = 'tb_rekap_pelanggaran';
    protected $primaryKey = 'id_rekap';
    protected $returnType = 'array';

    protected $allowedFields = [
        'id_siswa',
        'id_pelanggaran',
        'id_guru',
        'tanggal',
        'keterangan_tambahan'
    ];

    /**
     * Rekap pelanggaran per kelas
     */
    public function getPelanggaranKelas($id_kelas)
    {
        return $this->select('
            tb_rekap_pelanggaran.*,

            tb_siswa.nama AS nama_siswa,
            tb_siswa.nis,

            tb_pelanggaran.nama_pelanggaran,
            tb_pelanggaran.skor,

            tb_guru.nama AS nama_guru
        ')
            ->join(
                'tb_siswa',
                'tb_siswa.id_siswa = tb_rekap_pelanggaran.id_siswa'
            )
            ->join(
                'tb_pelanggaran',
                'tb_pelanggaran.id_pelanggaran = tb_rekap_pelanggaran.id_pelanggaran'
            )
            ->join(
                'tb_guru',
                'tb_guru.id_guru = tb_rekap_pelanggaran.id_guru',
                'left'
            )
            ->where('tb_siswa.id_kelas', $id_kelas)
            ->orderBy('tb_rekap_pelanggaran.tanggal', 'DESC')
            ->findAll();
    }
    /**
     * Rekap pelanggaran per murid
     */
    public function getRekapPerMurid($id_siswa)
    {
        return $this->select('
                tb_rekap_pelanggaran.*,

                tb_siswa.nama AS nama_siswa,

                tb_pelanggaran.nama_pelanggaran,
                tb_pelanggaran.skor,

                tb_guru.nama AS nama_guru
            ')
            ->join(
                'tb_siswa',
                'tb_siswa.id_siswa = tb_rekap_pelanggaran.id_siswa'
            )
            ->join(
                'tb_pelanggaran',
                'tb_pelanggaran.id_pelanggaran = tb_rekap_pelanggaran.id_pelanggaran'
            )
            ->join(
                'tb_guru',
                'tb_guru.id_guru = tb_rekap_pelanggaran.id_guru',
                'left'
            )
            ->where('tb_rekap_pelanggaran.id_siswa', $id_siswa)
            ->orderBy('tb_rekap_pelanggaran.tanggal', 'DESC')
            ->findAll();
    }
}
