<?php

namespace App\Models;

use App\Support\PerencanaanSuksesiOptions;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class AssessmentPengembangan extends Model
{
    use HasFactory;

    protected $table = 'assessment_pengembangan';

    protected $fillable = [
        'pegawai_id',
        'periode_tahun',
        'dikembangkan_karier',
        'dikembangkan_kompetensi',
        'bentuk_pengembangan_karier',
        'waktu_pelaksanaan_tahun',
        'prosedur_pengisian_jabatan',
        'mekanisme_pengisian_jabatan',
        'catatan_pengembangan_karier',
        'hasil_penilaian_kompetensi',
        'sejarah_karier',
        'hasil_penilaian_kinerja',
        'perencanaan_suksesi',
    ];

    protected $casts = [
        'dikembangkan_karier' => 'boolean',
        'dikembangkan_kompetensi' => 'boolean',
    ];

    public function pegawai(): BelongsTo
    {
        return $this->belongsTo(Pegawai::class);
    }

    public function getBentukPengembanganKarierLabelAttribute(): string
    {
        return match ($this->bentuk_pengembangan_karier) {
            'horizontal' => 'Horizontal',
            'vertikal' => 'Vertikal',
            'diagonal' => 'Diagonal',
            default => '-',
        };
    }

    public function getProsedurPengisianJabatanLabelAttribute(): string
    {
        return match ($this->prosedur_pengisian_jabatan) {
            'seleksi_terbuka' => 'Seleksi Terbuka',
            'seleksi_tertutup' => 'Seleksi Tertutup',
            default => '-',
        };
    }

    public function getMekanismePengisianJabatanLabelAttribute(): string
    {
        return match ($this->mekanisme_pengisian_jabatan) {
            'jalur_reguler' => 'Jalur Reguler',
            'jalur_percepatan' => 'Jalur Percepatan',
            default => '-',
        };
    }

    public function getPerencanaanSuksesiDetailAttribute(): ?array
    {
        return PerencanaanSuksesiOptions::find($this->perencanaan_suksesi);
    }
}
