<?php

class ConceptosOrdenPago extends CActiveRecord
{
    public function tableName()
    {
        return 'configuracion.concepto_orden_pago';
    }

    public function rules()
    {
        return [
            [['id_concepto_operacion', 'id_titulo_proceso_pago'], 'required'],
        ];
    }

    public function relations()
    {
        return [
            'concepto' => [self::BELONGS_TO, 'Operacion', 'id_concepto_operacion'],
            'tituloProceso' => [self::BELONGS_TO, 'TituloProcesoPago', 'id_titulo_proceso_pago'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'id_concepto_operacion' => 'Concepto de operación',
            'id_titulo_proceso_pago' => 'Proceso',
        ];
    }

    public function delete()
    {
        $this->blnborrado = true;
        return $this->save();
    }

    public function search()
    {
        $criteria = new CDbCriteria();
        $criteria->compare('id', $this->id);
        $criteria->addColumnCondition([
            'blnborrado' => false
        ]);

        return new CActiveDataProvider($this, [
            'criteria' => $criteria,
        ]);
    }

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

    public static function proceso($proceso)
    {
        $conceptoOperacion = self::model()->find([
            'condition' => 'id_titulo_proceso_pago=:proceso AND blnborrado IS FALSE',
            'params' => [
                'proceso' => $proceso,
            ]
        ]);

        if ($conceptoOperacion == null) {
            $proceso = TituloProcesoPago::model()->findByPk($proceso);

            throw new Exception("Debe registrar una configuracion para el proceso <strong>{$proceso->nombre_proceso}</strong>.");
        }

        return $conceptoOperacion->id_concepto_operacion;
    }

    public static function getNombreConcepto($id)
    {
        $conceptoOperacion = self::model()->find([
            'condition' => 'id=:id AND blnborrado IS FALSE',
            'params' => [
                'id' => $id,
            ]
        ]);

        if ($conceptoOperacion == null) {
            return;
        }

        return $conceptoOperacion->concepto->descripcion;
    }
}
