add collection

This commit is contained in:
2015-11-03 09:50:54 +01:00
parent b6b5193120
commit 33bf52df60
22 changed files with 1073 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
<?php
namespace common\models;
use Yii;
use common\components\AccountAwareBehavior;
use common\components\UserAwareBehavior;
use yii\helpers\ArrayHelper;
use yii\behaviors\TimestampBehavior;
/**
* This is the model class for table "collection".
*
* @property integer $id_collection
* @property integer $id_user
* @property integer $created_by
* @property integer $id_account
* @property integer $money
* @property string $start
* @property string $end
* @property integer $type
* @property string $created_at
* @property string $updated_at
*/
class Collection extends \common\models\BaseFitnessActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'collection';
}
/**
* @inheritdoc
*/
public function behaviors()
{
return ArrayHelper::merge( [
[
'class' => TimestampBehavior::className(),
'value' => function(){ return date('Y-m-d H:i:s' ); }
],
[
'class' => UserAwareBehavior::className(),
],
[
'class' => AccountAwareBehavior::className(),
],
], parent::behaviors());
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_user', 'created_by', 'id_account', 'money', 'type'], 'integer'],
[['money', 'type', 'created_at', 'updated_at'], 'required'],
[['start', 'end', 'created_at', 'updated_at'], 'safe']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_collection' => Yii::t('common/collection', 'Id Collection'),
'id_user' => Yii::t('common/collection', 'Id User'),
'created_by' => Yii::t('common/collection', 'Created By'),
'id_account' => Yii::t('common/collection', 'Id Account'),
'money' => Yii::t('common/collection', 'Money'),
'start' => Yii::t('common/collection', 'Start'),
'end' => Yii::t('common/collection', 'End'),
'type' => Yii::t('common/collection', 'Type'),
'created_at' => Yii::t('common/collection', 'Created At'),
'updated_at' => Yii::t('common/collection', 'Updated At'),
];
}
/**
* @param \common\models\User $user the user
* */
public static function readLast($user){
$result = null;
$query = Collection::find();
if ( isset($user)){
$query->andWhere($user->id);
}
$query->orderBy(['end' => SORT_DESC]);
$query->limit(1);
$result = $query->one();
return $result;
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace common\models;
use Yii;
use common\components\AccountAwareBehavior;
use common\components\UserAwareBehavior;
use yii\helpers\ArrayHelper;
use yii\behaviors\TimestampBehavior;
/**
* This is the model class for table "collection".
*
* @property integer $id_collection
* @property integer $id_user
* @property integer $created_by
* @property integer $id_account
* @property integer $money
* @property string $start
* @property string $end
* @property integer $type
* @property string $created_at
* @property string $updated_at
*/
class CollectionCreate extends \common\models\Collection
{
public $lastCollection;
}

View File

@@ -451,6 +451,82 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $status;
}
/**
* @param string $mode The mode to load
* Available modes
* <ul>
* <li>
* <h2>created_at</h2>
* <p>Load all transfer which were created </p>
* </li>
* <li>
* <h2>paid_at</h2>
* <p>Load all transfer which were paid </p>
* </li>
* <li>
* <h2>created_at_paid</h2>
* <p>Load all transfer which were created and paid </p>
* </li>
* <li>
* <h2>created_at_not_paid</h2>
* <p>Load all transfer which were created but not paid </p>
* </li>
* <li>
* <h2>paid_at_not_created_at</h2>
* <p>Load all transfer which were not created but paid . Works correctly only,
* when start and end date given
* </p>
* </li>
* </ul>
*
* */
public static function mkTotalQuery($mode,$start,$end,$idUser,$types,$idAccount){
$query = new Query();
$query->addSelect( [
new Expression( 'transfer.id_account as account'),
new Expression( ' COALESCE(sum( ( case when direction = '.Transfer::DIRECTION_OUT.' then -1 else 1 end )* transfer.money ),0) as money' )
]);
$query->from('transfer');
$query->andFilterWhere([
'id_account' => $idAccount,
]);
$query->andFilterWhere(['id_user' => $idUser]);
$query->andFilterWhere(['in' ,'type', $types]);
if ( $mode == 'created_at'){
$query->andFilterWhere([ '>=', 'transfer.created_at' , $start] );
$query->andFilterWhere([ '<' , 'transfer.created_at' , $end ] );
}else if ( $mode == 'paid_at'){
$query->andFilterWhere([ '>=', 'transfer.paid_at' , $start ] );
$query->andFilterWhere([ '<' , 'transfer.paid_at' , $end ] );
}else if ( $mode == 'created_at_not_paid'){
$query->andFilterWhere([ "transfer.status" => Transfer::STATUS_NOT_PAID ] );
$query->andFilterWhere([ '>=', 'transfer.created_at' , $start ] );
$query->andFilterWhere([ '<' , 'transfer.created_at' , $end ] );
}else if ( $mode == 'created_at_paid'){
$query->andFilterWhere([ "transfer.status" => Transfer::STATUS_PAID ] );
$query->andFilterWhere([ '>=', 'transfer.created_at' , $start ] );
$query->andFilterWhere([ '<' , 'transfer.created_at' , $end ] );
}else if ( $mode == 'paid_at_not_created_at'){
$query->andFilterWhere([ "transfer.status" => Transfer::STATUS_PAID ] );
$query->andFilterWhere([ '>=', 'transfer.paid_at' , $start ] );
$query->andFilterWhere([ '<' , 'transfer.paid_at' , $end ] );
$query->andFilterWhere( ['or', [ '<', 'transfer.created_at' , $start ] ,[ '>=' , 'transfer.created_at' , $end ] ] );
}
$query->groupBy('transfer.id_account');
return $query;
}
}