@php($backupService=app(\App\Services\ManualBackups::class)) @php($identity=app(\App\Services\InstallationIdentity::class)->initialize()) @php($currentInstallation=app(\App\Services\InstallationIdentity::class)->current())

Backups

Owner only. Create backups manually when needed. Reset and restore never create automatic backups. Downloaded backups contain sensitive customer data, email credentials and encryption information; store them securely.

@csrf
@forelse($backupService->listing() as $backup)@empty@endforelse
Backup fileCreated onSizeActions
{{ $backup['id'] }}{{ \Carbon\Carbon::createFromTimestamp($backup['created'])->format('d M Y, H:i') }}{{ number_format($backup['size']/1048576,2) }} MB
Download
@csrf
@csrf @method('DELETE')
No manual backups yet.
Upload a downloaded backup
@csrfThe server’s upload limit also applies. Oversized files can be copied privately to storage/app/site-backups by your hosting administrator. Only matching backup versions are accepted.
@if(session('restore_preview'))@php($restore=session('restore_preview'))

Review backup restoration

Source website: {{ $restore['website'] }}
Created: {{ $restore['created'] }}
Data version: {{ $restore['version'] }}

{{ $restore['counts']['users']??0 }} accounts · {{ $restore['counts']['receipt_submissions']??0 }} receipts · {{ $restore['counts']['digital_reward_pins']??0 }} PIN records. Database records and uploaded files will be replaced. Application code and manually saved backups are kept.

Destination: {{ $settings->public_url ?: config('app.url') }}
Database: {{ $currentInstallation['database'] }} ({{ $currentInstallation['driver'] }})

No backup will be created automatically. Create and download one first if needed. Restoring an older backup cannot establish whether a PIN was used externally. Review stock before re-enabling the wheel.

@csrf@include('admin.partials.owner-confirmation')The website address and hosting connections are kept. Sensitive values are recovered using the backup’s key and encrypted for this destination. Sign in afterward using an Owner account from the backup. The wheel will be disabled and campaign emails paused for review.
@endif @if(is_file(storage_path('app/campaign-email.paused')))

Campaign emails are paused

Review the restored campaign, PIN stock and Email setup before resuming queued customer reward and stock-alert emails. Owner sign-in and confirmation emails remain available.

@csrf @include('admin.partials.owner-confirmation')
@endif

Factory reset

Select items to remove. Unchecked items are kept. Related items are automatically selected and explained. The current Owner account, application features, website address and saved backups are always protected.

Website: {{ $settings->public_url ?: config('app.url') }}
Database: {{ $currentInstallation['database'] }} ({{ $currentInstallation['driver'] }})

@csrf
@foreach(\App\Services\FactoryReset::GROUPS as $key=>$label)
@endforeach
Keeping PIN inventory keeps its statuses. Removing participation history retires reserved PINs; it does not make issued PINs available. Removing prizes clears associated slots and PIN inventory. Removing email credentials disables the configured email service. Old administrator activity can be removed, but the new reset action is always recorded.
@if(session('factory_preview'))@php($factory=session('factory_preview'))

Review Factory reset

@foreach($factory['counts'] as $group=>$count)@endforeach
Selected for removalAffected records / files
{{ \App\Services\FactoryReset::GROUPS[$group] }}{{ $count }}
Items being kept

No automatic backup will be made. Create and download a manual backup first if needed. Preview expires after 15 minutes or when campaign data changes.

@csrf@include('admin.partials.owner-confirmation')
@endif @push('scripts')@endpush