From 0ce6958e0baddb3b02766b7450fd2cebc0088ac7 Mon Sep 17 00:00:00 2001 From: Roland Schneider Date: Tue, 16 Feb 2016 21:42:13 +0100 Subject: [PATCH] add id_account to door log, add key import to backend with no menu --- backend/controllers/KeyController.php | 327 +++++++++++------- backend/models/DoorLogSearch.php | 22 +- backend/models/KeyImportForm.php | 30 ++ backend/views/door-log/_search.php | 13 + backend/views/door-log/index.php | 4 + backend/views/key/import.php | 16 + changelog.txt | 3 + common/config/params.php | 2 +- common/models/DoorLog.php | 1 + ...able__door_log__add__column_id_account.php | 30 ++ frontend/models/ReceptionForm.php | 2 + 11 files changed, 312 insertions(+), 138 deletions(-) create mode 100644 backend/models/KeyImportForm.php create mode 100644 backend/views/key/import.php create mode 100644 console/migrations/m160216_201757_alter__table__door_log__add__column_id_account.php 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() ); + +?> + +
+ field($model, 'id_account')->dropDownList( $accountOptions )->label("Kassza") ?> +
+
diff --git a/backend/views/door-log/index.php b/backend/views/door-log/index.php index d60e3e7..50ed7d0 100644 --- a/backend/views/door-log/index.php +++ b/backend/views/door-log/index.php @@ -42,6 +42,10 @@ $this->params['breadcrumbs'][] = $this->title; [ 'attribute' => 'key_number', 'label' => 'Kulcs' + ], + [ + 'attribute' => 'account_name', + 'label' => 'Kassza' ], [ 'attribute' => 'customer_id_customer', diff --git a/backend/views/key/import.php b/backend/views/key/import.php new file mode 100644 index 0000000..b4f5923 --- /dev/null +++ b/backend/views/key/import.php @@ -0,0 +1,16 @@ + +

Kulcs importálás

+ ['enctype' => 'multipart/form-data']]) ?> + + field($model, 'file')->fileInput() ?> + + + message); + ?> + + + \ No newline at end of file diff --git a/changelog.txt b/changelog.txt index 9cfabaa..287fa50 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,6 @@ +-0.0.36 + - Door log- add account + - Key import - no menu ( key/import ) -0.0.35 - Forgóvilla direction mező feldolgozása - manuális olvasás irása a door_log táblába diff --git a/common/config/params.php b/common/config/params.php index c765232..9f79908 100644 --- a/common/config/params.php +++ b/common/config/params.php @@ -4,7 +4,7 @@ return [ 'supportEmail' => 'rocho02@gmail.com', 'infoEmail' => 'info@rocho-net.hu', 'user.passwordResetTokenExpire' => 3600, - 'version' => 'v0.0.35', + 'version' => 'v0.0.36', 'company' => 'movar',//gyor 'company_name' => "Freimann Kft.", 'product_visiblity' => 'account',// on reception which products to display. account or global diff --git a/common/models/DoorLog.php b/common/models/DoorLog.php index 3456c64..ab88b0a 100644 --- a/common/models/DoorLog.php +++ b/common/models/DoorLog.php @@ -14,6 +14,7 @@ use common\components\Helper; * @property integer $id_key * @property integer $direction * @property integer $type + * @property integer $id_account * @property string $created_at * @property string $source_app */ diff --git a/console/migrations/m160216_201757_alter__table__door_log__add__column_id_account.php b/console/migrations/m160216_201757_alter__table__door_log__add__column_id_account.php new file mode 100644 index 0000000..25ec318 --- /dev/null +++ b/console/migrations/m160216_201757_alter__table__door_log__add__column_id_account.php @@ -0,0 +1,30 @@ +addColumn("door_log", "id_account", "int default null"); + } + + public function down() + { + echo "m160216_201757_alter__table__door_log__add__column_id_account cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/frontend/models/ReceptionForm.php b/frontend/models/ReceptionForm.php index e97eb4c..9286a38 100644 --- a/frontend/models/ReceptionForm.php +++ b/frontend/models/ReceptionForm.php @@ -113,6 +113,8 @@ class ReceptionForm extends Model $dlog->type = $this->card->type; $dlog->source_app = DoorLog::$SOURCE_APP_FITNESS_ADMIN; + $dlog->id_account = Account::readDefault(); + $dlog->created_at = date('Y-m-d H:i:s'); $dlog->save(false); }