<?php

class KorsupgahAnswer extends \Phalcon\Mvc\Model
{

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

    public function initialize()
    {
        $this->setSchema('jaga');
        $this->setSource('korsupgah_answer');
        $this->belongsTo('id_survey', 'KorsupgahSurvey', 'id');
        $this->belongsTo('id_question', 'KorsupgahSubIndikator', 'id');
        $this->belongsTo("verified_by", "UmUser", "um_id", ['alias' => 'verificator']);
        $this->belongsTo("qa_verified_by", "UmUser", "um_id", ['alias' => 'qa_verificator']);
        $this->belongsTo("pic_verified_by", "UmUser", "um_id", ['alias' => 'pic_verificator']);
        $this->belongsTo("created_by", "UmUser", "um_id", ['alias' => 'creator']);
        $this->belongsTo("updated_by", "UmUser", "um_id", ['alias' => 'updater']);
        $this->hasMany("id", "KorsupgahAnswerAttachment", "id_answer");
    }

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

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

        foreach ($this->korsupgahAnswerAttachment as $key => $answer_attachment) {
            if (!empty($answer_attachment->attachments)) {
                $key = KorsupgahAnswerAttachment::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['pic_verificator'] = empty($this->pic_verificator) ? null : $this->pic_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',
            'id_survey',
            'id_question',
            'nilai',
            'nilai_verifikasi',
            'status',
            'verified_by'
        ]);
    }

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

    
}
