query('backup_set_id'); if (! is_numeric($backupSetIdRaw)) { return; } $backupSetId = (int) $backupSetIdRaw; if ($backupSetId <= 0) { return; } $tenant = Tenant::current(); if (! $tenant) { return; } $belongsToTenant = BackupSet::query() ->where('tenant_id', $tenant->id) ->whereKey($backupSetId) ->exists(); if (! $belongsToTenant) { return; } $backupItemIds = $this->normalizeBackupItemIds(request()->query('backup_item_ids')); $scopeModeRaw = request()->query('scope_mode'); $scopeMode = in_array($scopeModeRaw, ['all', 'selected'], true) ? $scopeModeRaw : ($backupItemIds !== [] ? 'selected' : 'all'); $this->data['backup_set_id'] = $backupSetId; $this->form->callAfterStateUpdated('data.backup_set_id'); $this->data['scope_mode'] = $scopeMode; $this->form->callAfterStateUpdated('data.scope_mode'); if ($scopeMode === 'selected') { if ($backupItemIds !== []) { $this->data['backup_item_ids'] = $backupItemIds; } $this->form->callAfterStateUpdated('data.backup_item_ids'); } } /** * @return array */ private function normalizeBackupItemIds(mixed $raw): array { if (is_string($raw)) { $raw = array_filter(array_map('trim', explode(',', $raw))); } if (! is_array($raw)) { return []; } $itemIds = []; foreach ($raw as $value) { if (is_int($value) && $value > 0) { $itemIds[] = $value; continue; } if (is_string($value) && ctype_digit($value)) { $itemId = (int) $value; if ($itemId > 0) { $itemIds[] = $itemId; } } } $itemIds = array_values(array_unique($itemIds)); sort($itemIds); return $itemIds; } protected function getSubmitFormAction(): Action { return parent::getSubmitFormAction() ->label('Create restore run') ->icon('heroicon-o-check-circle'); } protected function handleRecordCreation(array $data): Model { return RestoreRunResource::createRestoreRun($data); } #[On('entra-group-cache-picked')] public function applyEntraGroupCachePick(string $sourceGroupId, string $entraId): void { data_set($this->data, "group_mapping.{$sourceGroupId}", $entraId); $this->data['check_summary'] = null; $this->data['check_results'] = []; $this->data['checks_ran_at'] = null; $this->data['preview_summary'] = null; $this->data['preview_diffs'] = []; $this->data['preview_ran_at'] = null; $this->form->fill($this->data); if (method_exists($this, 'unmountAction')) { $this->unmountAction(); } } }