diff --git a/backend/controllers/KeyController.php b/backend/controllers/KeyController.php index 11b1b3f..3a855aa 100644 --- a/backend/controllers/KeyController.php +++ b/backend/controllers/KeyController.php @@ -10,137 +10,212 @@ use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; use common\models\Customer; use backend\models\KeyCustomerSearch; +use backend\models\KeyImportForm; +use yii\web\UploadedFile; +use common\components\Helper; /** * KeyController implements the CRUD actions for Key model. */ -class KeyController extends Controller -{ - public function behaviors() - { - return [ - 'verbs' => [ - 'class' => VerbFilter::className(), - 'actions' => [ - 'delete' => ['post'], - ], - ], - ]; - } - - /** - * Lists all Key models. - * @return mixed - */ - //http://localhost/fitness-web/backend/web/index.php?r=key/index erre ezt hívja meg elsőzör - public function actionIndex() - { - $searchModel = new KeySearch(); - $dataProvider = $searchModel->search(Yii::$app->request->queryParams); +class KeyController extends Controller { + public function behaviors() { + return [ + 'verbs' => [ + 'class' => VerbFilter::className (), + 'actions' => [ + 'delete' => [ + 'post' + ] + ] + ] + ]; + } + + /** + * Lists all Key models. + * + * @return mixed + */ + // http://localhost/fitness-web/backend/web/index.php?r=key/index erre ezt hívja meg elsőzör + public function actionIndex() { + $searchModel = new KeySearch (); + $dataProvider = $searchModel->search ( Yii::$app->request->queryParams ); // backend/views/kex/index.php - return $this->render('index', [ - 'searchModel' => $searchModel, - 'dataProvider' => $dataProvider, //csomagoló osztály a queryhez - ]); - } - /** - * Lists all Key models. - * @return mixed - */ - public function actionIndexCustomer($id) - { + return $this->render ( 'index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider + ] // csomagoló osztály a queryhez + ); + } + /** + * Lists all Key models. + * + * @return mixed + */ + public function actionIndexCustomer($id) { + $model = Customer::findOne ( $id ); - $model = Customer::findOne($id); - - if ( !isset($model)){ - throw new NotFoundHttpException('The requested page does not exist.'); - } - - - $searchModel = new KeyCustomerSearch(['customer' => $model]); - $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + if (! isset ( $model )) { + throw new NotFoundHttpException ( 'The requested page does not exist.' ); + } + + $searchModel = new KeyCustomerSearch ( [ + 'customer' => $model + ] ); + $dataProvider = $searchModel->search ( Yii::$app->request->queryParams ); // backend/views/kex/index.php - return $this->render('index-customer', [ - 'searchModel' => $searchModel, - 'dataProvider' => $dataProvider, //csomagoló osztály a queryhez - ]); - } - - /** - * Displays a single Key model. - * @param integer $id - * @return mixed - */ - public function actionView($id) - { - return $this->render('view', [ - 'model' => $this->findModel($id), - ]); - } - - /** - * Creates a new Key model. - * If creation is successful, the browser will be redirected to the 'view' page. - * @return mixed - */ - public function actionCreate() - { - $model = new Key(); - - if ($model->load(Yii::$app->request->post()) && $model->save()) { - return $this->redirect(['view', 'id' => $model->id_key]); - } else { - return $this->render('create', [ - 'model' => $model, - ]); - } - } - - /** - * Updates an existing Key model. - * If update is successful, the browser will be redirected to the 'view' page. - * @param integer $id - * @return mixed - */ - public function actionUpdate($id) - { - $model = $this->findModel($id); - - if ($model->load(Yii::$app->request->post()) && $model->save()) { - return $this->redirect(['view', 'id' => $model->id_key]); - } else { - return $this->render('update', [ - 'model' => $model, - ]); - } - } - - /** - * Deletes an existing Key model. - * If deletion is successful, the browser will be redirected to the 'index' page. - * @param integer $id - * @return mixed - */ - public function actionDelete($id) - { - $this->findModel($id)->delete(); - - return $this->redirect(['index']); - } - - /** - * Finds the Key model based on its primary key value. - * If the model is not found, a 404 HTTP exception will be thrown. - * @param integer $id - * @return Key the loaded model - * @throws NotFoundHttpException if the model cannot be found - */ - protected function findModel($id) - { - if (($model = Key::findOne($id)) !== null) { - return $model; - } else { - throw new NotFoundHttpException('The requested page does not exist.'); - } - } + return $this->render ( 'index-customer', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider + ] // csomagoló osztály a queryhez + ); + } + + /** + * Displays a single Key model. + * + * @param integer $id + * @return mixed + */ + public function actionView($id) { + return $this->render ( 'view', [ + 'model' => $this->findModel ( $id ) + ] ); + } + + /** + * Creates a new Key model. + * If creation is successful, the browser will be redirected to the 'view' page. + * + * @return mixed + */ + public function actionCreate() { + $model = new Key (); + + if ($model->load ( Yii::$app->request->post () ) && $model->save ()) { + return $this->redirect ( [ + 'view', + 'id' => $model->id_key + ] ); + } else { + return $this->render ( 'create', [ + 'model' => $model + ] ); + } + } + + /** + * Updates an existing Key model. + * If update is successful, the browser will be redirected to the 'view' page. + * + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) { + $model = $this->findModel ( $id ); + + if ($model->load ( Yii::$app->request->post () ) && $model->save ()) { + return $this->redirect ( [ + 'view', + 'id' => $model->id_key + ] ); + } else { + return $this->render ( 'update', [ + 'model' => $model + ] ); + } + } + + /** + * Deletes an existing Key model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * + * @param integer $id + * @return mixed + */ + public function actionDelete($id) { + $this->findModel ( $id )->delete (); + + return $this->redirect ( [ + 'index' + ] ); + } + + public function actionImport() { + $model = new KeyImportForm(); + $arr = [ ]; + + if (Yii::$app->request->isPost) { + $model->file = UploadedFile::getInstance ( $model, 'file' ); + + // print_r($model->file); + // $model->message = "ok"; + $file = $model->file->tempName; + + $file = fopen ( $file, "r" ); + + $trans = null; + $i = 0; + $j = 0; + while ( ($data = fgetcsv ( $file, 0, "," )) != null ) { + // if ($i == 0) { + // $i ++; + // continue; + // } + $j ++; + $number = $key = false; + if (isset ( $data [0] )) { + $number = $data [0]; + } + + if (isset ( $data [1] )) { + $key = $data [1]; + } + + if (isset ( $number ) && isset ( $key ) && ! strpos ( $key, "E+" ) && strlen ( $key ) > 7) { + $item = [ ]; + $item ['number'] = $number; + $item ['key'] = Helper::fixAsciiChars ( $key ); + $arr [] = $item; + } + } + + foreach ( $arr as $item ) { + try { + $key = new Key (); + $key->number = $item ['number']; + $key->rfid_key = $item ['key']; + $key->status = Key::STATUS_ACTIVE; + $key->type = Key::TYPE_NORMAL; + $key->save ( false ); + } catch ( \Exception $e ) { + \Yii::error ( "Failed to save key: " . $key->number ); + } + } + + $this->redirect ( [ + 'import' + ] ); + } + + return $this->render ( 'import', [ + 'model' => $model + ] ); + } + + /** + * Finds the Key model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * + * @param integer $id + * @return Key the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) { + if (($model = Key::findOne ( $id )) !== null) { + return $model; + } else { + throw new NotFoundHttpException ( 'The requested page does not exist.' ); + } + } } diff --git a/backend/models/DoorLogSearch.php b/backend/models/DoorLogSearch.php index 99f15aa..07d00e7 100644 --- a/backend/models/DoorLogSearch.php +++ b/backend/models/DoorLogSearch.php @@ -30,7 +30,7 @@ class DoorLogSearch extends DoorLog public function rules() { return [ - [[ 'direction', 'type'], 'integer'], + [[ 'direction', 'type' ,'id_customer','id_account'], 'integer'], [['created_at'], 'safe'], [['searchCardNumber','searchCustomerName','searchKeyName'], 'safe'], // [[ 'start', ], 'date' , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], @@ -81,11 +81,13 @@ class DoorLogSearch extends DoorLog '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' + 'door_log.source_app as door_log_source_app', + 'account.name as account_name' ]); $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([ @@ -125,6 +127,10 @@ class DoorLogSearch extends DoorLog '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], ] ], ] @@ -139,15 +145,9 @@ class DoorLogSearch extends DoorLog } $query->andFilterWhere([ -// 'id_door_log' => $this->id_door_log, -// 'id_card' => $this->id_card, -// 'id_customer' => $this->id_customer, -// 'id_key' => $this->id_key, - 'direction' => $this->direction, - 'id_customer' => $this->id_customer - -// 'type' => $this->type, -// 'created_at' => $this->created_at, + '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]); diff --git a/backend/models/KeyImportForm.php b/backend/models/KeyImportForm.php new file mode 100644 index 0000000..ef17a14 --- /dev/null +++ b/backend/models/KeyImportForm.php @@ -0,0 +1,30 @@ + +'Mind']+ HtmlHelper::mkAccountOptions( Account::read() ); + +?> +