<?php

namespace App\Models;

use CodeIgniter\Model;

class ModelPerizinan extends Model

{
    protected $table = 'izin'; // Nama tabel
    protected $primaryKey = 'id_izin'; // Primary key
    protected $allowedFields = [
        'kode_izin',
        'id_user',
        'tanggal_awal_izin',
        'tanggal_akhir_izin',
        'jam_mulai',
        'jam_kembali',
        'jenis_izin',
        'keterangan',
        'status',
        'atasan_langsung'
    ]; // Kolom yang dapat diisi

    protected $useTimestamps = true; // Aktifkan created_at & updated_at
    protected $createdField  = 'created_at';
    protected $updatedField  = 'updated_at';

    /**
     * Mengambil semua data izin dengan join user dan atasan
     */
    public function getAllIzin()
    {
        return $this->select('izin.*, u.nama as nama_user, a.nama as nama_atasan')
            ->join('users u', 'u.id_user = izin.id_user')
            ->join('users a', 'a.id_user = izin.atasan_langsung', 'left')
            ->orderBy('izin.id_izin', 'DESC')
            ->findAll();
    }

    /**
     * Mengambil data izin berdasarkan ID
     */
    public function getIzinById($id)
    {
        return $this->select('izin.*, u.nama as nama_user, a.nama as nama_atasan')
            ->join('users u', 'u.id = izin.id_user')
            ->join('users a', 'a.id = izin.atasan_langsung', 'left')
            ->where('izin.id_izin', $id)
            ->first();
    }

    /**
     * Fungsi untuk menambahkan data baru
     *
     * @param array $data
     * @return bool
     */
    public function tambahData($data)
    {
        return $this->insert($data);
    }

    /**
     * Fungsi untuk memperbarui data
     *
     * @param int $id_izin
     * @param array $data
     * @return bool
     */
    public function updateData($id_izin, $data)
    {
        return $this->update($id_izin, $data);
    }

    /**
     * Fungsi untuk menghapus data
     *
     * @param int $id_izin
     * @return bool
     */
    public function deleteData($id_izin)
    {
        return $this->delete($id_izin);
    }
}
