lasthourcloud/app/Notifications/Channels/TelegramChannel.php

45 lines
1.9 KiB
PHP
Raw Normal View History

2023-09-06 12:31:38 +00:00
<?php
namespace App\Notifications\Channels;
use App\Jobs\SendMessageToTelegramJob;
class TelegramChannel
{
public function send($notifiable, $notification): void
{
$data = $notification->toTelegram($notifiable);
$telegramData = $notifiable->routeNotificationForTelegram();
$message = data_get($data, 'message');
$buttons = data_get($data, 'buttons', []);
$telegramToken = data_get($telegramData, 'token');
$chatId = data_get($telegramData, 'chat_id');
2024-05-17 10:09:22 +00:00
$topicId = null;
2023-09-08 12:15:28 +00:00
$topicsInstance = get_class($notification);
2023-09-06 12:31:38 +00:00
2023-09-08 12:15:28 +00:00
switch ($topicsInstance) {
case 'App\Notifications\Test':
$topicId = data_get($notifiable, 'telegram_notifications_test_message_thread_id');
break;
2024-05-17 10:09:22 +00:00
case 'App\Notifications\Application\StatusChanged':
$topicId = data_get($notifiable, 'telegram_notifications_status_changes_message_thread_id');
break;
case 'App\Notifications\Application\DeploymentSuccess':
case 'App\Notifications\Application\DeploymentFailed':
2023-09-08 12:15:28 +00:00
$topicId = data_get($notifiable, 'telegram_notifications_deployments_message_thread_id');
break;
2024-05-17 10:09:22 +00:00
case 'App\Notifications\Database\BackupSuccess':
case 'App\Notifications\Database\BackupFailed':
2023-09-08 12:15:28 +00:00
$topicId = data_get($notifiable, 'telegram_notifications_database_backups_message_thread_id');
break;
case 'App\Notifications\ScheduledTask\TaskFailed':
$topicId = data_get($notifiable, 'telegram_notifications_scheduled_tasks_thread_id');
break;
2023-09-08 12:15:28 +00:00
}
2023-09-06 12:31:38 +00:00
if (!$telegramToken || !$chatId || !$message) {
2023-09-08 14:16:28 +00:00
return;
2023-09-06 12:31:38 +00:00
}
2023-09-08 12:15:28 +00:00
dispatch(new SendMessageToTelegramJob($message, $buttons, $telegramToken, $chatId, $topicId));
2023-09-06 12:31:38 +00:00
}
}