/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Financy::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); //если пользователь НЕ админ, показываем только его финансы //if user not admin if (Yii::$app->user->identity->isAdmin()) { $query->joinWith(['user']); // $query->andFilterWhere([ // 'user_id' => Yii::$app->user->id, // ]); } else { $query->andFilterWhere(['user_id' => Yii::$app->user->id]); } $query->orderBy('financy.id DESC'); if (!$this->validate()) { // uncomment the following line if you do not want to any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'user_id' => $this->user_id, 'type_operation' => $this->type_operation, 'sum_operation' => $this->sum_operation, 'created_at' => $this->created_at]); return $dataProvider; }
public function getTypeOperation() { $list = Financy::getTypeOperations(); return $list[$this->type_operation]; }
public function TaskEnd() { //обновим запись по заданию и укажем файл результата по ней $sql = 'UPDATE ' . Tasks::tableName() . ' SET status=:status, file_result=:file, complete_at=:complete_at WHERE id=:id'; $query = \Yii::$app->db->createCommand($sql); //спишим с баланса юзера сумма за выборку $query->bindValues([':status' => Tasks::STATUS_COMPLETE, ':id' => $this->task->id, ':file' => $this->task->link . '.txt', ':complete_at' => time()]); $query->execute(); //запишим операцию списания денег в лог фин. операций $financy = new Financy(); $financy->sum_operation = \Yii::$app->params['task.cost']; $financy->type_operation = Financy::TYPE_OPERATION_MINUS; $financy->user_id = $this->task->user_id; $financy->balance_user_after_operation = (int) ($this->task->user->balance - \Yii::$app->params['task.cost']); if ($financy->validate()) { $financy->save(); //обновим баланс юзера User::minusBalance($financy->user_id); } else { print_r($financy->errors) . PHP_EOL; $this->log('error'); } \Yii::$app->get('mutex')->release($this->tasks_mutex_name); }
/** * @param integer $id * @return Financy * @throws \yii\web\BadRequestHttpException */ protected function loadModel($id) { $model = Financy::findOne($id); if ($model === null) { throw new BadRequestHttpException(); } return $model; }
/** * @return \yii\db\ActiveQuery */ public function getFinancy() { return $this->hasMany(Financy::className(), ['id' => 'user_id']); }