diff --git a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php index 5ac80f82..251272a8 100644 --- a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php +++ b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php @@ -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(); } diff --git a/app/Jobs/CreateBackupJob.php b/app/Jobs/CreateBackupJob.php index 8504f7c1..c3a24e9a 100644 --- a/app/Jobs/CreateBackupJob.php +++ b/app/Jobs/CreateBackupJob.php @@ -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(); diff --git a/app/Space/BackupConfigurationFactory.php b/app/Space/BackupConfigurationFactory.php new file mode 100644 index 00000000..934a2127 --- /dev/null +++ b/app/Space/BackupConfigurationFactory.php @@ -0,0 +1,40 @@ +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; + } +}