<?php

use Jaga\Models\BaseModel;

class PancekFormulirLog extends BaseModel {
    public $id;
    public $formulir_id;
    public $instansi_id;
    public $user_id;
    public $description;
    public $state_after;
    public $created_at;
    public $deleted_at;

    const DESC_CREATE = "Badan Usaha membuat Formulir baru";
    const DESC_DRAFT = "Badan Usaha menyimpan Formulir dengan status Draf";
    const DESC_NEED_REVIEW = "Badan Usaha menyimpan Formulir untuk diverifikasi";
    const DESC_REVIEWED = "Verifikator mengembalikan Formulir ke Badan Usaha";
    const DESC_VERIFIED = "Verifikator telah memverifikasi Formulir";

    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("pancek_formulir_log");

        $this->belongsTo(
            'instansi_id',
            \PancekInstansi::class,
            'id',
            [
                'reusable' => true, // cache related data
                'alias' => 'instansi'
            ]
        );

        $this->belongsTo(
            'formulir_id',
            \PancekFormulir::class,
            'id',
            [
                'reusable' => true, // cache related data
                'alias' => 'formulir'
            ]
        );

        $this->belongsTo(
            'user_id',
            \UmUser::class,
            'um_id',
            [
                'reusable' => true, // cache related data
                'alias' => 'user'
            ]
        );
    }

    public function encodeFormulir(PancekFormulir $formulir)
    {
        return json_encode($formulir->stat());
    }

    public function doLogging(PancekFormulir $formulir, $userId, $description)
    {
        $this->formulir_id = $formulir->id;
        $this->instansi_id = $formulir->instansi_id;
        $this->user_id = $userId;
        $this->description = $description;
        $this->state_after = $this->encodeFormulir($formulir);
        return $this->save();
    }
}
