public function search($applicablePropertyModelId, $params, $showHidden = false)
    {
        $query = self::find()
            ->where([
                'applicable_property_model_id' => $applicablePropertyModelId,
            ]);

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => 10,
            ],
        ]);
        $dataProvider->sort->attributes['name'] = [
            'asc' => ['property_group_translation.name' => SORT_ASC],
            'desc' => ['property_group_translation.name' => SORT_DESC],
        ];

        if (!($this->load($params))) {
            if ($showHidden === false) {
                $this->is_deleted = 0;
                $query->andWhere(['is_deleted' => $this->is_deleted]);
            }
            return $dataProvider;
        }

        // perform filtering
        $query->andFilterWhere(['id' => $this->id]);
        $query->andFilterWhere(['like', 'internal_name', $this->internal_name]);
        $query->andFilterWhere(['is_auto_added' => $this->is_auto_added]);
        $query->andFilterWhere(['is_deleted' => $this->is_deleted]);
        // filter by multilingual field
        $query->andFilterWhere(['like', 'property_group_translation.name', $this->name]);

        return $dataProvider;
    }