From 70f43468af7e7f8b951135413dcb4b84e6342e1e Mon Sep 17 00:00:00 2001 From: Roland Schneider Date: Sat, 13 Feb 2016 17:23:43 +0100 Subject: [PATCH] add contraint , that everybody expect admin is limited to 3 days, Add card package --- backend/components/AdminMenuStructure.php | 4 +- backend/controllers/CardController.php | 105 +++++- backend/controllers/CardPackageController.php | 315 ++++++++++++++++++ backend/models/AccountStateSearch.php | 3 + backend/models/CardInsertForm.php | 30 ++ backend/models/CardPackageImportForm.php | 32 ++ backend/models/CardPackageSearch.php | 92 +++++ backend/models/TransferSearch.php | 14 +- backend/views/card-package/_form.php | 28 ++ backend/views/card-package/_search.php | 49 +++ backend/views/card-package/create.php | 21 ++ backend/views/card-package/import.php | 38 +++ backend/views/card-package/index.php | 81 +++++ backend/views/card-package/update.php | 23 ++ backend/views/card-package/view.php | 59 ++++ backend/views/card/insert.php | 16 + backend/web/images/card_package.jpg | Bin 0 -> 138137 bytes changelog.txt | 2 + .../FreeUniqueCardNumberGenerator.php | 40 +++ common/components/Helper.php | 103 ++++++ common/components/XLSUtil.php | 44 +++ .../accountstate/AccountStateMail.php | 12 +- common/config/params.php | 5 +- common/models/CardCardPackageAssignment.php | 50 +++ common/models/CardPackage.php | 80 +++++ common/models/Transfer.php | 17 + common/models/TransferSaleSearch.php | 11 + common/models/TransferTicketSearch.php | 24 ++ ...211_111418_create__table__card_package.php | 50 +++ ...able__card_package__add_column_printed.php | 30 ++ frontend/components/FrontendMenuStructure.php | 4 +- .../controllers/AccountStateController.php | 13 +- frontend/models/AccountstateSearch.php | 3 + frontend/models/MoneyMovementSearch.php | 3 + frontend/models/TransferSearch.php | 4 + frontend/web/js/app.js | 26 ++ frontend/web/js/product.sell.js | 6 +- 37 files changed, 1418 insertions(+), 19 deletions(-) create mode 100644 backend/controllers/CardPackageController.php create mode 100644 backend/models/CardInsertForm.php create mode 100644 backend/models/CardPackageImportForm.php create mode 100644 backend/models/CardPackageSearch.php create mode 100644 backend/views/card-package/_form.php create mode 100644 backend/views/card-package/_search.php create mode 100644 backend/views/card-package/create.php create mode 100644 backend/views/card-package/import.php create mode 100644 backend/views/card-package/index.php create mode 100644 backend/views/card-package/update.php create mode 100644 backend/views/card-package/view.php create mode 100644 backend/views/card/insert.php create mode 100644 backend/web/images/card_package.jpg create mode 100644 common/components/FreeUniqueCardNumberGenerator.php create mode 100644 common/components/XLSUtil.php create mode 100644 common/models/CardCardPackageAssignment.php create mode 100644 common/models/CardPackage.php create mode 100644 console/migrations/m160211_111418_create__table__card_package.php create mode 100644 console/migrations/m160212_051248_alter__table__card_package__add_column_printed.php diff --git a/backend/components/AdminMenuStructure.php b/backend/components/AdminMenuStructure.php index ad9f591..0c26d78 100644 --- a/backend/components/AdminMenuStructure.php +++ b/backend/components/AdminMenuStructure.php @@ -78,6 +78,8 @@ class AdminMenuStructure{ $items[] = ['label' => 'Bérletkártyák', 'url' => ['/card/index'] ]; $items[] = ['label' => 'Bérletek', 'url' => ['/ticket/index' , 'TicketSearch[start]' =>$today,'TicketSearch[end]' => $tomorrow ] ]; $items[] = ['label' => 'Statisztika', 'url' => ['/ticket/statistics' , 'TicketSearchStatisitcs[start]' =>$today,'TicketSearchStatisitcs[end]' => $tomorrow ] ]; + $items[] = ['label' => 'Kártya létrehozás', 'url' => ['/card-package/index' , ] ]; + $items[] = ['label' => 'Kártya csomag RFId hozzárendelés', 'url' => ['/card-package/import' , ] ]; $this->menuItems[] = ['label' => 'Bérletek/Vendégek', 'url' => $this->emptyUrl, 'items' => $items ]; @@ -119,7 +121,7 @@ class AdminMenuStructure{ // $items[] = ['label' => 'Bevétel', 'url' => ['/transfer/summary' , 'TransferSummarySearch[start]' =>$today,'TransferSummarySearch[end]' => $tomorrow ] ]; // $items[] = ['label' => 'Napi bevételek', 'url' => ['/transfer/list', 'TransferListSearch[start]' =>$todayDatetime,'TransferListSearch[end]' => $tomorrowDatetime ] ]; // $items[] = ['label' => 'Kassza müveletek', 'url' => ['/account-state/index'] ]; - if ( RoleDefinition::isAdmin() || RoleDefinition::isEmployee() ){ + if ( RoleDefinition::isAdmin() ){ $this->menuItems[] = ['label' => 'Tartós megbízások', 'url' => $this->emptyUrl, 'items' => $items ]; diff --git a/backend/controllers/CardController.php b/backend/controllers/CardController.php index 852fb63..f1bb0cf 100644 --- a/backend/controllers/CardController.php +++ b/backend/controllers/CardController.php @@ -12,6 +12,7 @@ use yii\helpers\Json; use backend\models\CardImportRfidForm; use yii\web\UploadedFile; use common\components\Helper; +use backend\models\CardInsertForm; /** * CardController implements the CRUD actions for Card model. @@ -30,7 +31,8 @@ class CardController extends \backend\controllers\BackendController { 'view', 'update', 'list' , - 'import-rfid' + 'import-rfid', + 'insert' ], 'allow' => true, 'roles' => [ @@ -224,6 +226,7 @@ class CardController extends \backend\controllers\BackendController { $failed = []; $sqls = []; + $inserts = []; foreach ($arr as $item ){ $card = Card::find()->andWhere(['number' => $item['number']])->one(); if ( $card != null ){ @@ -232,7 +235,17 @@ class CardController extends \backend\controllers\BackendController { $sqls[] = $sql; $i++; }else{ - $failed [] = $item; +// $failed [] = $item; + $sql = "insert into card (number,status,type,created_at,updated_at, rfid_key) values("; + $sql .= " '" .$item['number'] . "'" ; + $sql .= " ," . Card::STATUS_ACTIVE ; + $sql .= " ," . Card::TYPE_RFID; + $sql .= " ,'" . date("Y-m-d H:i:s") ."'" ; + $sql .= " ,'" . date("Y-m-d H:i:s") ."'" ; + $sql .=" ,'" .$item['key'] ."'"; + $sql .= " );"; + $inserts[] = $sql; +// rfid_key = '" . strtolower( $item['key'] )."' where id_card = " .$card->id_card .";"; } } @@ -241,6 +254,8 @@ class CardController extends \backend\controllers\BackendController { $model->message .= "
failed: " . print_r($failed,true); $model->message .= "
sql:"; $model->message .= "
". implode("
", $sqls); + $model->message .= "


Inserts


"; + $model->message .= "
". implode("
", $inserts); } @@ -248,4 +263,90 @@ class CardController extends \backend\controllers\BackendController { 'model' => $model ] ); } + + + + public function actionInsert() { + $model = new CardInsertForm(); + $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; + } + + + } + + $failed = []; + $sqls = []; + $inserts = []; + foreach ($arr as $item ){ + // $failed [] = $item; + $sql = "insert into card (number,status,type,created_at,updated_at, rfid_key) values("; + $sql .= " '" .$item['number'] . "'" ; + $sql .= " ," . Card::STATUS_ACTIVE ; + $sql .= " ," . Card::TYPE_RFID; + $sql .= " ,'" . date("Y-m-d H:i:s") ."'" ; + $sql .= " ,'" . date("Y-m-d H:i:s") ."'" ; + $sql .=" ,'" .$item['key'] ."'"; + $sql .= " );"; + $inserts[] = $sql; + } + + $model->message = "rows read: " .$j ." / ". "updated cards: " .$i; + $model->message .= "
array size: " . count($arr); + $model->message .= "
failed: " . print_r($failed,true); + $model->message .= "
sql:"; + $model->message .= "
". implode("
", $sqls); + $model->message .= "


Inserts


"; + $model->message .= "
". implode("
", $inserts); + + + $inserts = implode("\n", $inserts); + header("Content-type:text/plain"); //for pdf file + //header('Content-Type:text/plain; charset=ISO-8859-15'); + //if you want to read text file using text/plain header + header('Content-Disposition: attachment; filename="insert.sql"'); + header('Content-Length: ' . strlen($inserts)); + echo $inserts; + exit(); + + } + + return $this->render ( 'insert.php', [ + 'model' => $model + ] ); + } + + } diff --git a/backend/controllers/CardPackageController.php b/backend/controllers/CardPackageController.php new file mode 100644 index 0000000..2c9ae59 --- /dev/null +++ b/backend/controllers/CardPackageController.php @@ -0,0 +1,315 @@ + [ + 'class' => VerbFilter::className (), + 'actions' => [ + 'delete' => [ + 'post' + ] + ] + ] + ]; + } + + /** + * Lists all CardPackage models. + * + * @return mixed + */ + public function actionIndex() { + $searchModel = new CardPackageSearch (); + $dataProvider = $searchModel->search ( Yii::$app->request->queryParams ); + + return $this->render ( 'index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider + ] ); + } + + /** + * Displays a single CardPackage model. + * + * @param integer $id + * @return mixed + */ + public function actionView($id) { + $model = $this->findModel ( $id ); + + $query = Card::find (); + $query->innerJoin ( "card_card_package_assignment", "card_card_package_assignment.id_card = card.id_card " ); + $query->andWhere ( [ + 'card_card_package_assignment.id_card_package' => $id + ] ); + + $dataProvider = new ActiveDataProvider ( [ + 'query' => $query + ] ); + + return $this->render ( 'view', [ + 'model' => $model, + 'dataProvider' => $dataProvider + ] ); + } + public function actionDownload($id) { + $model = $this->findModel ( $id ); + + $model->updateCounters ( [ + 'printed' => 1 + ] ); + + $query = Card::find (); + $query->innerJoin ( "card_card_package_assignment", "card_card_package_assignment.id_card = card.id_card " ); + $query->andWhere ( [ + 'card_card_package_assignment.id_card_package' => $id + ] ); + + $cards = $query->all (); + + $numbers = [ ]; + foreach ( $cards as $card ) { + $numbers [] = $card->number; + } + + $this->generateXLS ( $model, $numbers ); + } + + /** + * Creates a new CardPackage model. + * If creation is successful, the browser will be redirected to the 'view' page. + * + * @return mixed + */ + public function actionCreate() { + $model = new CardPackage (); + $model->id_user = \Yii::$app->user->id; + $model->printed = 0; + + if ($model->load ( Yii::$app->request->post () ) && $model->validate ()) { + $conn = \Yii::$app->db; + $tx = $conn->beginTransaction (); + + $model->save ( false ); + + $count = $model->count; + + $numGen = new FreeUniqueCardNumberGenerator ( [ + 'count' => $model->count, + 'prefix' => '10' + ] ); + + $numGen->generate (); + + $numbers = $numGen->cache; + + try { + foreach ( $numbers as $number ) { + + $card = new Card (); + $card->number = $number; + $card->type = Card::TYPE_RFID; + $card->status = Card::STATUS_ACTIVE; + $card->save ( false ); + + $cardAssignment = new CardCardPackageAssignment (); + $cardAssignment->id_card = $card->id_card; + $cardAssignment->id_card_package = $model->id_card_package; + $cardAssignment->save ( false ); + } + $tx->commit (); + + return $this->redirect ( [ + 'index' + ] ); + } catch ( \Exception $e ) { + $tx->rollBack (); + } + + return $this->render ( 'create', [ + 'model' => $model + ] ); + } else { + return $this->render ( 'create', [ + 'model' => $model + ] ); + } + } + protected function generateXLS($model, $numbers) { + $objPHPExcel = new \PHPExcel (); + + $sheet = $objPHPExcel->setActiveSheetIndex ( 0 ); + + // $row = 1; + // $sheet->setCellValue('A'.$row, "Termék név") + // ->setCellValue('B'.$row, "Eladási ár") + // ->setCellValue('C'.$row, "Kassza") + // ->setCellValue('D'.$row, "Eladott mennyiség") + // ->setCellValue('E'.$row, "Eladás összege"); + $row = 0; + + foreach ( $numbers as $number ) { + $row ++; + $sheet->setCellValue ( 'A' . $row, $number ); + } + + $fileName = "kartya_csomag"; + $fileName .= "_" . $model->id_card_package; + $fileName .= "_" . date ( "Ymd_His" ); + $fileName .= ".xls"; + + // Redirect output to a client’s web browser (Excel5) + header ( 'Content-Type: application/vnd.ms-excel' ); + header ( 'Content-Disposition: attachment;filename="' . $fileName . '"' ); + header ( 'Cache-Control: max-age=0' ); + // If you're serving to IE 9, then the following may be needed + header ( 'Cache-Control: max-age=1' ); + // If you're serving to IE over SSL, then the following may be needed + header ( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); // Date in the past + header ( 'Last-Modified: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' ); // always modified + header ( 'Cache-Control: cache, must-revalidate' ); // HTTP/1.1 + header ( 'Pragma: public' ); // HTTP/1.0 + $objWriter = \PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' ); + $objWriter->save ( 'php://output' ); + exit (); + } + public function actionImport() { + $model = new CardPackageImportForm (); + + if (Yii::$app->request->isPost) { + $model->file = UploadedFile::getInstance ( $model, 'file' ); + + + + if ($model->validate ()) { + + + // print_r($model->file); + // $model->message = "ok"; + $file = $model->file->tempName; + $xlsUtil = new XLSUtil (); + $xlsUtil->loadFromFileName ( $file ); + $array = $xlsUtil->toArray (); + +// print_r($array); +// print_r( array_column($array, 2)); + +// foreach ($array as $item ){ +// echo $item[2]; +// } + + foreach ( $array as $row ) { + try { + $tx = \Yii::$app->db->beginTransaction (); + + $card = Card::find ()->andWhere ( [ + 'number' => $row [0] + ] )->one (); + + if ( isset( $card )) { + $card->rfid_key = Helper::fixAsciiChars( $row [2 ] ); + $card->save(false); + }else{ + throw new \Exception("Card not found"); + } + + + $tx->commit (); + + $model->done = $model->done + 1; + } catch ( \Exception $e ) { + $tx->rollBack (); + $model->failed = $model->failed + 1; + \Yii::error ( "Failed to import card rfid: " . print_r ( $row, true ) ); + } + } + + \Yii::$app->session->setFlash ( 'success', "Az importálás eredménye: sikeres:" . $model->done . "; Sikertelen: " . $model->failed ); + + \Yii::info('Importálás: sikeres: ' .$model->done . " , sikertelen: " . $model->failed); + return $this->redirect ( [ + 'card-package/import' + ] ); + } + } + + return $this->render ( "import", [ + 'model' => $model + ] ); + } + + /** + * Updates an existing CardPackage 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_card_package + ] ); + } else { + return $this->render ( 'update', [ + 'model' => $model + ] ); + } + } + + /** + * Deletes an existing CardPackage 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 CardPackage model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * + * @param integer $id + * @return CardPackage the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) { + if (($model = CardPackage::findOne ( $id )) !== null) { + return $model; + } else { + throw new NotFoundHttpException ( 'The requested page does not exist.' ); + } + } +} diff --git a/backend/models/AccountStateSearch.php b/backend/models/AccountStateSearch.php index 359921a..9911d9b 100644 --- a/backend/models/AccountStateSearch.php +++ b/backend/models/AccountStateSearch.php @@ -8,6 +8,7 @@ use yii\data\ActiveDataProvider; use common\models\AccountState; use common\components\RoleDefinition; use common\models\Account; +use common\components\Helper; /** * AccountStateSearch represents the model behind the search form about `common\models\AccountState`. @@ -65,6 +66,8 @@ class AccountStateSearch extends AccountState if ( RoleDefinition::isReception()){ $query->andWhere(['transfer.id_user' => Yii::$app->user->id ]); } + + Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart,['account_state.created_at'],"date" ); } $dataProvider = new ActiveDataProvider([ diff --git a/backend/models/CardInsertForm.php b/backend/models/CardInsertForm.php new file mode 100644 index 0000000..ae28e33 --- /dev/null +++ b/backend/models/CardInsertForm.php @@ -0,0 +1,30 @@ + $query, + 'sort' =>[ + 'defaultOrder' => ['created_at' => 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([ + 'id_card_package' => $this->id_card_package, + 'id_user' => $this->id_user, + ]); + + if ( isset($this->printStatus)){ + switch ($this->printStatus){ + case self::$STATUS_NOT_PRINTED: + $query->andWhere( ['or' ,['card_package.printed' => null], [ "card_package.printed" => 0 ] ]); + break; + case self::$STATUS_PRINTED: + $query->andWhere( [">" ,"card_package.printed" , 0 ]); + break; + } + } + + return $dataProvider; + } + + public static function getPrintStatuses(){ + return [ + self::$STATUS_NOT_PRINTED => "Nincs letöltve", + self::$STATUS_PRINTED => "Letöltve", + ]; + } +} diff --git a/backend/models/TransferSearch.php b/backend/models/TransferSearch.php index 0529c6f..8772ac0 100644 --- a/backend/models/TransferSearch.php +++ b/backend/models/TransferSearch.php @@ -97,6 +97,8 @@ class TransferSearch extends Transfer return $dataProvider; } + echo "start date:" .$this->timestampStart; + $query->andFilterWhere([ 'transfer.id_account' => $this->id_account, 'transfer.type' => $this->type, @@ -111,6 +113,10 @@ class TransferSearch extends Transfer $query->andFilterWhere(['or' , $created_condition , $paid_condition]); + if (!RoleDefinition::isAdmin()){ + Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart,['transfer.created_at','transfer.paid_at'],'date'); + } + return $dataProvider; } @@ -127,8 +133,14 @@ class TransferSearch extends Transfer $accountMap = ArrayHelper::map( $accounts ,'id_account','name' ); $idUser = $this->id_user; + /**mk totals need date time format*/ + $start = $this->timestampStart; + if ( isset($start) && !empty($start)){ + $start .= " 00:00"; + } - $this->totals = Transfer::mkTotals($this->timestampStart, $this->timestampEnd, $idUser, $this->types, $this->id_account, $accounts, $accountMap); + + $this->totals = Transfer::mkTotals($start, $this->timestampEnd, $idUser, $this->types, $this->id_account, $accounts, $accountMap); } diff --git a/backend/views/card-package/_form.php b/backend/views/card-package/_form.php new file mode 100644 index 0000000..e95b62a --- /dev/null +++ b/backend/views/card-package/_form.php @@ -0,0 +1,28 @@ + + +
+ + + + +
+
+ field($model, 'count')->textInput()->label("Hány új kártyát szerentnél?") ?> +
+
+ +
+ 'btn btn-success' ]) ?> +
+ + + +
diff --git a/backend/views/card-package/_search.php b/backend/views/card-package/_search.php new file mode 100644 index 0000000..cb3d1bf --- /dev/null +++ b/backend/views/card-package/_search.php @@ -0,0 +1,49 @@ + + + 'Mind'] + HtmlHelper::mkOptions( User::read() ,'id','username'); +$statusOptions = ['' => 'Mind'] + CardPackageSearch::getPrintStatuses(); +?> + + diff --git a/backend/views/card-package/create.php b/backend/views/card-package/create.php new file mode 100644 index 0000000..b49d4dc --- /dev/null +++ b/backend/views/card-package/create.php @@ -0,0 +1,21 @@ +title = Yii::t('common/card_package', 'Új kártya csomag'); +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/card_package', 'Kártya csomagok'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/card-package/import.php b/backend/views/card-package/import.php new file mode 100644 index 0000000..1371ed2 --- /dev/null +++ b/backend/views/card-package/import.php @@ -0,0 +1,38 @@ + + + +

