<?php

namespace App\Models;

use CodeIgniter\Model;

class Penilaianeskul_model extends Model
{
    var $table = 'penilaian_eskul';
    public function __construct()
    {
        parent::__construct();
    }

    public function get_all_penilaian()
    {
        $query = $this->db->table($this->table)
            ->get();
        return $query->getResult();
    }
    public function get_where_penilaian($where)
    {
        $query = $this->db->table('penilaian')
            ->where($where)
            ->get();
        return $query->getResult();
    }
    public function get_where_tujuan($where)
    {
        $query = $this->db->table('tujuan')
            ->where($where)
            ->get();
        return $query->getResult();
    }
    public function cek_where($where)
    {
        $query = $this->db->table($this->table)
            ->where($where)
            ->get();
        return $query->getRow();
    }

    public function get_all_pembelajaran()
    {
        $query = $this->db->table('pembelajaran')
            ->select('pembelajaran.*,user.nama as nama_guru,matapelajaran.nama_matapelajaran,rombel.nama_rombel,(SELECT COUNT(*) FROM siswa WHERE rombel.kode_rombel = siswa.rombel)  as jumlah_siswa,(SELECT COUNT(*) FROM penilaian WHERE penilaian.id_pembelajaran = pembelajaran.id)  as jumlah_dinilai')
            ->join('user', 'user.id = pembelajaran.id_guru')
            ->join('matapelajaran', 'matapelajaran.id = pembelajaran.id_matapelajaran')
            ->join('rombel', 'rombel.id = pembelajaran.id_rombel')
            ->get();
        return $query->getResult();
    }
    public function get_penilaian_siswa($rombel, $idpembelajaran, $tahunpelajaran)
    {
        $query = $this->db->table('siswa')
            ->select('siswa.id as siswa_id, siswa.nama, rombel.id as id_rombel, penilaian.*')
            ->join('rombel', "rombel.kode_rombel = siswa.rombel and rombel.id ='$rombel'")
            ->join('penilaian', "siswa.id=penilaian.id_siswa and penilaian.id_pembelajaran='$idpembelajaran'", 'left')
            ->join('pembelajaran', 'pembelajaran.id = penilaian.id_pembelajaran', 'left')
            ->where('rombel.tahunpelajaran', $tahunpelajaran)
            ->get()
            ->getResult();
        // Query untuk mendapatkan data tujuan
        $queryTujuan = $this->db->table('tujuan')
            ->select('id,tujuan')
            ->where('id_pembelajaran', $idpembelajaran)
            ->get()
            ->getResult();

        // Menggabungkan hasil query ke dalam satu array
        $result = [
            'siswa' => $query,
            'tujuan' => $queryTujuan
        ];
        return $result;
    }
    public function get_capaian_siswa($rombel, $idpembelajaran)
    {
        // Query untuk mendapatkan data siswa dan penilaian
        $querySiswaPenilaian = $this->db->table('siswa')
            ->select('siswa.id as siswa_id, siswa.nama, rombel.id as id_rombel, penilaian.*')
            ->join('rombel', "rombel.kode_rombel = siswa.rombel and rombel.id ='$rombel'")
            ->join('penilaian', "siswa.id=penilaian.id_siswa and penilaian.id_pembelajaran='$idpembelajaran'")
            ->get()
            ->getResult();

        // Query untuk mendapatkan data tujuan
        $queryTujuan = $this->db->table('tujuan')
            ->select('id,tujuan')
            ->where('id_pembelajaran', $idpembelajaran)
            ->get()
            ->getResult();

        // Menggabungkan hasil query ke dalam satu array
        $result = [
            'siswa' => $querySiswaPenilaian,
            'tujuan' => $queryTujuan
        ];

        return $result;
    }


    public function get_guru()
    {
        $query = $this->db->table('user')
            ->where('role', 'guru')
            ->get();
        return $query->getResult();
    }

    public function get_by_id($id)
    {
        $query =  $this->db->table($this->table)
            ->where('id', $id)
            ->get();
        return $query->getRow();
    }
    public function penilaian_add($data)
    {
        $query = $this->db->table($this->table)->insert($data);
        return $this->db->insertID();
    }
    public function update_status($where)
    {

        $cekdata = $this->db->table($this->table)
            ->update(['status' => 'tidak'], $where);
        return $cekdata;
    }
    public function update_setting($data)
    {
        $update = $this->db->table('settings')
            ->update(['penilaian' => $data], ['id' => 1]);
        return $update;
    }

    public function penilaian_update($where, $data)
    {
        $this->db->table($this->table)->update($data, $where);
        return $this->db->affectedRows();
    }

    public function delete_by_id($id)
    {
        $this->db->table($this->table)->delete(array('id' => $id));
    }
}
