);
}
}
+
+ // bonus/update-user-bonus-balance
+ public function actionUpdateUserBonusBalance () {
+ echo("\n\r" . "<br> setUpdateBonusBalance Start " . date("Y-m-d H:i:s"));
+
+ $days = 5;
+ $days2 = $days + 2;
+ $dateNow = date('Y-m-d');
+ $dateCompare = date('Y-m-d H:i:s', strtotime($dateNow . ' -' . $days2 . ' day'));
+
+ $sales = Sales::find()
+ ->select(['id', 'phone'])
+ ->where(['operation' => Sales::OPERATION_SALE])
+ ->andWhere(['!=', 'phone', 0])
+ ->andWhere(['>', 'date', $dateCompare])
+ ->asArray()
+ ->all();
+
+ $salesIds = ArrayHelper::getColumn($sales, 'id');
+
+ $returns = Sales::find()
+ ->select(['id', 'sales_check'])
+ ->where(['operation' => Sales::OPERATION_RETURN])
+ ->andWhere(['sales_check' => $salesIds])
+ ->all();
+
+ $returnsIds = ArrayHelper::getColumn($returns, 'sales_check');
+ foreach ($sales as $sale) {
+ /** @var $sale Sales */
+ if (!in_array($sale['id'], $returnsIds)) {
+ if (ClientHelper::phoneVerify($sale['phone'])) {
+ self::updateBonusBalance($sale['phone']);
+ }
+ }
+ }
+ }
+
+ public static function updateBonusBalance($phone): void
+ {
+ $balans = null;
+
+ $user = Users::find()
+ ->where(['phone' => $phone])
+ ->one();
+
+ if (!empty($user)) {
+ $plus = 0;
+
+ $plusPrepared = UsersBonus::find()
+ ->select(['SUM(bonus) as plus', 'phone'])
+ ->where(['phone' => $phone])
+ ->andWhere(['tip' => 'plus'])
+ ->andWhere(['<=', 'date_start', date('Y-m-d')])
+ ->groupBy(['phone'])
+ ->asArray()
+ ->one();
+
+ if (!empty($plusPrepared)) {
+ $plus = $plusPrepared['plus'];
+ }
+
+ $minus = 0;
+
+ $minusPrepared = UsersBonus::find()
+ ->select(['SUM(bonus) as minus', 'phone'])
+ ->where(['phone' => $phone])
+ ->andWhere(['tip' => 'minus'])
+ ->groupBy(['phone'])
+ ->asArray()
+ ->one();
+
+ if (!empty($minusPrepared)) {
+ $minus = $minusPrepared['minus'];
+ }
+
+ $balans = $plus - $minus;
+
+ /** @var Users $user */
+ if ($balans != $user->balans) {
+ $user->balans = $balans;
+
+ $user->save();
+ if ($user->getErrors()) {
+ LogService::apiErrorLog(json_encode(["error_id" => 32, "error" => $user->getErrors()], JSON_UNESCAPED_UNICODE));
+ }
+ echo(" <br> n\r\ User phone " . $phone . ' new balans ' . $balans);
+ }
+ } else {
+ echo(" <br> n\r\ User phone " . $phone . ' not found ');
+ }
+ }
}