--- /dev/null
+<?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
--- /dev/null
+<?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>