<?php

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

/**
 * Class PancekPerson
 * @property UmUser $umUser
 */
class PancekUserVerifikator extends BaseModel
{
    use JagaTimestamp, SoftDelete;

    public $id;
    public $um_id;
    public $start_date;
    public $end_date;
    public $created_at;
    public $updated_at;
    public $deleted_at;

    public static $throwableModelName = 'PancekUserVerifikator';

    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("pancek_user_verifikator");
        $this->belongsTo(
            "um_id",
            \UmUser::class,
            "um_id",
            [
                'reusable' => true, // cache related data
                'alias'    => 'umUser',
            ]
        );
    }

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

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

        $result['um_user'] = null;
        if ($this->umUser) {
            $result['um_user'] = $this->umUser->baseToArray();
        }

        return $result;
    }

    public static function findByUmId($id, $getDetail = true)
    {
        /** @var $pancekUser PancekUser */
        $pancekUser = PancekUserVerifikator::findFirst([
            'conditions' => 'um_id = :id: AND deleted_at IS NULL',
            'bind' => ['id' => $id]
        ]);
        if (!$pancekUser) throw new CustomErrorException(BaseResponse::DATA_NOT_FOUND, "User Verifikator Pancek tidak ditemukan");

        $res = $pancekUser;
        if ($getDetail) {
            $res = $pancekUser->getDetail();
        }
        return $res;
    }
}
