@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.

@csrfFull includes application code, dependencies, assets, uploads and database records. Existing backups, logs, temporary files, server software and database server accounts are excluded.
@forelse($backupService->listing() as $backup)@empty@endforelse
Backup fileTypeCreated onSizeActions
{{ $backup['id'] }}{{ ($backup['type']??'data')==='full'?'Full website + database':'Database + uploads' }}{{ \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.

Download recovery tool

Keep the recovery tool with your downloaded full backup. It restores into a new empty website folder using your destination database connection. MySQL and PHP must be installed separately.
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. @if(($restore['type']??'data')==='full')Application files will also be restored to the saved version.@else Application code is kept.@endif Website connection settings 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