'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], // [[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], [[ 'start', ], 'date', 'format' =>Yii::$app->formatter->datetimeFormat , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm' ,'timeZone' => 'UTC' ], [[ 'end' , ], 'date' ,'format' =>Yii::$app->formatter->datetimeFormat , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm' ,'timeZone' => 'UTC' ], ]; } public function attributeLabels(){ return [ 'searchCardNumber' => 'Kártya szám', 'searchCustomerName' => 'Vendég', 'searchKeyName' => 'Kulcs szám', 'type' => 'Típus', 'direction' => 'Esemény', 'start' => 'Időszak kezdete', 'end' => 'Időszak vége' ]; } /** * @inheritdoc */ public function scenarios() { // bypass scenarios() implementation in the parent class return Model::scenarios(); } /** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = new Query(); $query->select([ 'door_log.id_door_log as door_log_id', 'card.number as card_number', 'door_log.type as door_log_type', 'key.number as key_number', 'customer.name as customer_name', 'customer.id_customer as customer_id_customer', 'door_log.direction as door_log_direction', 'door_log.created_at as door_log_created_at', 'door_log.source_app as door_log_source_app', 'account.name as account_name', 'door_log.card_flag as door_log_card_flag', ]); $query->from('door_log'); $query->innerJoin('card','card.id_card = door_log.id_card'); $query->leftJoin('key','key.id_key = door_log.id_key'); $query->leftJoin('account','account.id_account = door_log.id_account'); $query->leftJoin('customer','customer.id_customer = door_log.id_customer'); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' =>[ 'defaultOrder' =>[ 'door_log_created_at' => SORT_DESC ], 'attributes' => [ // 'age', 'card_number' => [ 'asc' => ['card.number' => SORT_ASC ], 'desc' => ['card.number' => SORT_DESC], ], 'key_number' => [ 'asc' => ['key.number' => SORT_ASC ], 'desc' => ['key.number' => SORT_DESC], ], 'customer_name' => [ 'asc' => ['customer.name' => SORT_ASC ], 'desc' => ['customer.name' => SORT_DESC], ], 'customer_id_customer' => [ 'asc' => ['customer.id_customer' => SORT_ASC ], 'desc' => ['customer.id_customer' => SORT_DESC], ], 'door_log_direction' => [ 'asc' => ['door_log.direction' => SORT_ASC ], 'desc' => ['door_log.direction' => SORT_DESC], ], 'door_log_created_at' => [ 'asc' => ['door_log.created_at' => SORT_ASC ], 'desc' => ['door_log.created_at' => SORT_DESC], ], 'door_log_source_app' => [ 'asc' => ['door_log.source_app' => SORT_ASC ], 'desc' => ['door_log.source_app' => SORT_DESC], ], 'door_log_type' =>[ 'asc' => ['door_log.type' => SORT_ASC ], 'desc' => ['door_log.type' => SORT_DESC], ], 'account_name' =>[ 'asc' => ['account.name' => SORT_ASC ], 'desc' => ['account.name' => SORT_DESC], ], 'door_log_card_flag' =>[ 'asc' => ['door_log_card_flag' => SORT_ASC ], 'desc' => ['door_log_card_flag' => SORT_DESC], ] ], ] ]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails $query->where('0=1'); return $dataProvider; } $query->andFilterWhere([ 'door_log.direction' => $this->direction, 'door_log.id_customer' => $this->id_customer, 'account.id_account' => $this->id_account, ]); $query->andFilterWhere(['>=', 'door_log.created_at', $this->timestampStart]); $query->andFilterWhere(['<', 'door_log.created_at', $this->timestampEnd]); if ( !empty($this->searchCardNumber)){ $query->andWhere(['or', ['and',[ 'in','card.number' , [$this->searchCardNumber]],"trim(coalesce(card.number, '')) <>'' " ], ['and', ['in','card.rfid_key' ,[ $this->searchCardNumber] ],"trim(coalesce(card.rfid_key, '')) <>'' "], ]); } if ( !empty($this->searchKeyName)){ $query->andWhere(['or', ['and',[ 'in','key.number' , [$this->searchKeyName]],"trim(coalesce(key.number, '')) <>'' " ], ['and', ['in','key.rfid_key' ,[ $this->searchKeyName] ],"trim(coalesce(key.rfid_key, '')) <>'' "] ]); } $query->andFilterWhere(['like', 'customer.name', $this->searchCustomerName]); return $dataProvider; } public static function getAllDoorLog(){ $result = DoorLog::getDirectionTypes(); $result = $result + [ 0 => "Kézi olvasás" ]; return $result; } }