<?php

class UserActivity extends Phalcon\Mvc\Model
{
    /**
     *
     * @var integer
     */
    public $id;
    /**
     *
     * @var integer
     */
    public $user_id;
    /**
     *
     * @var integer
     */
    public $produk_id;
    /**
     *
     * @var string
     */
    public $objek_id;
    /**
     *
     * @var integer
     */
    public $diskusi_id;
    /**
     *
     * @var string
     */
    public $latitude;
    /**
     *
     * @var string
     */
    public $longitude;
    /**
     *
     * @var datetime
     */
    public $created_at;
    /**
     *
     * @var datetime
     */
    public $updated_at;
    /**
     *
     * @var datetime
     */
    public $deleted_at;

    /**
     * Define constant for model.
     */

    const PRODUK_UMUM = 1;
    const PRODUK_PENDIDIKAN = 2;
    const PRODUK_KESEHATAN = 3;
    const PRODUK_PERIZINAN = 5;
    const PRODUK_DESA = 6;
    const PRODUK_BANSOS = 9;

    /**
     * Initialize method for model.
     */
    public function initialize()
    {
        $this->setSchema('jaga');
        $this->setSource('user_activity');
    }

    /**
     * Returns table name mapped in the model.
     *
     * @return string
     */
    public function getSource()
    {
        return 'user_activity';
    }

    /**
     * Allows to query a set of records that match the specified conditions
     *
     * @param mixed $parameters
     * @return UserActivity[]|UserActivity|\Phalcon\Mvc\Model\ResultSetInterface
     */
    public static function find($parameters = null)
    {
        return parent::find($parameters);
    }

    /**
     * Allows to query the first record that match the specified conditions
     *
     * @param mixed $parameters
     * @return UserActivity|\Phalcon\Mvc\Model\ResultInterface
     */
    public static function findFirst($parameters = null)
    {
        return parent::findFirst($parameters);
    }

    public function toArrayWithDetail()
    {
        $result = $this->toArray();

        $result['nama_user'] = '';
        if (!empty($this->user_id)) {
            $user = UmUser::findFirst(
                [
                    "um_id = :user_id:",
                    "bind" => [
                        "user_id" => $this->user_id
                    ]
                ]

            );

            if(!empty($user)) {
                $result['nama_user'] = $user->nama;
            }
        }

        $result['nama_produk'] = '';
        if (!empty($this->produk_id)) {
            $produk = Produk::findFirst(
                [
                    "id_index = :produk_id:",
                    "bind" => [
                        "produk_id" => $this->produk_id
                    ]
                ]
            );

            if (!empty($produk)) {
                $result['nama_produk'] = str_replace('Default', 'Umum', $produk->nama);
            }
        }

        $result['nama_objek'] = '-';
        if (!empty($this->objek_id)) {
            $bind['objek_id'] = $this->objek_id;

            switch ($this->produk_id) {
                case $this::PRODUK_PENDIDIKAN:
                    $sekolah = Sekolah::findFirst(
                        [
                            "npsn = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if (!empty($sekolah)) {
                        $result['nama_objek'] = $sekolah->nama;
                    }
                    break;
                case $this::PRODUK_KESEHATAN:
                    $fasKes = RumahSakit::findFirst(
                        [
                            "kode_rs = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if (!empty($fasKes)) {
                        $result['nama_objek'] = $fasKes->nama;
                    } else {
                        $fasKes = Puskesmas::findFirst(
                            [
                                "kode_puskesmas = :objek_id:",
                                "bind" => $bind
                            ]
                        );

                        if (!empty($fasKes)) {
                            $result['nama_objek'] = $fasKes->nama_puskesmas;
                        }
                    }
                    break;
                case $this::PRODUK_DESA:
                    $desa = OmspanMasterDesa::findFirst(
                        [
                            "kode_desa = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if (!empty($desa)) {
                        $result['nama_objek'] = $desa->nama_desa;
                    }
                    break;
                case $this::PRODUK_PERIZINAN:
                    $perizinan = Perizinan::findFirst(
                        [
                            "id = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if (!empty($perizinan)) {
                        $result['nama_objek'] = $perizinan->nama;
                    }
                    break;
                case $this::PRODUK_BANSOS:
                    $instansi = Instansi::findFirst(
                        [
                            "id = :objek_id:",
                            "bind" => $bind
                        ]
                    );

                    if (!empty($instansi)) {
                        $result['nama_objek'] = $instansi->nama;
                    }
                    break;
                default:
                    $result['nama_objek'] = '';
                    break;
            }
        }

        $result['judul_diskusi'] = '';
        if(!empty($this->diskusi_id)) {
            $diskusi = Diskusi::findFirst(
                [
                    "id = :diskusi_id:",
                    "bind" => [
                        "diskusi_id" => $this->diskusi_id
                    ]
                ]
            );

            if(!empty($diskusi)) {
                $result['judul_diskusi'] = $diskusi->title;
            }
        }

        return $result;
    }
}
