]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавление 20% бонусами тем, кому не добавили за первую покупку после регистрации...
authorAlexander Smirnov <fredeom@mail.ru>
Wed, 17 Jul 2024 11:33:43 +0000 (14:33 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Wed, 17 Jul 2024 11:33:43 +0000 (14:33 +0300)
erp24/actions/bonus/Add20TelegramCreatedAtIsNullAction.php [new file with mode: 0644]
erp24/controllers/BonusController.php
erp24/modul/bonus/bonus_users.php
erp24/views/bonus/add-20-telegram-created-at-is-null.php [new file with mode: 0644]

diff --git a/erp24/actions/bonus/Add20TelegramCreatedAtIsNullAction.php b/erp24/actions/bonus/Add20TelegramCreatedAtIsNullAction.php
new file mode 100644 (file)
index 0000000..1f817f5
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+namespace yii_app\actions\bonus;
+
+use Yii;
+use yii\base\Action;
+use yii\db\Exception;
+use yii\helpers\Json;
+use yii_app\records\Users;
+use yii_app\records\UsersBonus;
+
+class Add20TelegramCreatedAtIsNullAction extends Action
+{
+    public function run() {
+        $users = Users::find()->where(['telegram_is_subscribed' => 1])
+            ->andWhere(['>=', 'date', '2024-07-15 17:30:00'])
+            ->andWhere(['<=', 'date', '2024-07-17 12:37:16+03'])
+            ->andWhere(['IS NOT', 'date_first_sale', null])
+            ->orderBy('id desc')
+            ->all();
+
+        $hasBonuses = [];
+
+        foreach ($users as $user) {
+            /** @var $user Users */
+            $ub = UsersBonus::find()->where(['phone' => $user->phone])
+                ->andWhere(['between', 'date',
+                    date('Y-m-d H:i:00', strtotime('-3 hour', strtotime($user->date_first_sale))),
+                    date('Y-m-d H:i:59', strtotime($user->date_first_sale))])->all();
+            $has20 = false;
+            $has10 = null;
+            foreach ($ub as $usersBonus) {
+                /** @var $usersBonus UsersBonus */
+                if (strpos($usersBonus->name, '20%') !== false) {
+                    $has20 = true;
+                }
+                if (strpos($usersBonus->name, '10%') !== false) {
+                    $has10 = $usersBonus;
+                }
+            }
+            $hasBonuses[$user->id] = [$has20, $has10 != null];
+            if (Yii::$app->request->isPost) {
+                if (!$has20 && $has10) {
+                    $userBonus20 = new UsersBonus;
+                    $userBonus20->setAttributes($has10->getAttributes());
+                    $userBonus20->isNewRecord = true;
+                    $userBonus20->name = str_replace('10%', '20%', $userBonus20->name);
+                    $userBonus20->bonus = floor($userBonus20->price * 0.2);
+                    $userBonus20->date_end = date("Y-m-d H:i:s", strtotime("+3 month", strtotime($userBonus20->date_start)));
+                    $userBonus20->save();
+                    if ($userBonus20->getErrors()) {
+                        throw new Exception(Json::encode($userBonus20->getErrors()));
+                    }
+                    $hasBonuses[$user->id] = [true, true];
+                }
+            }
+        }
+
+        return $this->controller->render('add-20-telegram-created-at-is-null',
+            compact('users', 'hasBonuses'));
+    }
+}
\ No newline at end of file
index a0c7197c28e30aa39a8b1046b92c5f3279ffe9c8..882c5838501cc3c766bc6543041ca9e48a5e61be 100644 (file)
@@ -23,6 +23,7 @@ class BonusController extends \yii\web\Controller
             'sex' => \yii_app\actions\bonus\SexAction::class,
             'add-bonus-if-written-off' => \yii_app\actions\bonus\AddBonusIfWrittenOffAction::class,
             'add-bonuses' => \yii_app\actions\bonus\AddBonuses::class,
+            'add-20-telegram-created-at-is-null' => \yii_app\actions\bonus\Add20TelegramCreatedAtIsNullAction::class,
         ];
     }
     public function actionBonusUsers() { return $this->render('bonus-users'); }
index 4bcd4a715f1913656d89e59b7ff78372cd4918f9..44873cb7c5cd72d31612abb422abdf067c95a75f 100644 (file)
@@ -169,7 +169,7 @@ if(!empty($date1)) echo'success'; else echo'default';
 echo'">даты клиента</a></td><td>';
 if($row["bdate"]!='0000-00-00') { 
 
-$barr=explode("-",$row["bdate"]);
+$barr=explode("-",$row["bdate"] ?? '');
     if (!empty($barr)) {
         echo '<small>' . ($barr[2] ?? '') . '.' . ($barr[1] ?? '') . '.' . ($barr[0] ?? '') . '</small>';
         if (!empty($barr[0])) {
diff --git a/erp24/views/bonus/add-20-telegram-created-at-is-null.php b/erp24/views/bonus/add-20-telegram-created-at-is-null.php
new file mode 100644 (file)
index 0000000..79a13b6
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+use \yii\helpers\Html;
+use \yii\widgets\ActiveForm;
+use \yii_app\records\Users;
+
+/** @var $users Users[] */
+/** @var $hasBonuses array */
+
+?>
+
+<div class="add-20-telegram-created-at-is-null m-5">
+
+    <?php $form = ActiveForm::begin() ?>
+
+    <?= Html::submitButton('Обновить', ['class' => 'btn btn-warning btn-sm']) ?>
+
+    <?php ActiveForm::end() ?>
+
+    <div class="row">
+        <div class="col-2">Телефон</div>
+        <div class="col-2">Подписан?</div>
+        <div class="col-2">Время регистрации в тг</div>
+        <div class="col-2">Первая покупка</div>
+        <div class="col-2">Есть 20%?</div>
+        <div class="col-2">Есть 10%?</div>
+    </div>
+
+    <?php foreach($users as $user): ?>
+        <div class="row">
+            <div class="col-2"><?= $user->phone ?></div>
+            <div class="col-2"><?= $user->telegram_is_subscribed ?></div>
+            <div class="col-2"><?= $user->telegram_created_at ?? '-' ?></div>
+            <div class="col-2"><?= $user->date_first_sale ?? '-' ?></div>
+            <div class="col-2"><?= $hasBonuses[$user->id][0] ?></div>
+            <div class="col-2"><?= $hasBonuses[$user->id][1] ?></div>
+        </div>
+    <?php endforeach; ?>
+
+</div>