Kártya csomag rfid hozzárendelés feltöltés

+ +

Itt van lehetőséged a kártyás cégtől kapott kártya-rfid hozzárendelés fájl feltöltésére

+ +
+ + ['enctype' => 'multipart/form-data']]) ?> + + +
+
+ field($model, 'file')->fileInput([''])->label("Excel fájl kiválasztása") ?> +
+
+ +
+ 'btn btn-success' ]) ?> +
+ + + +
+

+Az excel fájlnak a következő formátumban kell lennie: +

+Az importálás során csak az első és harmadik oszlopot olvassuk be. +

+ diff --git a/backend/views/card-package/index.php b/backend/views/card-package/index.php new file mode 100644 index 0000000..0037d15 --- /dev/null +++ b/backend/views/card-package/index.php @@ -0,0 +1,81 @@ +title = Yii::t('common/card_package', 'Kártyacsomagok'); +$this->params['breadcrumbs'][] = $this->title; +?> +

+ +

title) ?>

+ +

+ Itt generálhatunk a rendszerbe új beléptető kártyákat.
+ A kártyak generálása úgynevezett csomagonként történik. + A művelet során az új kártyákat egy csomagba rendezzük, + majd letölthetjük a csomaghoz tartozó excel fájlt, ami az elkészítendő kártyák + kártya azonosítóit tartalmazzák. + A letöltött fájlt továbbküldhetjük a kártya készítő cégnek. + +

