File: /var/www/exnova-telegram-bot-v2/app/Jobs/DirectionSelected.php
<?php
namespace App\Jobs;
use App\Telegram\Messages\BlocksHandler;
use App\Twill\Capsules\TradingSessions\Models\TradingSession;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Foundation\Queue\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class DirectionSelected implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $session;
/**
* Create a new job instance.
*/
public function __construct($session)
{
$this->session = $session;
}
/**
* Execute the job.
*/
public function handle(): void
{
$session = $this->session;
if ($session) {
$blocks = [];
$setState = null;
if (in_array($session->direction, [-1, 1])) {
$bot = $session->bot()->first();
$user = $session->user()->first();
$blocks = $bot->getBlocks('select-autotrading-amount', $user);
$setState = $session::STATE_SELECT_AMOUNT;
}
if (!empty($blocks)) {
$post = ['message' => ['chat' => ['id' => $user->telegram_id]]];
$blocksHandler = new BlocksHandler($user, $post);
$lastMessageSent = $blocksHandler->handle($blocks);
if (!empty($lastMessageSent['result'])) {
$lastMessageSent = $lastMessageSent['result']['message_id'];
$session->telegram_message_id = $lastMessageSent;
}
if ($setState) {
$session->state = $setState;
}
$session->save();
}
}
}
}