use yii_app\records\UsersTelegram;
use yii_app\records\UsersTelegramLog;
use yii_app\services\TelegramService;
+use yii_app\services\WhatsAppService;
class CronController extends Controller
{
BaseConsole::FG_GREEN
);
- $channel = self::getChannelByName('WABA');
+ $channel = WhatsAppService::getChannelByName('WABA');
$limit = $channel['messagingLimit'] ?? 250;
- if (!empty($phonesArray)) {
+ $salesData = Sales::find()
+ ->select([
+ 'phone',
+ 'dealsCount' => 'COUNT(*)'
+ ])
+ ->where(['phone' => $phonesArray])
+ ->groupBy('phone')
+ ->asArray()
+ ->indexBy('phone')
+ ->all();
+
+ $phoneSales = [];
+ foreach ($phonesArray as $phone) {
+ $phoneSales[$phone] = $salesData[$phone]['dealsCount'] ?? 0;
+ }
+ arsort($phoneSales);
+ $sortedPhones = array_keys($phoneSales);
+
+ $phonesToSend = null;
+ if ($countWhatsappPhones > $limit) {
+ $phonesToSend = $sortedPhones;
+ } else {
+ $phonesToSend = $phonesArray;
+ }
+
+ if (!empty($phonesToSend)) {
$messageText = $messagesSettings
->replaceShortcodes($messagesSettings->offer_whatsapp, $targetDate);
$phonesSentArray = [];
- foreach ($phonesArray as $index => $phone) {
+ foreach ($phonesToSend as $index => $phone) {
if ($index >= $limit) {
break;
}
}
$whatsappPhones = array_diff(array_diff($targetPhones, $excludeRegistered), $excludeSalesPhone);
+ if (!empty($messagesSettings->test_phones_list)) {
+ if (
+ isset($messagesSettings->test_phones_active)
+ &&
+ $messagesSettings->test_phones_active == 0
+ ) {
+ $testPhones = array_map('trim', explode(',', $messagesSettings->test_phones_list));
+ $whatsappKogortData = array_merge($whatsappPhones, $testPhones);
+ } else {
+ $testPhones = array_map('trim', explode(',', $messagesSettings->test_phones_list));
+ $whatsappKogortData = $testPhones;
+ }
+ } else {
+ if ($messagesSettings->test_phones_active == 1) {
+ $whatsappKogortData = [];
+ }
+ }
+
$secondTarget = array_diff($excludeRegistered, $excludeSalesPhone);
- return ['whatsapp' => $whatsappPhones, 'secondTarget' => $secondTarget];
+ return ['whatsapp' => $whatsappKogortData, 'secondTarget' => $secondTarget];
}
/**