['integer']], [['money' ,'payment_method' ,'id_account' ],'integer'], [['payment_method'],'validatePaymentMethod'], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ ]; } public function validatePaymentMethod( $attribute, $params ){ if ( !empty($this->payment_method)){ $arr = Transfer::paymentMethods(); if ( !array_key_exists($this->payment_method, $arr) ){ $this->addError($attribute, "Érvénytelen fizetési mód"); } } } public function validateIdAccount( $attribute, $params ){ if ( !empty($this->id_account)){ $account = $this->loadAvailableOverrideAccounts($this->id_account); if ( !isset($account) ){ $this->addError($attribute, "Érvénytelen kassza"); } } } private function loadAvailableOverrideAccounts($id_account = null){ $accounts = null; $query = Account::find(); $query->innerJoinWith('userAccountAssignments'); $query->andWhere(['user_account_assignment.id_user' => Yii::$app->user->id]); $query->andWhere(['status' => Account::STATUS_ACTIVE])->all(); if ( isset($id_account)){ $query->andWhere(['account.id_account' => $id_account]); } $query->orderBy( ['name' => SORT_ASC]); $accounts = $query->all(); return $accounts; } public function payout(){ $valid = $this->validate(); if ( !$valid ){ return false; } if ( isset($this->selected) && count($this->selected) > 0 ){ $connection = \Yii::$app->db; $transaction = $connection->beginTransaction(); try { $tp = new TransferPayout( [ 'idUser' => \Yii::$app->user->id, 'idTransfers' => $this->selected, 'idAccount' => Account::readDefault (), 'cartType' => 'customer', 'overridePaymentMethod' => $this->payment_method, 'overrideIdAccount' => $this->id_account, 'idCustomer' => $this->customer->id_customer ] ); $tp->payout (); $transaction->commit (); \Yii::$app->session->setFlash ( 'success', 'A vásárló kosár kiválasztott tranzakciói ki lettek kifizetve!'); return true; } catch ( Exception $e ) { $transaction->rollback (); Yii::error ( "failed to save :" . $e->getMessage () ); } catch ( \Exception $e ) { $transaction->rollback (); Yii::error ( "failed to save :" . $e->getMessage () ); } return false; }else{ \Yii::$app->session->setFlash('danger', 'Nem választott ki terméket'); return false; } } public function changePaymentMethod($item){ if ( !empty($this->payment_method)){ $item->payment_method = $this->payment_method; } } public function changeAccount($item){ if ( !empty($this->id_account)){ $item->id_account = $this->id_account; } } public function run(){ $this->readTransfers(); } public function readTransfers( ) { $this->transfers = $this->loadTransfers(); } public function loadTransfers($id_tranfer_array = null){ $query = Transfer::find(); $query->innerJoin("shopping_cart", "shopping_cart.id_transfer = transfer.id_transfer"); // $query->andWhere(["transfer.id_user" => \Yii::$app->user->id]); $query->andWhere(["shopping_cart.id_customer" => $this->customer->id_customer]); if (isset($id_tranfer_array)){ $query->andWhere(["in", "transfer.id_transfer" , $id_tranfer_array ]); } return $query->all(); } }