+

+ Miután a kártya készítő cég végzett, a kártyák mellé mellékel egy excel fájlt, amit + a '> + Kártya csomag RFID hozzárendelés + + menüpont alatt importálhatunk be. + Ezután lesz használható a kártya az rfid olvasóval +

+ render('_search', ['model' => $searchModel]); ?> + +

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'columns' => [ + + 'id_card_package', + [ + 'attribute' => 'id_user', + 'value' => 'userName' + ], + 'count', + 'printed', + 'created_at:datetime', + ['attribute'=> 'updated_at','value' => 'printedDate', 'label' =>'Utolsó letöltés ideje','format' => 'datetime'], + + ['class' => 'yii\grid\ActionColumn', + + 'template' => '{view}, {download}', + + 'urlCreator' => function ($action, $model, $key, $index){ + $result = ""; + if ( 'view' == $action ){ + $result = Url::toRoute(['card-package/view' , 'id' => $model->id_card_package ]); + }else if ( 'download' == $action ){ + $result = Url::toRoute(['card-package/download' , 'id' => $model->id_card_package ]); + } + return $result; + }, + 'buttons' =>[ + 'view' => function ($url, $model, $key) { + return Html::a("Részletek" ,$url,['class' =>'btn btn-primary btn-xs']); + }, + 'download' => function ($url, $model, $key) { + return Html::a("Excel letöltés" ,$url,['class' =>'btn btn-primary btn-xs']); + }, + ] + + ], + ], + ]); ?> + +
diff --git a/backend/views/card-package/update.php b/backend/views/card-package/update.php new file mode 100644 index 0000000..6b889af --- /dev/null +++ b/backend/views/card-package/update.php @@ -0,0 +1,23 @@ +title = Yii::t('common/card_package', 'Update {modelClass}: ', [ + 'modelClass' => 'Card Package', +]) . ' ' . $model->id_card_package; +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/card_package', 'Card Packages'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->id_card_package, 'url' => ['view', 'id' => $model->id_card_package]]; +$this->params['breadcrumbs'][] = Yii::t('common/card_package', 'Update'); +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/card-package/view.php b/backend/views/card-package/view.php new file mode 100644 index 0000000..c55aafb --- /dev/null +++ b/backend/views/card-package/view.php @@ -0,0 +1,59 @@ +title = "Kártya csomag: "+$model->id_card_package; +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/card_package', 'Kártya csomagok'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id_card_package], ['class' => 'btn btn-primary']) ?> +

