Files
docker-rconfig/app/Jobs/DownloadConfigNow.php
2024-10-19 18:23:55 +00:00

63 lines
2.1 KiB
PHP

<?php
namespace App\Jobs;
use App\Models\User;
use App\Notifications\DBNotification;
use App\Notifications\MailConfigDownloadNotification;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\Redis;
class DownloadConfigNow implements ShouldQueue
{
use Queueable, SerializesModels;
public $tries = 5;
public $timeout = 120;
protected $username;
protected $device_id;
public function __construct($device_id, $username = null)
{
$this->username = $username;
$this->device_id = $device_id;
}
public function handle()
{
Redis::set('download-now-' . $this->device_id, 'true');
$download_command = 'rconfig:download-device ' . $this->device_id;
$executionStartTime = microtime(true);
Artisan::call($download_command);
$executionEndTime = microtime(true);
$seconds = round($executionEndTime - $executionStartTime, 2);
$logmsg = 'Manual config download job completed for Device ID:' . $this->device_id;
activityLogIt(__CLASS__, __FUNCTION__, 'info', $logmsg, 'config');
try {
Notification::send(User::all(), new DBNotification('Manual download completed', $logmsg, 'config', 'info', 'pficon-info'));
} catch (\Exception $e) {
$response = 'Could not send DBNotification: ' . $e->getMessage();
activityLogIt(__CLASS__, __FUNCTION__, 'error', $response, 'config');
}
try {
Notification::send(User::allUsersAndRecipients(), new MailConfigDownloadNotification($this->device_id, $seconds, $this->username));
} catch (\Exception $e) {
$response = 'Could not send mail notification: ' . $e->getMessage();
Notification::send(User::all(), new DBNotification('Notification error', $response, 'system', 'error', 'pficon-error-circle-o'));
activityLogIt(__CLASS__, __FUNCTION__, 'error', $response, 'config');
}
}
}