2023-11-16 10:53:37 +00:00
< ? php
namespace App\Notifications\Server ;
use App\Models\Server ;
use App\Notifications\Channels\DiscordChannel ;
use App\Notifications\Channels\EmailChannel ;
use App\Notifications\Channels\TelegramChannel ;
2024-06-10 20:43:34 +00:00
use Illuminate\Bus\Queueable ;
2023-11-16 10:53:37 +00:00
use Illuminate\Contracts\Queue\ShouldQueue ;
use Illuminate\Notifications\Messages\MailMessage ;
use Illuminate\Notifications\Notification ;
class HighDiskUsage extends Notification implements ShouldQueue
{
use Queueable ;
public $tries = 1 ;
2024-06-10 20:43:34 +00:00
2024-07-25 20:04:05 +00:00
public function __construct ( public Server $server , public int $disk_usage , public int $cleanup_after_percentage )
{
}
2023-11-16 10:53:37 +00:00
public function via ( object $notifiable ) : array
{
$channels = [];
$isEmailEnabled = isEmailEnabled ( $notifiable );
$isDiscordEnabled = data_get ( $notifiable , 'discord_enabled' );
$isTelegramEnabled = data_get ( $notifiable , 'telegram_enabled' );
if ( $isDiscordEnabled ) {
$channels [] = DiscordChannel :: class ;
}
if ( $isEmailEnabled ) {
$channels [] = EmailChannel :: class ;
}
if ( $isTelegramEnabled ) {
$channels [] = TelegramChannel :: class ;
}
2024-06-10 20:43:34 +00:00
2023-11-16 10:53:37 +00:00
return $channels ;
}
public function toMail () : MailMessage
{
2024-07-25 20:04:05 +00:00
$mail = new MailMessage ();
$mail -> subject ( " Last Hour: Server ( { $this -> server -> name } ) high disk usage detected! " );
2023-11-16 10:53:37 +00:00
$mail -> view ( 'emails.high-disk-usage' , [
'name' => $this -> server -> name ,
'disk_usage' => $this -> disk_usage ,
'threshold' => $this -> cleanup_after_percentage ,
]);
2024-06-10 20:43:34 +00:00
2023-11-16 10:53:37 +00:00
return $mail ;
}
public function toDiscord () : string
{
2024-07-25 20:04:05 +00:00
$message = " Last Hour: Server ' { $this -> server -> name } ' high disk usage detected! \n Disk usage: { $this -> disk_usage } %. Threshold: { $this -> cleanup_after_percentage } %. \n Please cleanup your disk to prevent data-loss. \n Here are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup. " ;
2024-06-10 20:43:34 +00:00
2023-11-16 10:53:37 +00:00
return $message ;
}
2024-06-10 20:43:34 +00:00
2023-11-16 10:53:37 +00:00
public function toTelegram () : array
{
return [
2024-07-25 20:04:05 +00:00
'message' => " Last Hour: Server ' { $this -> server -> name } ' high disk usage detected! \n Disk usage: { $this -> disk_usage } %. Threshold: { $this -> cleanup_after_percentage } %. \n Please cleanup your disk to prevent data-loss. \n Here are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup. " ,
2023-11-16 10:53:37 +00:00
];
}
}