Merge pull request #508 from alexdev01012020/email-backup

Overrite the email notification for backup
This commit is contained in:
mchev
2026-03-27 08:04:02 +01:00
committed by GitHub
3 changed files with 47 additions and 12 deletions

View File

@@ -76,7 +76,10 @@ class BackupsController extends ApiController
{
$this->authorize('manage backups');
dispatch(new CreateBackupJob($request->all()))->onQueue(config('backup.queue.name'));
$data = $request->all();
$data['company'] = $request->header('company');
dispatch(new CreateBackupJob($data))->onQueue(config('backup.queue.name'));
return $this->respondSuccess();
}

View File

@@ -2,13 +2,12 @@
namespace App\Jobs;
use App\Models\FileDisk;
use App\Space\BackupConfigurationFactory;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Spatie\Backup\Config\Config;
use Spatie\Backup\Tasks\Backup\BackupJobFactory;
class CreateBackupJob implements ShouldQueue
@@ -25,7 +24,7 @@ class CreateBackupJob implements ShouldQueue
*
* @return void
*/
public function __construct($data = '')
public function __construct($data = [])
{
$this->data = $data;
}
@@ -35,14 +34,7 @@ class CreateBackupJob implements ShouldQueue
*/
public function handle(): void
{
$fileDisk = FileDisk::find($this->data['file_disk_id']);
$fileDisk->setConfig();
$prefix = env('DYNAMIC_DISK_PREFIX', 'temp_');
config(['backup.backup.destination.disks' => [$prefix.$fileDisk->driver]]);
$config = Config::fromArray(config('backup'));
$config = BackupConfigurationFactory::make($this->data);
$backupJob = BackupJobFactory::createFromConfig($config);
if (! defined('SIGINT')) {
$backupJob->disableSignals();

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Space;
use App\Models\CompanySetting;
use App\Models\FileDisk;
use Exception;
use Spatie\Backup\Config\Config;
class BackupConfigurationFactory
{
public static function make($data = []): Config
{
if (blank($data['company'] ?? null)) {
throw new Exception('The Company ID is missig');
}
if (blank($data['file_disk_id'] ?? null)) {
throw new Exception('No file disk selected');
}
$fileDisk = FileDisk::find($data['file_disk_id']);
$fileDisk->setConfig();
$prefix = env('DYNAMIC_DISK_PREFIX', 'temp_');
config(['backup.backup.destination.disks' => [$prefix.$fileDisk->driver]]);
$companyNotificationEmail = CompanySetting::getSetting('notification_email', $data['company']);
if ($companyNotificationEmail) {
config(['backup.notifications.mail.to' => $companyNotificationEmail]);
}
$config = Config::fromArray(config('backup'));
return $config;
}
}