<?php

namespace App\Models\Panel\MasterData;

use CodeIgniter\Model;

class RuangUjian extends Model
{
    protected $DBGroup              = 'default';
    protected $table                = 'm_ruangujian';
    protected $primaryKey           = 'id';
    protected $useAutoIncrement     = true;
    protected $insertID             = 0;
    protected $returnType           = 'array';
    protected $useSoftDeletes       = false;
    protected $protectFields        = true;
    protected $allowedFields        = ['kode', 'nama'];

    // Dates
    protected $useTimestamps        = false;
    protected $dateFormat           = 'datetime';
    protected $createdField         = 'created_at';
    protected $updatedField         = 'updated_at';
    protected $deletedField         = 'deleted_at';

    // Validation
    protected $validationRules      = [];
    protected $validationMessages   = [];
    protected $skipValidation       = false;
    protected $cleanValidationRules = true;

    // Callbacks
    protected $allowCallbacks       = true;
    protected $beforeInsert         = [];
    protected $afterInsert          = [];
    protected $beforeUpdate         = [];
    protected $afterUpdate          = [];
    protected $beforeFind           = [];
    protected $afterFind            = [];
    protected $beforeDelete         = [];
    protected $afterDelete          = [];

    protected $select = [
        "m_ruangujian.*",
        "(SELECT GROUP_CONCAT(DISTINCT CONCAT(smk.kode,' - ',smk.nama)) FROM m_siswa sms JOIN m_kelas smk ON smk.id=sms.kelas_id WHERE sms.ruang_id=m_ruangujian.id GROUP BY sms.ruang_id) kelas",
        "(SELECT COUNT(*) FROM m_siswa WHERE m_siswa.ruang_id = m_ruangujian.id) total_siswa"
    ];

    public function getAll()
    {
        $builder = $this->db->table($this->table);
        $builder->select(implode(',', $this->select), false);
        return $builder->get()->getResultArray();
    }
    public function findId($id)
    {
        $builder = $this->db->table($this->table);
        $builder->select(implode(',', $this->select), false);
        $builder->where(['id' => $id]);
        return $builder->get()->getRowArray();
    }
}
