<?php

use Jaga\Models\BaseModel;
use Jaga\Traits\JagaTimestamp;
use Jaga\Traits\SoftDelete;

class LitbangKajianRepositoriAttachment extends BaseModel
{
    use JagaTimestamp, SoftDelete;

    public $id;
    public $attachment_id;
    public $kajian_repositori_id;
    public $jenis_dokumen_id;
    public $created_at;
    public $created_by;
    public $updated_at;
    public $updated_by;
    public $deleted_at;

    public static $throwableModelName = 'Attachment Repositori Kajian';

    const DOCUMENT_DIR = "litbang-kajian-pengajuan" . DIRECTORY_SEPARATOR;

    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("litbang_kajian_repositori_attachment");
        $this->belongsTo(
            "kajian_repositori_id",
            \LitbangKajianRepositori::class,
            "id",
            [
                'reusable' => true, // cache related data
                'alias'    => 'kajianRepositori',
            ]
        );
        $this->belongsTo(
            "attachment_id",
            \Attachments::class,
            "id",
            [
                'reusable' => true, // cache related data
                'alias'    => 'attachment',
            ]
        );
        $this->belongsTo(
            "jenis_dokumen_id",
            \LitbangKajianPengajuanJenisDokumen::class,
            "id",
            [
                'reusable' => true, // cache related data
                'alias'    => 'jenisDokumen',
                'params'   => [
                    'oder' => 'view_order'
                ]
            ]
        );
    }

    public function toArray($columns = null)
    {
        return parent::toArray($columns);
    }

    public function getDetail($columns = null)
    {
        $result = $this->toArray($columns);

        $result['file'] = $this->attachment->toArray(['id','uuid','filename']);
        $result['jenis_dokumen'] = $this->jenisDokumen->toArray(['id', 'nama', 'keterangan', 'view_order']);

        return $result;
    }

    /**
     * @return LitbangKajianPengajuanJenisDokumen[]
     */
    public static function getJenisDokumens() {
        return LitbangKajianPengajuanJenisDokumen::findByTahapan("PUB");
    }
}
