<?php

class McpAnswer extends \Phalcon\Mvc\Model
{

    const STATUS_INIT = 0;
    const STATUS_VERIFIED = 1;
    const STATUS_VERIFIED_QA = 2;

    public function initialize()
    {
        $this->setSchema('mcp');
        $this->setSource('answer');
        $this->belongsTo('indikator_id', 'McpIndikator', 'id');
        $this->belongsTo('instansi_id', 'Instansi', 'id');
        $this->belongsTo("created_by", "UmUser", "um_id", ['alias' => 'creator']);
        $this->belongsTo("updated_by", "UmUser", "um_id", ['alias' => 'updater']);
        $this->belongsTo("verified_by", "UmUser", "um_id", ['alias' => 'verificator']);
        $this->belongsTo("qa_by", "UmUser", "um_id", ['alias' => 'qa_verificator']);
        $this->hasMany("id", "McpAnswerAttachment", "answer_id");
        $this->hasMany("id", "McpAnswerDetail", "answer_id");
    }

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

        $result['attachments'] = [];
        $result['attachments_verification'] = [];
        $result['attachments_verification_qa'] = [];

        foreach ($this->McpAnswerAttachment as $key => $answer_attachment) {
            if (!empty($answer_attachment->McpAttachments)) {
                $key = McpAnswerAttachment::KEYS[$answer_attachment->tipe];
                $result[$key][] = $answer_attachment->getDetail();
            }
        }

        $result['verificator'] = empty($this->verificator) ? null : $this->verificator->toArraySimple();
        $result['qa_verificator'] = empty($this->qa_verificator) ? null : $this->qa_verificator->toArraySimple();
        $result['creator'] = empty($this->creator) ? null : $this->creator->toArraySimple();
        $result['updater'] = empty($this->updater) ? null : $this->updater->toArraySimple();

        return $result;
    }

    public function toShortArray()
    {
        return parent::toArray([
            'id',
            'indikator_id',
            'instansi_id',
            'nilai',
            'nilai_verifikasi',
            'status',
            'verified_by'
        ]);
    }

    public static function is_unverified_data_exists($indikator_id, $instansi_id)
    {
        return self::findFirst([
            'conditions' => 'instansi_id = :instansi_id: AND indikator_id = :indikator_id: AND verified_at is null',
            'bind' => [
                'instansi_id' => $instansi_id,
                'indikator_id' => $indikator_id
            ]
        ]);
    }

    // create detail yang nyambung ke answer details
    
}
