use yii\data\ActiveDataProvider;
use yii_app\records\MarketplaceOrderStatusHistory;
+
/**
* MarketplaceOrderStatusHistorySearch represents the model behind the search form of `yii_app\records\MarketplaceOrderStatusHistory`.
*/
class MarketplaceOrderStatusHistorySearch extends MarketplaceOrderStatusHistory
{
+ public $status_code; // Добавляем свойство для поиска по коду статуса
+ public $substatus_code; // Добавляем свойство для поиска по коду подстатуса
/**
* {@inheritdoc}
*/
{
return [
[['id', 'order_id', 'status_id', 'substatus_id', 'active'], 'integer'],
- [['date_from', 'date_end', 'initiator'], 'safe'],
+ [['date_from', 'date_end', 'initiator', 'status_code', 'substatus_code'], 'safe'],
];
}
*/
public function search($params, $formName = null)
{
- $query = MarketplaceOrderStatusHistory::find();
+ $query = MarketplaceOrderStatusHistory::find()
+ ->joinWith(['status statusAlias', 'substatus substatusAlias']);
// add conditions that should always apply here
]);
$query->andFilterWhere(['ilike', 'initiator', $this->initiator]);
+ // Фильтр по коду статуса (с псевдонимом)
+ $query->andFilterWhere(['ilike', 'statusAlias.code', $this->status_code]);
+
+ // Фильтр по коду подстатуса (с псевдонимом)
+ $query->andFilterWhere(['ilike', 'substatusAlias.code', $this->substatus_code]);
return $dataProvider;
}
/** @var yii_app\records\MarketplaceOrderStatusHistorySearch $searchModel */
/** @var yii\data\ActiveDataProvider $dataProvider */
-$this->title = 'Marketplace Order Status Histories';
+$this->title = 'История статусов';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="marketplace-order-status-history-index p-4">
]);
}
],
- 'status_id',
- 'substatus_id',
- 'active',
+ [
+ 'attribute' => 'status_id',
+ 'format' => 'raw',
+ 'value' => function ($model) {
+ $status = $model->status->code ?? '';
+ $class = '';
+ if ($status === 'DELIVERED') {
+ $class = 'bg-success text-white';
+ } elseif ($status === 'CANCELLED') {
+ $class = 'bg-danger text-white';
+ }
+ return Html::tag('span', $status, ['class' => "badge $class"]);
+ },
+ 'filter' => Html::input('text', 'MarketplaceOrdersSearch[status_code]', $searchModel->status_code, ['class' => 'form-control']),
+ ],
+ [
+ 'attribute' => 'substatus_id',
+ 'value' => function ($model) {
+ return $model->substatus->code ?? '-';
+ },
+ 'filter' => Html::input('text', 'MarketplaceOrdersSearch[substatus_code]', $searchModel->substatus_code, ['class' => 'form-control']),
+ ],
+ [
+ 'attribute' => 'active',
+ 'format' => 'raw',
+ 'value' => function ($model) {
+ $text = '';
+ $class = '';
+ if ($model->active === 1) {
+ $class = 'bg-success text-white';
+ $text = 'Активная';
+ } elseif ($model->active === 0) {
+ $class = 'bg-danger text-white';
+ $text = 'Неактивная';
+ }
+ return Html::tag('span', $text, ['class' => "badge $class"]);
+ },
+ 'filter' => Html::input('text', 'MarketplaceOrdersSearch[status_code]', $searchModel->status_code, ['class' => 'form-control']),
+ ],
'date_from',
'date_end',
'initiator:ntext',