<?php

namespace App\Models;

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

class Lembur extends Model
{
    use HasFactory;

    protected $fillable = [
        'karyawan_id', 'tanggal', 'jam_mulai', 'jam_selesai',
        'durasi_menit', 'keterangan', 'status',
        'disetujui_oleh', 'catatan_admin',
    ];

    protected $casts = [
        'tanggal' => 'date',
    ];

    public function karyawan()
    {
        return $this->belongsTo(Karyawan::class);
    }

    public function approver()
    {
        return $this->belongsTo(User::class, 'disetujui_oleh');
    }

    // Hitung durasi dalam format "X jam Y menit"
    public function getDurasiFormatAttribute(): string
    {
        $jam   = intdiv($this->durasi_menit, 60);
        $menit = $this->durasi_menit % 60;
        if ($jam > 0 && $menit > 0) return "{$jam} jam {$menit} menit";
        if ($jam > 0) return "{$jam} jam";
        return "{$menit} menit";
    }

    // Hitung durasi menit dari jam_mulai & jam_selesai
    public static function hitungDurasi(string $jamMulai, string $jamSelesai): int
    {
        $mulai   = Carbon::parse($jamMulai);
        $selesai = Carbon::parse($jamSelesai);
        // Jika selesai < mulai berarti melewati tengah malam
        if ($selesai->lt($mulai)) {
            $selesai->addDay();
        }
        return (int) $mulai->diffInMinutes($selesai);
    }
}