<?php

use Jaga\Traits\ThrowableModel;

class Attachments extends \Phalcon\Mvc\Model
{
    use ThrowableModel;

    public $id;
    public $tipe;
    public $uuid;
    public $filename;
    public $keterangan;
    public $metadata;
    public $status;
    public $referer;
    public $created_at;
    public $updated_at;
    public $deleted_at;
    public $created_by;
    public $updated_by;
    /** @var string */
    public $presigned_url;
    /** @var string */
    public $presigned_exp;

    const TIPE_PUBLIC = 0;
    const TIPE_PRIVATE = 1;
    const STATUS_CREATED = 0;
    const STATUS_REFERRED = 1;
    const STATUS_REFERRED_KORWIL = 1;
    const REFERER_STRANAS_ANSWER = 1;
    const REFERER_KORSUPGAH_ANSWER = 1;
    const REFERER_KORWIL_ANSWER = 1;
    const REFERER_LITBANG_KAJIAN_COVER = 11;
    const REFERER_LITBANG_KAJIAN_PENGAJUAN = 12;
    const REFERER_PANCEK_KOMPONEN_TEMPLATE = 13;
    const REFERER_PANCEK_ANSWER = 14;
    const REFERER_LITBANG_KAJIAN_DOCUMENT = 15;
    const REFERER_JEJAK_KASUS_PROFILE_PICTURE = 2;

    public static $throwableModelName = 'Attachment';
    /**
     * Initialize method for model.
     */
    public function initialize()
    {
        $this->setSchema("jaga");
        $this->setSource("attachments");
    }

    public function validPresignedUrl()
    {
        $presignedUrl = false;
        if (MediaHelper::isPresignedFieldExist($this->toArray()) && !MediaHelper::checkIsExpired($this->presigned_exp)) {
            $presignedUrl = $this->presigned_url;
        }

        return $presignedUrl;
    }

    public function updatePresignedUrl($url) {
        $this->presigned_url = $url;
        $this->presigned_exp = (new DateTime())->modify("+".MinioService::LONG_EXPIRED_DURATION)->format('Y-m-d H:i:s');
        $this->save();
    }
}
