SendVacancyToTelegramJob.php 1.16 KB
<?php

namespace App\Jobs;

use App\Components\Integrations\Telegram\VacancyChannel;
use App\Models\Ad_employer;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Telegram\Bot\Exceptions\TelegramSDKException;

class SendVacancyToTelegramJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private array $employerIds;
    private VacancyChannel $telegramSenderHelper;

    public function __construct(array $employerIds)
    {
        $this->employerIds = $employerIds;
        $this->telegramSenderHelper = new VacancyChannel();
    }

    /**
     * @throws TelegramSDKException
     */
    public function handle(): void
    {
        $vacancies = Ad_employer::query()
            ->whereIn('employer_id', $this->employerIds)
            ->where('autosend_tg', 1)
            ->where('active_is', 1)
            ->where('is_remove', 0)
            ->get();

        foreach ($vacancies as $vacancy) {
            $this->telegramSenderHelper->sendVacancy($vacancy);
        }
    }
}