/**
     * Displays a single Issues model.
     * @param integer $id
     * @return mixed
     */
    public function actionIssues($type, $id, $key = null)
    {
        switch ($type) {
            case 'all':
                $this->model = new Issues();
                break;
            default:
                $this->model = Issues::findModel([$id, $type]);
                break;
        }
        $searchModel = new IssuesSearch(['queryOptions' => ['with' => ['closedBy', 'resolvedBy']]]);
        $get = \Yii::$app->request->getQueryParams();
        $params = array_merge($get, $this->model->constraints);
        unset($params['type'], $params['id'], $params['key']);
        $options = ['enableComments' => $this->enableComments];
        switch ($key) {
            case 'duplicate':
                $params = array_merge($params, ['duplicate' => true]);
                $orderBy = ['id' => SORT_DESC];
                break;
            case 'closed':
                $params = array_merge($params, ['closed' => true]);
                $orderBy = ['closed_at' => SORT_DESC];
                break;
            case 'open':
                $params = array_merge($params, ['closed' => false]);
                $orderBy = ['id' => SORT_DESC];
                break;
            case 'resolved':
                $params = array_merge($params, ['resolved' => true]);
                $orderBy = ['resolved_at' => SORT_DESC];
                break;
            case 'unresolved':
                $params = array_merge($params, ['resolved' => false]);
                $orderBy = ['id' => SORT_DESC];
                break;
            default:
                $orderBy = [];
                break;
        }
        $dataProvider = $searchModel->search($params);
        $dataProvider->query->orderBy($orderBy);
        Response::viewOptions(null, ['args' => ["content" => $this->renderAjax('issues', ['enableComments' => $this->enableComments, 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'options' => $options, 'parentId' => $id, 'parentType' => $type, 'filterType' => $key])], 'modalOptions' => ['contentOnly' => true], 'js' => \Yii::$app->request->isAjax ? new \yii\web\JsExpression('$nitm.onModuleLoad("issue-tracker", function (module) {
				module.initDefaults("#issues-' . $key . '-list' . $id . '", "issue-tracker");
			});') : ''], true);
        //$this->setResponseFormat(\Yii::$app->request->isAjax ? 'modal' : 'html');
        return $this->renderResponse(null, null, \Yii::$app->request->isAjax);
    }
 public function run()
 {
     $dataProvdier = null;
     $searchModel = new IssuesSearch(['queryOptions' => ['with' => ['author', 'editor', 'closedBy', 'resolvedBy']]]);
     $get = \Yii::$app->request->getQueryParams();
     $params = array_merge($get, $this->model->getConstraints());
     $params['closed'] = false;
     switch (is_array($this->items) && !empty($this->items)) {
         case true:
             $dataProvider = new \yii\data\ArrayDataProvider(["allModels" => $this->items]);
             break;
         default:
             switch ($this->model instanceof IssuesModel) {
                 case true:
                     unset($params['type']);
                     unset($params['id']);
                     $dataProvider = $searchModel->search(array_merge($params));
                     break;
             }
             break;
     }
     switch (is_null($dataProvider)) {
         case false:
             $dataProvider->setSort(['defaultOrder' => ['id' => SORT_DESC]]);
             $dataProviderOpen = $searchModel->search(array_replace($params, ['closed' => false]));
             $dataProviderClosed = $searchModel->search(array_replace($params, ['closed' => true]));
             $dataProviderDuplicate = $searchModel->search(array_replace($params, ['duplicate' => true]));
             $dataProviderResolved = $searchModel->search(array_replace($params, ['resolved' => true]));
             $dataProviderUnresolved = $searchModel->search(array_replace($params, ['resolved' => false]));
             $dataProviderOpen->query->orderBy(['id' => SORT_DESC]);
             $dataProviderClosed->query->orderBy(['closed_at' => SORT_DESC]);
             $issues = $this->render('@nitm/widgets/views/issue/index', ['dataProviderOpen' => $dataProviderOpen, 'dataProviderClosed' => $dataProviderClosed, 'dataProviderResolved' => $dataProviderResolved, 'dataProviderUnresolved' => $dataProviderUnresolved, 'dataProviderDuplicate' => $dataProviderDuplicate, 'searchModel' => $searchModel, 'parentId' => $this->parentId, 'parentType' => $this->parentType, 'useModal' => $this->useModal, 'enableComments' => $this->enableComments]);
             break;
         default:
             $issues = 'No Issues';
             break;
     }
     $this->options['id'] .= $this->parentId;
     return Html::tag('div', $issues, $this->options);
 }