Ejemplo n.º 1
0
 /**
  * Передача сообщения по 200 шт
  *
  * @param array          $messages
  * @param SmsInterface[] $smsCollection   Массив sms объектов
  * @param \DateTime|null $scheduledAt     Дата для отложенной отправки сообщения
  * @param string         $statusQueueName Название очереди статусов отправленных сообщений
  *
  * @return SmsInterface[] with defined status and code
  */
 private function sendBulk(array $messages, array &$smsCollection, \DateTime $scheduledAt = null, $statusQueueName = 'default')
 {
     if (!$scheduledAt instanceof \DateTime) {
         $scheduledAt = new \DateTime();
     }
     $scheduledAt->setTimezone(new \DateTimeZone('UTC'));
     $args = ['statusQueueName' => $statusQueueName, 'scheduleTime' => $scheduledAt->format('Y-m-d\\TH:i:s\\Z'), 'messages' => $messages];
     $response = parent::send($args);
     foreach ($response['messages'] as $smsStatuses) {
         foreach ($smsCollection as $sms) {
             if ($sms->getId() != $smsStatuses['clientId']) {
                 continue;
             }
             $status = strtolower(str_ireplace(' ', '_', $smsStatuses['status']));
             $sms->setStatus($status);
             if (isset($smsStatuses['smscId'])) {
                 $sms->setInternalId($smsStatuses['smscId']);
             }
         }
     }
 }