<?php

namespace App\Models\User;

use App\Models\Admin\MsBidangPenelitian;
use App\Models\Admin\MsInstitusi;
use App\Models\Admin\MsTujuanSosial;
use App\Traits\UuidTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class PenelitianSumber extends Model
{
    use HasFactory;
    use UuidTrait;

    public $incrementing = false;
    protected $table = 'penelitiansumber';
    protected $keyType = 'string';

    protected $fillable = [
        'judul', 'jenis', 'bidang_id', 'tujuan_id', 'sumberdana', 'institusi_id', 'jumlah_dana', 'userid_created', 'userid_updated', 'created_at', 'updated_at',
    ];

    public const RULES = [
        'judul' => 'required',
        'jenis' => 'required',
        'bidang_id' => 'required',
        'tujuan_id' => 'required',
        'sumberdana' => 'required',
        'institusi_id' => 'required',
        'jumlah_dana' => 'required',
    ];

    public const ERROR_MESSAGES = [
        'judul.required' => 'judul tidak boleh kosong',
        'jenis.required' => 'jenis tidak boleh kosong',
        'bidang_id.required' => 'bidang id tidak boleh kosong',
        'tujuan_id.required' => 'tujuan id tidak boleh kosong',
        'sumberdana.required' => 'sumberdana tidak boleh kosong',
        'institusi_id.required' => 'institusi tidak boleh kosong',
        'jumlah_dana.required' => 'jumlah dana tidak boleh kosong',
    ];

    public const JENIS_PENELITIAN = [
     'Penelitian Dasar',
     'Penelitian Terapan',
     'Pengembangan Eksperimental'
    ];

    public const SUMBER_DANA = [
        'DN' => 'Dalam Negeri',
        'LN' => 'Luar Negeri'
    ];

    public function bidang()
    {
        return $this->belongsTo(MsBidangPenelitian::class, 'bidang_id', 'id');
    }

    public function tujuan()
    {
        return $this->belongsTo(MsTujuanSosial::class, 'tujuan_id', 'id');
    }

    public function institusi()
    {
        return $this->belongsTo(MsInstitusi::class, 'institusi_id', 'id');
    }

    public function anggota()
    {
        return $this->hasMany(PenelitianSumberAnggota::class, 'penelitiansumber_id', 'id');
    }
}
