History.php 1.24 KB
<?php
    
    namespace artbox\catalog\components;
    
    use artbox\catalog\models\Variant;
    use yii\base\Object;
    use yii\db\ActiveQuery;
    
    class History extends Object
    {
        /**
         * Add Variant to history
         *
         * @param int $variantId
         */
        public function add(int $variantId)
        {
            $history = $this->get();
            if (!in_array($variantId, $history)) {
                array_push($history, $variantId);
            }
            \Yii::$app->session->set('history', $history);
        }
        
        /**
         * Get variantIds from history
         *
         * @return array
         */
        public function get(): array
        {
            return \Yii::$app->session->get('history', []);
        }
        
        /**
         * Get Variants query from history
         *
         * @return \yii\db\ActiveQuery
         */
        public function getModels(): ActiveQuery
        {
            return Variant::find()
                          ->where(
                              [
                                  'id'     => $this->get(),
                                  'status' => true,
                              ]
                          );
        }
    }