<?php

class HorasContratadas extends GxActiveRecord {

    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public function tableName() {
        return 'horas_contratadas';
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Hora contratada|Horas contratadas', $n);
    }

    public static function representingColumn() {
        return 'HOC_ID';
    }
     public function beforeSave() {
        parent::beforeSave();
        if(strpos($this->HOC_EXPIRACAO, '/') !== false) {
            $this->HOC_EXPIRACAO = Util::formatDataMysql($this->HOC_EXPIRACAO);
        }
        return true;
    }

    public function behaviors() {
        return array('datetimeI18NBehavior' => array('class' => 'ext.DateTimeI18NBehavior'));
    }

    public function rules() {
        return array(
            array('HOC_ID, HOC_IDCONTRATO, HOC_IDCLIENTE, HOC_HORAS, HOC_SALDO, HOC_EXPIRACAO', 'safe'),
        );
    }

    public function relations() {
        return array(
            'Cliente'       => array(self::BELONGS_TO, 'Clientes', 'HOC_IDCLIENTE'),
            'Pedido'        => array(self::BELONGS_TO, 'Contratos', 'HOC_IDCONTRATO'),
            'HorasUsadas'   => array(self::HAS_MANY, 'HorasUsadas', 'HUS_IDCONTRATADA'),
        );
    }

    public function pivotModels() {
        return array();
    }

    public function attributeLabels() {
        return array(
            'HOC_ID'         => 'Código',
            'HOC_IDCONTRATO' => 'Pedido',
            'HOC_IDCLIENTE'  => 'Cliente',
            'HOC_HORAS'      => 'Horas',
            'HOC_SALDO'      => 'Saldo',
            'HOC_EXPIRACAO'  => 'Expiração',
            'Cliente'        => 'Cliente',
            'Pedido'         => 'Pedido',
            'HorasUsadas'    => 'Horas usadas',
        );
    }

    private function convertTime($str) {
        $negativo = false;
        if($str < 0){
            $negativo = true;
            $str = $str * (-1);
        }
        $horas = intval($str / 60);
        $minutos = intval($str % 60);
        return ($negativo ? '-' : ''). (strlen($horas) == 1 ? '0' . $horas  : $horas) . ':' . (strlen($minutos) == 1 ? '0' . $minutos  : substr($minutos, 0, 2));
    }

    public function getHoras() {
        return $this->convertTime($this->HOC_HORAS);
    }

    public function getSaldo() {
        return $this->convertTime($this->HOC_SALDO);
    }

}