public function actionIndex() { //get role based on user id $auth = Yii::$app->authManager; $id = Yii::$app->user->id; $app = \app\modules\user\models\AuthAssignment::find()->with(['itemName.ruleName'])->where(['user_id' => $id])->one(); $ruleName = $app->itemName->ruleName->name; $itemName = $app->itemName->name; $user = \app\modules\user\models\Person::find()->where(['user_id' => $id])->one(); $members = (new \yii\db\Query())->from('auth_item')->select(['person.first_name', 'person.last_name'])->where(['rule_name' => $ruleName])->join('INNER JOIN', 'auth_assignment', 'auth_assignment.item_name = auth_item.name')->join('INNER JOIN', 'user', 'user.id = auth_assignment.user_id')->join('INNER JOIN', 'person', 'person.user_id = user.id')->all(); return $this->render('index', ['ruleName' => $ruleName, 'itemName' => $itemName, 'members' => $members, 'name' => $user->first_name . ' ' . $user->last_name]); }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Person::find(); $query->joinWith(['user', 'user.assignment.itemName']); $query->where(['user.status' => USER::STATUS_ACTIVE]); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['gender' => $this->gender]); $query->andFilterWhere(['LIKE', 'CONCAT(first_name, last_name)', $this->full_name]); $query->andFilterWhere(['LIKE', 'auth_item.rule_name', $this->divisi]); $query->andFilterWhere(['LIKE', 'auth_item.name', $this->jabatan]); $dataProvider->sort->defaultOrder = ['id' => SORT_DESC]; $dataProvider->sort->attributes['full_name'] = ['asc' => ['full_name' => SORT_ASC], 'desc' => ['full_name' => SORT_DESC]]; $dataProvider->sort->attributes['email'] = ['asc' => ['user.email' => SORT_ASC], 'desc' => ['user.email' => SORT_DESC], 'label' => 'Email']; $dataProvider->sort->attributes['jabatan'] = ['asc' => ['auth_item.name' => SORT_ASC], 'desc' => ['auth_item.name' => SORT_DESC]]; $dataProvider->sort->attributes['divisi'] = ['asc' => ['auth_item.rule_name' => SORT_ASC], 'desc' => ['auth_item.rule_name' => SORT_DESC]]; return $dataProvider; }
</span> </div> </div> </form> </div> </div> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn', 'contentOptions' => ['class' => 'text-center'], 'headerOptions' => ['class' => 'text-center']], ['label' => 'Tugas Dari', 'headerOptions' => ['class' => 'text-center'], 'value' => function ($data) { // menampilkan nama karyawan yang tugas nya bukan dari diri sendiri // tugas dari diri sendiri akan diberi label strip (-) if ($data->task_from !== Yii::$app->user->id) { return $data->userFrom->person->first_name . ' ' . $data->userFrom->person->last_name; } return '-'; }, 'attribute' => 'task_from', 'filter' => ArrayHelper::map(Person::find()->joinWith(['user'])->asArray()->all(), 'user.id', 'full_name')], ['label' => 'Judul Tugas', 'headerOptions' => ['class' => 'text-center'], 'value' => 'task_title', 'attribute' => 'task_title'], ['label' => 'Tanggal Mulai', 'headerOptions' => ['class' => 'text-center'], 'contentOptions' => ['class' => 'text-center'], 'value' => function ($data) { $keterangan = date('d F Y', strtotime($data->task_start)); return $keterangan; }], ['label' => 'Tanggal Selesai', 'headerOptions' => ['class' => 'text-center'], 'contentOptions' => ['class' => 'text-center'], 'value' => function ($data) { $keterangan = date('d F Y', strtotime($data->task_end)); return $keterangan; }], ['class' => 'yii\\grid\\ActionColumn', 'headerOptions' => ['class' => 'text-center'], 'header' => 'Lampiran', 'template' => '{download}', 'contentOptions' => ['class' => 'text-center'], 'buttons' => ['download' => function ($url, $model) { if (!empty($model->attachment)) { return Html::a('<i class="fa fa-download fa-2x"></i>', Url::to(['download', 'id' => $model->id]), ['title' => 'Download Lampiran']); } return '-'; }]], ['value' => function ($model) { return Status::getPeriod($model->period); }, 'attribute' => 'period', 'headerOptions' => ['class' => 'text-center'], 'contentOptions' => ['class' => 'text-center'], 'header' => 'Periode'], ['class' => 'yii\\grid\\ActionColumn', 'header' => 'Status Tugas', 'template' => '{update}', 'headerOptions' => ['class' => 'text-center'], 'contentOptions' => ['class' => 'text-center'], 'buttons' => ['update' => function ($url, $model) { $taskStatus = Status::getTaskStatus($model->status); $taskColor = Status::getTaskColor($model->status);