<?php
    use common\modules\comment\models\CommentModelSearch;
    use yii\data\ActiveDataProvider;
    use yii\grid\GridView;
    use yii\helpers\Html;
    use yii\widgets\Pjax;
    
    /**
     * @var ActiveDataProvider $dataProvider
     * @var CommentModelSearch $searchModel
     * @var string             $commentModel
     */
    $statuses = [
        $searchModel::STATUS_ACTIVE => 'Активный',
        $searchModel::STATUS_HIDDEN => 'Скрытый',
        $searchModel::STATUS_DELETED => 'Удаленный',
    ];
    Pjax::begin();
    if(($success = \Yii::$app->session->getFlash('artbox_comment_success')) != null) {
        echo Html::tag('p', $success);
    }
    echo GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            [
                'class' => 'yii\grid\ActionColumn',
                'template' => '{update} {delete}',
            ],
            [
                'attribute' => 'artbox_comment_id',
                'label' => 'Идентификатор',
            ],
            [
                'attribute' => 'date_add',
                'format' => ['date', 'php:d.m.Y'],
                'filter' => false,
            ],
            'text:text',
            [
                'attribute' => 'user_id',
                'value' => function($model) {
                    if(!empty($model->user_id)) {
                        return $model->user->username . ' (id:' . $model->user->id . ')';
                    } else {
                        return $model->username.' '.$model->email.' (Гость)';
                    }
                }
            ],
            [
                'attribute' => 'status',
                'filter' => $statuses,
                'value' => function($model) use($statuses) {
                    return $statuses[$model->status];
                }
            ],
            [
                'attribute' => 'rating_value',
                'label' => $searchModel->getAttributeLabel('rating_value'),
                'value' => function($model) {
                    if(!empty($model->rating)) {
                        return $model->rating->value;
                    }
                    return NULL;
                }
            ],
            'entity',
            'entity_id',
            [
                'attribute' => 'children_count',
                'label' => $searchModel->getAttributeLabel('children_count'),
                'value' => function($model) {
                    return count($model->children);
                }
            ],
        ],
    ]);
    Pjax::end();