<?php

namespace app\models;

use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\Productos;

/**
 * ProductosSearch represents the model behind the search form of `app\models\Productos`.
 */
class ProductosSearch extends Productos
{
    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['id', 'unidades_caja', 'unidades_carton'], 'integer'],
            [['codigo_producto', 'codigo_proveedor', 'descripcion', 'marca', 'presentacion', 'unidad_medida', 'medida_unidad', 'ruta_imagen', 'status', 'fecha_creacion', 'fecha_actualizacion', 'tipo_documento_predeterminado'], 'safe'],
            [['peso_unitario', 'peso_caja_interna', 'peso_carton', 'cbm', 'gw', 'largo', 'ancho', 'alto', 'largo_caja_interna', 'ancho_caja_interna', 'alto_caja_interna', 'largo_carton_master', 'ancho_carton_master', 'alto_carton_master'], 'number'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function scenarios()
    {
        // bypass scenarios() implementation in the parent class
        return Model::scenarios();
    }

    /**
     * Creates data provider instance with search query applied
     *
     * @param array $params
     * @param string|null $formName Form name to be used into `->load()` method.
     *
     * @return ActiveDataProvider
     */
    public function search($params, $formName = null)
    {
        $query = Productos::find();

        // add conditions that should always apply here

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        $this->load($params, $formName);

        if (!$this->validate()) {
            // uncomment the following line if you do not want to return any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }

        // grid filtering conditions
        $query->andFilterWhere([
            'id' => $this->id,
            'peso_unitario' => $this->peso_unitario,
            'unidades_caja' => $this->unidades_caja,
            'peso_caja_interna' => $this->peso_caja_interna,
            'unidades_carton' => $this->unidades_carton,
            'peso_carton' => $this->peso_carton,
            'cbm' => $this->cbm,
            'gw' => $this->gw,
            'largo' => $this->largo,
            'ancho' => $this->ancho,
            'alto' => $this->alto,
            'largo_caja_interna' => $this->largo_caja_interna,
            'ancho_caja_interna' => $this->ancho_caja_interna,
            'alto_caja_interna' => $this->alto_caja_interna,
            'largo_carton_master' => $this->largo_carton_master,
            'ancho_carton_master' => $this->ancho_carton_master,
            'alto_carton_master' => $this->alto_carton_master,
            'fecha_creacion' => $this->fecha_creacion,
            'fecha_actualizacion' => $this->fecha_actualizacion,
        ]);

        $query->andFilterWhere(['like', 'codigo_producto', $this->codigo_producto])
            ->andFilterWhere(['like', 'codigo_proveedor', $this->codigo_proveedor])
            ->andFilterWhere(['like', 'descripcion', $this->descripcion])
            ->andFilterWhere(['like', 'marca', $this->marca])
            ->andFilterWhere(['like', 'presentacion', $this->presentacion])
            ->andFilterWhere(['like', 'unidad_medida', $this->unidad_medida])
            ->andFilterWhere(['like', 'medida_unidad', $this->medida_unidad])
            ->andFilterWhere(['like', 'ruta_imagen', $this->ruta_imagen])
            ->andFilterWhere(['like', 'status', $this->status])
            ->andFilterWhere(['like', 'tipo_documento_predeterminado', $this->tipo_documento_predeterminado]);

        return $dataProvider;
    }
}
