fitness-web/common/models/MoneyMovement.php

116 lines
3.0 KiB
PHP

<?php
namespace common\models;
use Yii;
use yii\helpers\ArrayHelper;
use yii\behaviors\TimestampBehavior;
use common\components\AccountAwareBehavior;
use common\components\UserAwareBehavior;
use yii\base\Object;
use common\models\Transfer;
/**
* This is the model class for table "money_movement".
*
* @property integer $id_money_movement
* @property integer $id_account
* @property integer $id_user
* @property string $name
* @property integer $type
* @property integer $money
* @property string $comment
* @property string $created_at
* @property string $updated_at
*/
class MoneyMovement extends \yii\db\ActiveRecord
{
const TYPE_OUT = 10;
public $_account;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'money_movement';
}
/**
* @inheritdoc
*/
public function behaviors()
{
return ArrayHelper::merge( [
[
'class' => TimestampBehavior::className(),
'value' => function(){ return date('Y-m-d H:i:s' ); }
],
[
'class' => AccountAwareBehavior::className(),
],
[
'class' => UserAwareBehavior::className(),
],
], parent::behaviors());
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_account', 'name', 'money'], 'required'],
[['id_account' , 'money'], 'integer'],
[['name'], 'string', 'max' => 64],
[['comment'], 'string', 'max' => 255],
[['id_account'], 'validateAccount'],
];
}
public function validateAccount($attribute,$params){
$this->_account = Account::findOne(['id_account' => $this->id_account] );
if ( !isset( $this->_account ) ){
$this->addError($attribute, Yii::t('common/money-movement', 'Invalid account!'));
}
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_money_movement' => Yii::t('common/money-movement', 'Id Money Movement'),
'id_account' => Yii::t('common/money-movement', 'Id Account'),
'id_user' => Yii::t('common/money-movement', 'Id User'),
'name' => Yii::t('common/money-movement', 'Name'),
'type' => Yii::t('common/money-movement', 'Type'),
'money' => Yii::t('common/money-movement', 'Money'),
'comment' => Yii::t('common/money-movement', 'Comment'),
'created_at' => Yii::t('common/money-movement', 'Created At'),
'updated_at' => Yii::t('common/money-movement', 'Updated At'),
];
}
public function afterSave($insert, $changedAttributes){
parent::afterSave($insert, $changedAttributes);
if ( $insert) {
$this->createTransfer();
}
}
protected function createTransfer(){
$transfer = Transfer::createMoneyMovementOutTransfer($this->_account, $this);
$transfer->id_user = Yii::$app->user->id;
$transfer->save();
}
}