![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/job-board.corals.io/Corals/modules/SMS/Services/ |
<?php namespace Corals\Modules\SMS\Services; use Corals\Foundation\Services\BaseServiceClass; use Corals\Modules\SMS\Models\SMSList; use Illuminate\Http\Request; class ListService extends BaseServiceClass { /** * @param Request $request * @param SMSList $smsList */ public function sendMessage(Request $request, SMSList $smsList) { $messageService = new MessageService; $providers = $request->get('provider'); $phoneNumbersCount = $smsList->phoneNumbers()->count(); if (!$phoneNumbersCount) { return; } $providersChunkValue = $this->getProvidersChunkValue(count($providers), $phoneNumbersCount); $smsList->phoneNumbers() ->where('status', 'active') ->chunk($providersChunkValue, function ($phoneNumbers, $page) use ($messageService, $providers) { $providerIndex = ($page - 1) % count($providers); $providerId = $providers[$providerIndex]; foreach ($phoneNumbers as $phoneNumber) { $messageService->sendMessage(request(), $phoneNumber, $providerId); } }); } /** * @param $providersCount * @param $phoneNumbersCount * @return float|int */ protected function getProvidersChunkValue($providersCount, $phoneNumbersCount) { if ($providersCount >= $phoneNumbersCount) { $chunk = $providersCount / $phoneNumbersCount; } else { $chunk = $phoneNumbersCount / $providersCount; } return floor($chunk); } }