<?php

namespace app\models;

use Yii;

/**
 * This is the model class for table "cotizaciones".
 *
 * @property int $id
 * @property string $numero_orden
 * @property int $cliente_id
 * @property string $fecha_cotizacion
 * @property string $estado
 * @property string $fecha_creacion
 *
 * @property Clientes $cliente
 * @property CotizacionItems[] $cotizacionItems
 */
class Cotizaciones extends \yii\db\ActiveRecord
{


    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'cotizaciones';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['estado'], 'default', 'value' => 'borrador'],
            [['cliente_id', 'fecha_cotizacion'], 'required'],
            [['cliente_id'], 'integer'],
            [['fecha_cotizacion', 'fecha_creacion'], 'safe'],
            [['numero_orden'], 'string', 'max' => 50],
            [['estado'], 'string', 'max' => 20],
            [['numero_orden'], 'unique'],
            [['cliente_id'], 'exist', 'skipOnError' => true, 'targetClass' => Clientes::class, 'targetAttribute' => ['cliente_id' => 'id']],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'numero_orden' => 'Numero Orden',
            'cliente_id' => 'Cliente ID',
            'fecha_cotizacion' => 'Fecha Cotizacion',
            'estado' => 'Estado',
            'fecha_creacion' => 'Fecha Creacion',
        ];
    }

    /**
     * Gets query for [[Cliente]].
     *
     * @return \yii\db\ActiveQuery
     */
    public function getCliente()
    {
        return $this->hasOne(Clientes::class, ['id' => 'cliente_id']);
    }

    /**
     * Gets query for [[CotizacionItems]].
     *
     * @return \yii\db\ActiveQuery
     */
    public function getCotizacionItems()
    {
        return $this->hasMany(CotizacionItems::class, ['cotizacion_id' => 'id']);
    }

public function getTipoDocumento()
    {
        $orden = $this->numero_orden;
        // La regla de negocio indica que debe ser CLAC o TBS.
        if (str_starts_with($orden, 'CLAC')) {
            return 'CLAC';
        }
        if (str_starts_with($orden, 'TBS')) {
            return 'TBS';
        }
        // 'DESCONOCIDO' actúa como un detector de errores si la regla de negocio se rompe.
        return 'DESCONOCIDO'; 
    }

}
