예제 #1
0
 /**
  * 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]);
 }
예제 #3
0
 /**
  * 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']);
 }
예제 #5
0
$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) {
예제 #6
0
 /**
  * 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.');
     }
 }