+ + $model, + 'attributes' => [ + 'id_card_package', + ['attribute' => 'user','value' => $model->userName], + 'id_user', + 'count', + 'printed', + 'created_at:datetime', + 'printedDate:datetime', + ], + ]) ?> + + $dataProvider, + 'columns' => [ + [ + 'attribute' => 'id_card', + 'label' => "Kártya azonosító" + ], + [ + 'attribute' => 'number', + 'label' => "Kártyaszám" + ], + [ + 'attribute' => 'rfid_key', + 'label' => "RFID szám" + ], + [ + 'attribute' => 'created_at', + 'label' => "Létrehozva", + 'format' => 'datetime' + ], + ] + ]); + ?> + +
diff --git a/backend/views/card/insert.php b/backend/views/card/insert.php new file mode 100644 index 0000000..ef02f5b --- /dev/null +++ b/backend/views/card/insert.php @@ -0,0 +1,16 @@ + + + ['enctype' => 'multipart/form-data']]) ?> + + field($model, 'file')->fileInput() ?> + + + message); + ?> + + + \ No newline at end of file diff --git a/backend/web/images/card_package.jpg b/backend/web/images/card_package.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c52bbdb231281b367ae0c8f12e9cc695bc913c96 GIT binary patch literal 138137 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 z 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%0DJAfaO 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%0AR^j{<8p&b^l>oXUkpB$&kv>F3xSiDM9C3PK_OwJ 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 == 0) { + return; + } + + for($i = 0; $i < $this->count; $i ++) { + + $unique = false; + $number = null; + while ( $unique == false ) { + $number = Helper::generateRandomString($this->length, $this->keyset); + $number = $this->prefix . $number; + $unique = $this->checkCacheUnique ( $number ) && $this->checkDBUniqu ( $number ); + } + $this->cache [] = $number; + } + } + protected function checkDBUniqu($number) { + $query = Card::find (); + Card::addCardNumberCondition ( $query, $number ); + $found = $query->all (); + $result = count ( $found ) == 0; + return $result; + } + protected function checkCacheUnique($number) { + return array_search ( $number, $this->cache ) === false; + } +} \ No newline at end of file diff --git a/common/components/Helper.php b/common/components/Helper.php index 331f5d7..8d0a500 100644 --- a/common/components/Helper.php +++ b/common/components/Helper.php @@ -5,6 +5,88 @@ namespace common\components; use \Yii; class Helper { + + public static function isStartDateToEarly($days_between){ + $days_visiblity = Helper::getReceptionVisibilityDays(); +// $days_between = $this->calcStartDaysSinceToday(); + return $days_between > $days_visiblity; + } + + /** + * @param string $start the date string, format "datetime => "Y-m-d H:i", "date => "Y-m-d" + * */ + public static function calcStartDatimeDaysSinceToday($start, $format = "datetime" ){ + $now = time(); + + if ( $format == "datetime"){ + $format = "Y-m-d H:i"; + }else if ( $format == "date") { + $format = "Y-m-d"; + }else{ + //use format + } + + $d = \DateTime::createFromFormat( $format , $start)->getTimeStamp(); + $days_between = ceil(abs( $now - $d) / 86400 ); + + return $days_between; + } + + + /** + * Leellenőriz egy dátumot. Ha az aktuális felhasználó nem admin, + * akkor a params[reception_visibility_days] napnál korábbi , vagy null + * dátumot e params-ban megadott dátumra állítjuk + * + * + * */ + public static function restrictIfNotAdminTheStartDate($query,$date, $fields = ['transfer.paid_at','transfer.created_at'], $format = 'datetime'){ + $result = null; + + + $needFix = false; + if ( !isset($date) || empty($date)){ + $needFix = true; + }else { + $days = Helper::calcStartDatimeDaysSinceToday($date,$format); + if ( Helper::isStartDateToEarly($days)){ + $needFix = true; + } + } + + if ( $needFix == true ){ + $d = Helper::getReceptionVisibilityDays(); + + $time = date( "Y-m-d H:i:s", strtotime("today -$d day") ); + + $conditions = []; + + foreach ($fields as $f ){ + $conditions[] = ['>=', $f, $time]; + } + + + if ( count($conditions) > 1 ){ + $andWhereCond = []; + $andWhereCond[0] = "or"; + $i = 1; + foreach ($conditions as $c){ + $andWhereCond[$i] = $c; + $i++; + } + }else if ( count($conditions) == 1 ){ + $andWhereCond = $conditions[0]; + } + +// $start_date_condition = ['or',[ '>=', 'transfer.created_at', $time ] ,[ '>=', 'transfer.paid_at', $time] ]; + if ( isset($andWhereCond)){ + $query->andWhere( $andWhereCond ); + } + + } + + return $result; + } public static function getDateTimeString( ){ @@ -173,16 +255,27 @@ class Helper { public static function isUserCartVisibilityUser() { return \Yii::$app->params ['user_cart_item_visibility'] == 'user'; } + public static function isCompanyMovar() { return \Yii::$app->params ['company'] == 'movar'; } + public static function isProductVisibilityAccount() { return \Yii::$app->params ['product_visiblity'] == 'account'; } + public static function isAccountStateClosePreloadMoney() { return \Yii::$app->params ['account_state_close_preload_money'] == true; } + public static function isAccountStateOpenSendMail() { + return \Yii::$app->params ['mail_account_state_open'] == true; + } + + public static function isAccountStateCloseSendMail() { + return \Yii::$app->params ['mail_account_state_close'] == true; + } + public static function getReceptionVisibilityDays() { return \Yii::$app->params ['reception_visibility_days'] ; } @@ -237,5 +330,15 @@ class Helper { } return $result; } + + public static function generateRandomString($length = 6,$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' ) { + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + return $randomString; + } + } \ No newline at end of file diff --git a/common/components/XLSUtil.php b/common/components/XLSUtil.php new file mode 100644 index 0000000..6c1875b --- /dev/null +++ b/common/components/XLSUtil.php @@ -0,0 +1,44 @@ +objPHPExcel = $objReader->load ( $inputFileName ); + echo "type is: " . $inputFileType; + } catch ( Exception $e ) { + \Yii::error ( "failed to read xls" ); + throw $e; + } + } + + /** + * first sheet to array + */ + public function toArray( ) { + $objPHPExcel = $this->objPHPExcel; + $array = [ ]; + // Get worksheet dimensions + $sheet = $objPHPExcel->getActiveSheet(); + //$highestColumn = $sheet->getHighestColumn(); + $hr = $sheet->getHighestRow(); + foreach ( $sheet->getRowIterator () as $row ) { + $arrayRow = []; + $cellIterator = $row->getCellIterator (); + $cellIterator->setIterateOnlyExistingCells ( false ); // Loop all cells, even if it is not set + foreach ( $cellIterator as $cell ) { + $arrayRow [] = $cell->getCalculatedValue(); + } + $array[] = $arrayRow; + } + + return $array; + } +} \ No newline at end of file diff --git a/common/components/accountstate/AccountStateMail.php b/common/components/accountstate/AccountStateMail.php index 089d02c..10cafed 100644 --- a/common/components/accountstate/AccountStateMail.php +++ b/common/components/accountstate/AccountStateMail.php @@ -63,10 +63,14 @@ class AccountStateMail extends Object { $this->attachPdf(); - $this->message->setFrom(\Yii::$app->params['infoEmail']) - ->setTo( \Yii::$app->params['notify_mail'] ) - ->setSubject($subject ) - ->send(); + try{ + $this->message->setFrom(\Yii::$app->params['infoEmail']) + ->setTo( \Yii::$app->params['notify_mail'] ) + ->setSubject($subject ) + ->send(); + }catch (\Exception $e){ + \Yii::error("Nem sikerült elküldeni a kassza müvelet emailt"); + } } diff --git a/common/config/params.php b/common/config/params.php index be06504..0cfed25 100644 --- a/common/config/params.php +++ b/common/config/params.php @@ -4,12 +4,15 @@ return [ 'supportEmail' => 'rocho02@gmail.com', 'infoEmail' => 'info@rocho-net.hu', 'user.passwordResetTokenExpire' => 3600, - 'version' => 'v0.0.32', + 'version' => 'v0.0.33', 'company' => 'movar',//gyor 'company_name' => "Freimann Kft.", 'product_visiblity' => 'account',// on reception which products to display. account or global 'notify_mail' => ['rocho02@gmail.com' ], + /**Kassza nyitáskor küldjünk email-t?*/ 'mail_account_state_open' => true, + /**Kassza záráskor küldjünk email-t?*/ + 'mail_account_state_close' => true, 'login_reception_email' => true, //if reception login should send email 'login_admin_email' => true, //if admin login should send email 'account_state_close_preload_money' => 'true',//preload money wnen show account state close page diff --git a/common/models/CardCardPackageAssignment.php b/common/models/CardCardPackageAssignment.php new file mode 100644 index 0000000..089e90d --- /dev/null +++ b/common/models/CardCardPackageAssignment.php @@ -0,0 +1,50 @@ + Yii::t('common/card_package', 'Id Card Card Package Assignment'), + 'id_card_package' => Yii::t('common/card_package', 'Id Card Package'), + 'id_card' => Yii::t('common/card_package', 'Id Card'), + 'created_at' => Yii::t('common/card_package', 'Created At'), + 'updated_at' => Yii::t('common/card_package', 'Updated At'), + ]; + } +} diff --git a/common/models/CardPackage.php b/common/models/CardPackage.php new file mode 100644 index 0000000..c64f630 --- /dev/null +++ b/common/models/CardPackage.php @@ -0,0 +1,80 @@ +hasOne(User::className(), ['id' => 'id_user' ]); + } + public function getCardAssignments(){ + return $this->hasMany(CardCardPackageAssignment::className(), ['id_card_package' => 'id_card_package' ]); + } + public function getCards(){ + return $this->hasMany(Card::className(), ['id_card' => 'id_card' ])->via('cardAssignments'); + } + + public function getUserName(){ + $user = $this->user; + $result = ""; + if ( isset($user) ){ + $result = $this->user->username; + } + return $result; + } + + /** + * @inheritdoc + */ + public function rules() + { + return [ + [['count'], 'integer',"min" => 1 , "max" => 3000], + [['count'], 'required'], + ]; + } + + public function getPrintedDate(){ + if ( $this->printed > 0 ){ + return $this->updated_at; + } + return null; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id_card_package' => Yii::t('common/card_package', 'Kártya csomag azonosító'), + 'id_user' => Yii::t('common/card_package', 'Felhasználó'), + 'count' => Yii::t('common/card_package', 'Mennyiség'), + 'printed' => Yii::t('common/card_package', 'Letöltve'), + 'printedDate' => Yii::t('common/card_package', 'Utolsó letöltés ideje'), + 'count' => Yii::t('common/card_package', 'Mennyiség'), + 'created_at' => Yii::t('common/card_package', 'Létrehozva'), + 'updated_at' => Yii::t('common/card_package', 'Nyomtatva'), + ]; + } +} diff --git a/common/models/Transfer.php b/common/models/Transfer.php index 8c1b555..fb30ce2 100644 --- a/common/models/Transfer.php +++ b/common/models/Transfer.php @@ -671,6 +671,13 @@ class Transfer extends \common\models\BaseFitnessActiveRecord { self::notInInterval ( $query, 'transfer.created_at', $start, $end ); } + echo "start date is: ". $start; + echo "start date is: " . gettype( $start ); + + if ( !RoleDefinition::isAdmin() ){ + Helper::restrictIfNotAdminTheStartDate($query, $start); + } + $query->groupBy ( 'transfer.id_account' ); return $query; @@ -837,6 +844,16 @@ class Transfer extends \common\models\BaseFitnessActiveRecord { return $result; } + + /** + * Ezt a függvényt használjuk a zárások összegének kiszámolására! + * A számolás csak a következő feltételekkel bíró tranzakciókat + * tartalmazza: + * - trazakció típus: common\models\Account::TYPE_ALL + * - tranzakció fizetési módja: készpénz + * - tranzakció státusza: fizetve + * - + * */ public static function readPaid($start, $end, $idUser) { $query = (new \yii\db\Query ()); $query->select ( [ diff --git a/common/models/TransferSaleSearch.php b/common/models/TransferSaleSearch.php index 147b92a..10921e9 100644 --- a/common/models/TransferSaleSearch.php +++ b/common/models/TransferSaleSearch.php @@ -14,6 +14,7 @@ use common\models\Account; use yii\helpers\ArrayHelper; use common\models\MoneyMovement; use common\components\RoleDefinition; +use common\components\Helper; /** * TransferSearch represents the model behind the search form about `common\models\Transfer`. */ @@ -168,6 +169,16 @@ class TransferSaleSearch extends Transfer $query->andFilterWhere(['or' , $created_condition , $paid_condition]); + + $needRestirct = false; + if ( $this->isModeAdmin() ){ + $needRestirct = !RoleDefinition::isAdmin(); + }else{ + $needRestirct = true; + } + if ( $needRestirct ){ + Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart); + } // $query->andWhere(['transfer.status' => Transfer::STATUS_PAID]); diff --git a/common/models/TransferTicketSearch.php b/common/models/TransferTicketSearch.php index fa4a74c..71c493f 100644 --- a/common/models/TransferTicketSearch.php +++ b/common/models/TransferTicketSearch.php @@ -14,12 +14,19 @@ use common\models\Account; use yii\helpers\ArrayHelper; use common\models\MoneyMovement; use common\components\RoleDefinition; +use common\components\Helper; /** * TransferSearch represents the model behind the search form about `common\models\Transfer`. */ class TransferTicketSearch extends Transfer { + /** + * if mode is recepion, date restriction will be used + * if mode is admin, date restriction will be used based on user role + * */ + public $mode = 'reception'; + public $start; public $end; @@ -126,6 +133,8 @@ class TransferTicketSearch extends Transfer } + + protected function calcTotal(){ $this->total = 0; $this->total += $this->ticketMoney; @@ -166,9 +175,24 @@ class TransferTicketSearch extends Transfer $query->andWhere(['transfer.status' => Transfer::STATUS_PAID]); + $this->restrictStartDate($query); } + function restrictStartDate($query){ + $needRestriction = false; + if ( $this->mode == 'admin'){ + $needRestriction = !RoleDefinition::isAdmin( ) ; + }else{ + $needRestriction = true; + } + + if ( $needRestriction ){ + Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart); + } + + } + protected function readTicketStas(){ $query = (new \yii\db\Query()); diff --git a/console/migrations/m160211_111418_create__table__card_package.php b/console/migrations/m160211_111418_create__table__card_package.php new file mode 100644 index 0000000..02e491c --- /dev/null +++ b/console/migrations/m160211_111418_create__table__card_package.php @@ -0,0 +1,50 @@ +db->driverName === 'mysql') { + // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci + $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; + } + + $this->createTable('{{%card_package}}', [ + 'id_card_package' => $this->primaryKey(), + 'id_user' => $this->integer(11), + 'count' => $this->integer(11), + 'created_at' => $this->dateTime()->notNull(), + 'updated_at' => $this->dateTime()->notNull(), + ], $tableOptions); + + $this->createTable('{{%card_card_package_assignment}}', [ + 'id_card_card_package_assignment' => $this->primaryKey(), + 'id_card_package' => $this->integer(11), + 'id_card' => $this->integer(11), + 'created_at' => $this->dateTime()->notNull(), + 'updated_at' => $this->dateTime()->notNull(), + ], $tableOptions); + } + + public function down() + { + echo "m160211_111418_create__table__card_package 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/console/migrations/m160212_051248_alter__table__card_package__add_column_printed.php b/console/migrations/m160212_051248_alter__table__card_package__add_column_printed.php new file mode 100644 index 0000000..f934f01 --- /dev/null +++ b/console/migrations/m160212_051248_alter__table__card_package__add_column_printed.php @@ -0,0 +1,30 @@ +addColumn("card_package", "printed", "int"); + } + + public function down() + { + echo "m160212_051248_alter__table__card_package__add_column_printed 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/components/FrontendMenuStructure.php b/frontend/components/FrontendMenuStructure.php index 779a9c7..d5ebc01 100644 --- a/frontend/components/FrontendMenuStructure.php +++ b/frontend/components/FrontendMenuStructure.php @@ -82,10 +82,10 @@ class FrontendMenuStructure{ $items[] = ['label' => Yii::t('frontend/transfer','Ticket sale detailed'), 'url' => [ '/transfer/tickets','TransferTicketSearch[id_user]' =>\Yii::$app->user->id, 'TransferTicketSearch[id_account]' => Account::readDefault(), 'TransferTicketSearch[start]' => $this->start, 'TransferTicketSearch[end]' => $this->tomorrow ] ]; } - if ( $isadmin || Yii::$app->user->can('reception.transfers') ){ +// if ( $isadmin || Yii::$app->user->can('reception.transfers') ){ $items[] = ['label' => Yii::t('frontend/transfer','Transfers'), 'url' => ['/transfer/index', 'TransferSearch[id_user]' =>\Yii::$app->user->id, 'TransferSearch[id_account]' => Account::readDefault(), 'TransferSearch[start]' => $this->start, 'TransferSearch[end]' => $this->tomorrow ] ]; //$items[] = ['label' => Yii::t('frontend/collection','Collections'), 'url' => ['/collection/index' , 'CollectionSearch[start]' =>$this->start,'CollectionSearch[end]' => $this->tomorrow ] ]; - } +// } $items[] = ['label' => Yii::t('frontend/card','Vendégek'), 'url' => [ '/card/index' ] ]; $items[] = ['label' => Yii::t('frontend/card','Leltár'), 'url' => [ '/product/inventory' ] ]; diff --git a/frontend/controllers/AccountStateController.php b/frontend/controllers/AccountStateController.php index 9e73d51..f19fa98 100644 --- a/frontend/controllers/AccountStateController.php +++ b/frontend/controllers/AccountStateController.php @@ -86,8 +86,10 @@ class AccountStateController extends Controller { // return $this->redirect(['view', 'id' => $model->id_account_state]); - $mail = new AccountStateMail(['model' => $model,'controller' => $this]); - $mail->sednMail(); + if ( Helper::isAccountStateOpenSendMail() ){ + $mail = new AccountStateMail(['model' => $model,'controller' => $this]); + $mail->sednMail(); + } return $this->redirect ( [ @@ -132,9 +134,10 @@ class AccountStateController extends Controller { if ($model->load ( Yii::$app->request->post () ) && $model->save ()) { - - $mail = new AccountStateMail(['model' => $model,'controller' => $this]); - $mail->sednMail(); + if ( Helper::isAccountStateCloseSendMail()){ + $mail = new AccountStateMail(['model' => $model,'controller' => $this]); + $mail->sednMail(); + } return $this->redirect ( [ 'index' diff --git a/frontend/models/AccountstateSearch.php b/frontend/models/AccountstateSearch.php index e690752..827df6d 100644 --- a/frontend/models/AccountstateSearch.php +++ b/frontend/models/AccountstateSearch.php @@ -6,6 +6,7 @@ use Yii; use yii\base\Model; use yii\data\ActiveDataProvider; use common\models\AccountState; +use common\components\Helper; /** * AccountstateSearch represents the model behind the search form about `common\models\AccountState`. @@ -80,6 +81,8 @@ class AccountstateSearch extends AccountState $query->andFilterWhere([ '>=', 'account_state.created_at', $this->timestampStart ] ); $query->andFilterWhere([ '<', 'account_state.created_at', $this->timestampEnd ] ); + Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart, ['account_state.created_at']); + $query->orderBy( 'created_at desc' ); $query->limit = 20; diff --git a/frontend/models/MoneyMovementSearch.php b/frontend/models/MoneyMovementSearch.php index 45896ea..0e32fd4 100644 --- a/frontend/models/MoneyMovementSearch.php +++ b/frontend/models/MoneyMovementSearch.php @@ -7,6 +7,7 @@ use yii\base\Model; use yii\data\ActiveDataProvider; use common\models\MoneyMovement; use yii\helpers\ArrayHelper; +use common\components\Helper; /** * MoneyMovementSearch represents the model behind the search form about `common\models\MoneyMovement`. @@ -67,6 +68,8 @@ class MoneyMovementSearch extends MoneyMovement $query->andFilterWhere([ '>=', 'money_movement.created_at', $this->timestampStart ] ); $query->andFilterWhere([ '<', 'money_movement.created_at', $this->timestampEnd ] ); + + Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart,['money_movement.created_at']); return $dataProvider; } diff --git a/frontend/models/TransferSearch.php b/frontend/models/TransferSearch.php index 85889ba..3a9ce72 100644 --- a/frontend/models/TransferSearch.php +++ b/frontend/models/TransferSearch.php @@ -12,6 +12,7 @@ use yii\db\Expression; use common\models\Account; use yii\helpers\ArrayHelper; +use common\components\Helper; /** * TransferSearch represents the model behind the search form about `common\models\Transfer`. */ @@ -91,6 +92,8 @@ class TransferSearch extends Transfer $query->andFilterWhere(['or' , $created_condition , $paid_condition]); + Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart); + return $dataProvider; } @@ -106,6 +109,7 @@ class TransferSearch extends Transfer $accountMap = ArrayHelper::map( $accounts ,'id_account','name' ); $idUser = Yii::$app->user->id; + $this->totals = Transfer::mkTotals($this->timestampStart, $this->timestampEnd, $idUser, $this->types, $this->id_account, $accounts, $accountMap); diff --git a/frontend/web/js/app.js b/frontend/web/js/app.js index d5184ea..213a416 100644 --- a/frontend/web/js/app.js +++ b/frontend/web/js/app.js @@ -1,6 +1,7 @@ var enterPressed; var keyDate; var seq = ''; +var socket; $(document).ready( function(){ @@ -69,3 +70,28 @@ function addDocumentKeypressedListener(){ } } + + + +function startServer(){ + try{ + socket = new WebSocket("ws://localhost:8025/websockets/qrcode"); + console.info('socket created'); + socket.onmessage = function (event) { + console.log(event.data); + var msg = JSON.stringify(event.data); + if ( msg.msg == 'qrcode'){ + console.info('qrcode rcvd'); + } + } + }catch(e){ + } + +} + + +//startServer(); + +function sendMessage(){ + socket.send("Here's some text that the server is urgently awaiting!"); +} \ No newline at end of file diff --git a/frontend/web/js/product.sell.js b/frontend/web/js/product.sell.js index f45c06a..f02db5e 100644 --- a/frontend/web/js/product.sell.js +++ b/frontend/web/js/product.sell.js @@ -576,18 +576,18 @@ function ProductSell(o){ // Some item from your model is active! if (current.name == $input.val()) { // This means the exact match is found. Use toLowerCase() if you want case insensitive match. - console.info(current); +// console.info(current); _findProduct(current.id_product); } else { // This means it is only a partial match, you can either add a new item // or take the active if you don't want new items - console.info('partial'); +// console.info('partial'); app.product = null; productChanged(); } } else { // Nothing is active so it is a new value (or maybe empty value) - console.info('incactive'); +// console.info('incactive'); app.product = null; productChanged(); }