<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Periode extends Model
{
    use HasFactory;

    protected $table = 'periode';

    protected $fillable = [
        'tema_id',
        'nama_periode',
        'tanggal_mulai',
        'tanggal_selesai',
        'status',
    ];

    public function audits()
    {
        return $this->hasMany(Audit::class, 'periode_id');
    }

    public function tema()
    {
        return $this->belongsTo(Tema::class, 'tema_id', 'id');
    }

    /**
     * Ambil periode untuk tema & tanggal tertentu (rentang: mulai <= tgl <= selesai/null)
     * Periode terbaru (tanggal_mulai paling akhir) diprioritaskan.
     */
    public function scopeForTemaAndDate($q, $temaId, $date)
    {
        return $q->where('tema_id', $temaId)
            ->whereDate('tanggal_mulai', '<=', $date)
            ->where(function ($qq) use ($date) {
                $qq->whereNull('tanggal_selesai')
                   ->orWhereDate('tanggal_selesai', '>=', $date);
            })
            ->orderByDesc('tanggal_mulai');
    }
}
