From fbb2d7e5dc7cb30353b9bcda14e659decdce70fd Mon Sep 17 00:00:00 2001 From: Roland Schneider Date: Tue, 12 Jan 2016 17:19:34 +0100 Subject: [PATCH] add cassaopen/default account behaviors --- common/models/AccountState.php | 8 +++- frontend/components/CassaOpenBehavior.php | 37 +++++++++++++++++++ .../components/DefaultAccountBehavior.php | 31 ++++++++++++++++ .../controllers/AccountStateController.php | 2 + frontend/controllers/ProductController.php | 11 +++++- frontend/controllers/TicketController.php | 8 ++++ 6 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 frontend/components/CassaOpenBehavior.php create mode 100644 frontend/components/DefaultAccountBehavior.php diff --git a/common/models/AccountState.php b/common/models/AccountState.php index 197c0b7..350e27d 100644 --- a/common/models/AccountState.php +++ b/common/models/AccountState.php @@ -194,6 +194,8 @@ class AccountState extends \common\models\BaseFitnessActiveRecord * Read last accountstates * @param $type int the type of accountstate to load * @param $user $id of user to load the account + * @return common\models\AccountState + * * */ public static function readLast($type, $user = null,$account = null){ $result = null; @@ -202,9 +204,13 @@ class AccountState extends \common\models\BaseFitnessActiveRecord if ( isset($type)){ $query->andWhere(['account_state.type' => $type]); } - if ( $account ){ + if ( isset( $account ) ){ $query->andWhere(["account_state.id_account" => $account ]); } + + if ( isset( $user ) ){ + $query->andWhere(["account_state.id_user" => $user ]); + } $query->limit(1); diff --git a/frontend/components/CassaOpenBehavior.php b/frontend/components/CassaOpenBehavior.php new file mode 100644 index 0000000..3c9e35a --- /dev/null +++ b/frontend/components/CassaOpenBehavior.php @@ -0,0 +1,37 @@ + 'validateCassaOpen', + ]; + } + + public function validateCassaOpen($event){ + + $cassaOpen = AccountState::readLast(null, null, Account::readDefault() ); + + if ( !isset($cassaOpen) ){ + return $this->redirectToCassaOpen($event); + }else if ( !$cassaOpen->isTypeOpen() ){ + return $this->redirectToCassaOpen($event); + } + } + + protected function redirectToCassaOpen($event ) { + \Yii::$app->session->setFlash ( 'error', 'Nem nyitottál kasszát!'); + $this->owner->redirect([ 'account-state/open' ]); + $event->isValid = false; + $event->handled = true; + } +} \ No newline at end of file diff --git a/frontend/components/DefaultAccountBehavior.php b/frontend/components/DefaultAccountBehavior.php new file mode 100644 index 0000000..7de2f5c --- /dev/null +++ b/frontend/components/DefaultAccountBehavior.php @@ -0,0 +1,31 @@ + 'validateDefaultAccount', + ]; + } + + public function validateDefaultAccount($event){ + echo "deafult"; + + $account = Account::readDefault(); + if ( !isset($account) ){ + $this->owner->redirect([ 'account/select' ]); + \Yii::$app->session->setFlash ( 'error', 'Válassz kasszát!!'); + $event->isValid = false; + $event->handled = true; + return false; + } + } +} \ No newline at end of file diff --git a/frontend/controllers/AccountStateController.php b/frontend/controllers/AccountStateController.php index a02c764..4cd70d5 100644 --- a/frontend/controllers/AccountStateController.php +++ b/frontend/controllers/AccountStateController.php @@ -74,6 +74,8 @@ class AccountStateController extends Controller { $lastStates = AccountState::readLastForUser ( AccountState::TYPE_CLOSE ); $lastStates = AccountState::modelsToArray ( $lastStates ); +// \Yii::$app->session->setFlash('error','ok'); + $model = new AccountState (); $model->type = AccountState::TYPE_OPEN; $model->id_user = Yii::$app->user->id; diff --git a/frontend/controllers/ProductController.php b/frontend/controllers/ProductController.php index 2e8569c..cd49da9 100644 --- a/frontend/controllers/ProductController.php +++ b/frontend/controllers/ProductController.php @@ -24,6 +24,8 @@ use common\models\ShoppingCart; use frontend\models\ReceptionForm; use frontend\models\CustomerCartPayoutForm; use frontend\models\UserCartPayoutForm; +use frontend\components\DefaultAccountBehavior; +use frontend\components\CassaOpenBehavior; /** * ProductController implements the CRUD actions for Product model. @@ -61,7 +63,14 @@ class ProductController extends Controller { ] // everything else is denied - ] + ] , + // named behavior, configuration array + 'defaultAccount' => [ + 'class' => DefaultAccountBehavior::className(), + ], + 'cassaIsOpen' => [ + 'class' => CassaOpenBehavior::className(), + ], ]; } public function actionSale($number = null) { diff --git a/frontend/controllers/TicketController.php b/frontend/controllers/TicketController.php index ad3253e..c98cea8 100644 --- a/frontend/controllers/TicketController.php +++ b/frontend/controllers/TicketController.php @@ -19,6 +19,8 @@ use common\models\User; use common\models\ShoppingCart; use common\models\UserSoldItem; use frontend\components\FrontendController; +use frontend\components\DefaultAccountBehavior; +use frontend\components\CassaOpenBehavior; /** * TicketController implements the CRUD actions for Ticket model. @@ -46,6 +48,12 @@ class TicketController extends FrontendController // everything else is denied ], ], + 'defaultAccount' => [ + 'class' => DefaultAccountBehavior::className(), + ], + 'cassaIsOpen' => [ + 'class' => CassaOpenBehavior::className(), + ], ]; }