<?php

class ApiTracker extends \Phalcon\Mvc\Model
{
    const RUMAH_SAKIT_ONLINE_LIST = "RUMAH_SAKIT_ONLINE_LIST";
    const RUMAH_SAKIT_ONLINE_KETERSEDIAAN_TT = "RUMAH_SAKIT_ONLINE_KETERSEDIAAN_TT";

    /**
     *
     * @var integer
     */
    public $id;

    /**
     *
     * @var string
     */
    public $name;

    /**
     *
     * @var string
     */
    public $last_update_date;

    public $last_processed_value;
    public $last_error;

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

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

    /**
     * Allows to query a set of records that match the specified conditions
     *
     * @param mixed $parameters
     * @return ApiTracker[]|ApiTracker|\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 ApiTracker|\Phalcon\Mvc\Model\ResultInterface
     */
    public static function findFirst($parameters = null)
    {
        return parent::findFirst($parameters);
    }

    /**
     * @param string $name
     * @return ApiTracker|false
     */
    public static function findFirstByName(string $name) {
        return ApiTracker::findFirst([
            'conditions' => "name = ?0",
            'bind' => [
                $name
            ]
        ]);
    }

    public function lastProcessedOverDays($daysLimit)
    {
        if (!is_null($this->last_update_date)) {
            $lastRun = strtotime($this->last_update_date);
            $now = time();
            $diff = $now - $lastRun;
            return (round($diff / (60*60*24)) - $daysLimit) > 0;
        }
        return true;
    }
}
