2023-08-10 19:00:02 +00:00
< ? php
namespace App\Notifications\Database ;
use App\Models\ScheduledDatabaseBackup ;
2023-10-10 12:17:16 +00:00
use App\Notifications\Channels\DiscordChannel ;
use App\Notifications\Channels\TelegramChannel ;
2023-08-10 19:00:02 +00:00
use Illuminate\Bus\Queueable ;
use Illuminate\Contracts\Queue\ShouldQueue ;
2023-10-10 12:17:16 +00:00
use Illuminate\Notifications\Channels\MailChannel ;
2023-08-10 19:00:02 +00:00
use Illuminate\Notifications\Messages\MailMessage ;
use Illuminate\Notifications\Notification ;
class BackupFailed extends Notification implements ShouldQueue
{
use Queueable ;
2023-09-18 13:19:27 +00:00
public $tries = 1 ;
2023-09-01 13:52:18 +00:00
public string $name ;
2024-04-25 10:09:46 +00:00
public string $database_name ;
2023-09-01 13:52:18 +00:00
public string $frequency ;
2023-08-10 19:00:02 +00:00
2023-08-11 08:42:57 +00:00
public function __construct ( ScheduledDatabaseBackup $backup , public $database , public $output )
2023-08-10 19:00:02 +00:00
{
2023-09-01 13:52:18 +00:00
$this -> name = $database -> name ;
2024-04-25 10:09:46 +00:00
$this -> database_name = $database -> database_name ();
2023-09-01 13:52:18 +00:00
$this -> frequency = $backup -> frequency ;
2023-08-10 19:00:02 +00:00
}
public function via ( object $notifiable ) : array
{
2023-10-10 12:17:16 +00:00
return [ DiscordChannel :: class , TelegramChannel :: class , MailChannel :: class ];
2023-08-10 19:00:02 +00:00
}
public function toMail () : MailMessage
{
$mail = new MailMessage ();
2023-10-10 11:10:43 +00:00
$mail -> subject ( " Coolify: [ACTION REQUIRED] Backup FAILED for { $this -> database -> name } " );
2023-09-01 13:52:18 +00:00
$mail -> view ( 'emails.backup-failed' , [
'name' => $this -> name ,
2024-04-25 10:09:46 +00:00
'database_name' => $this -> database_name ,
2023-09-01 13:52:18 +00:00
'frequency' => $this -> frequency ,
'output' => $this -> output ,
]);
2023-08-10 19:00:02 +00:00
return $mail ;
}
public function toDiscord () : string
{
2024-04-25 10:09:46 +00:00
return " Coolify: Database backup for { $this -> name } (db: { $this -> database_name } ) with frequency of { $this -> frequency } was FAILED. \n \n Reason: { $this -> output } " ;
2023-08-10 19:00:02 +00:00
}
2023-09-06 12:31:38 +00:00
public function toTelegram () : array
{
2024-04-25 10:09:46 +00:00
$message = " Coolify: Database backup for { $this -> name } (db: { $this -> database_name } ) with frequency of { $this -> frequency } was FAILED. \n \n Reason: { $this -> output } " ;
2023-09-06 12:31:38 +00:00
return [
" message " => $message ,
];
}
2023-08-10 19:00:02 +00:00
}