/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params = []) { $query = ActionsRecord::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['enableMultiSort' => true, 'defaultOrder' => ['ID' => SORT_DESC, 'WithHighPriority' => SORT_ASC]]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['ID' => $this->ID, 'DateFrom' => $this->DateFrom, 'DateTo' => $this->DateTo, 'Disabled' => $this->Disabled, 'Deleted' => $this->Deleted]); $query->andFilterWhere(['like', 'Name', $this->Name])->andFilterWhere(['like', 'Settings', $this->Settings]); return $dataProvider; }
public function actionSellAction($id, $actionId) { $model = $this->findModel($id); /** @var ActionsRecord $action */ $action = ActionsRecord::findOne($actionId); $formatter = Yii::$app->formatter; /** @var SellActionForm $formModel */ $formModel = \Yii::createObject(SellActionForm::className()); if ($formModel->load(Yii::$app->request->post()) && $formModel->validate()) { $sold = new SoldDiscountRecord(); $sold->ActionID = $action->ID; $sold->PersonID = $model->person->id; $sold->DateFrom = time(); $sold->DateTo = time() + 3600 * $formModel->amount; $cost = floatval($action->getDiscount()->price); $sum = $cost * $formModel->amount; $payment = new Payment($model); if ($payment->pay($sum) && $model->save(true, ['Money', 'Spend', 'Bonuses', 'SpendBonuses'])) { /** @var FinanceRecord $finance */ $finance = Yii::createObject(FinanceRecord::className()); $finance->ClassID = 22; //Оплата услуги $finance->Comment = $action->getDiscount()->description . ' x ' . $formModel->amount . ' x ' . $cost . '(c' . $formatter->asDatetime($sold->DateFrom) . ' по ' . $formatter->asDatetime($sold->DateTo) . ')'; $finance->CashSum = $payment->getSpendAmount(); $finance->ContractorID = $model->person->ID; $finance->save(); $sold->FinanceRowID = $finance->id; $sold->save(); Yii::$app->getSession()->setFlash('success', 'Акция продана, ' . Yii::$app->formatter->asCurrency($payment->getSpendAmount()) . ' списано со счета'); return $this->redirect(['/user/admin/update', 'id' => $model->person->ID]); } else { Yii::$app->getSession()->setFlash('error', 'Недостаточно денег'); } } return $this->render('sellAction', ['formModel' => $formModel, 'model' => $model, 'action' => $action]); }
/** * Applying actions!!! * @todo attach as event handler * @inheritdoc */ public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); if ($insert) { Yii::info(Html::a('Пользователь №' . $this->ContractorID, ['/user/admin/update', 'id' => $this->ContractorID]) . ' Транзакция: ID ' . $this->id . ': ' . $this->action->Name . ', сумма ' . $this->CashSum, 'info'); if ($this->CashSum > 0) { //Применение акций! $discounts = ActionsRecord::getDiscounts(); foreach ($discounts as $discount) { $discount->apply($this); } } } }
public function getAction() { return $this->hasOne(ActionsRecord::className(), ['id' => 'ActionID']); }
$this->params['breadcrumbs'][] = $this->title; ?> <div class="actions-record-index"> <h1 class="page-header"><?php echo Html::encode($this->title); ?> </h1> <?php // echo $this->render('_search', ['model' => $searchModel]); ?> <p> <?php $dropdown = []; foreach (\common\models\cf\ActionsRecord::getClassList() as $className => $text) { $shortClassName = array_reverse(explode('\\', $className))[0]; $dropdown[] = ['label' => Html::tag('strong', $text), 'url' => ['create', 'className' => $shortClassName]]; } echo \yii\bootstrap\ButtonDropdown::widget(['label' => Yii::t('app', 'Create Actions Record'), 'options' => ['class' => 'btn-success'], 'dropdown' => ['encodeLabels' => false, 'items' => $dropdown]]); ?> </p> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'rowOptions' => function ($model, $key, $index, $grid) { return ['class' => $model->Disabled || $model->Deleted || !$model->getDiscount()->isDue() ? 'danger' : 'success']; }, 'columns' => [['class' => \common\components\DisableActionColumn::className(), 'stateAttribute' => 'Disabled'], ['header' => 'Активно', 'format' => 'raw', 'value' => function ($model) { /** @var \common\models\cf\ActionsRecord $model */ if ($model->getDiscount()->isDue()) { // return ($model->disabled ? 'Активна, но отключена' : 'Работает'); if ($model->Deleted) {
/** * Finds the ActionsRecord model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return ActionsRecord the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = ActionsRecord::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }