<?php

use App\Tenancy\TenantManager;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

// PWA — manifest dinamic per tenant.
Route::get('/manifest.json', function (Request $request) {
    $tenant = app(TenantManager::class)->current();
    $name = $tenant?->display_name ?? $tenant?->name ?? 'AutoCRM';
    $themeColor = $tenant?->settings['theme_color'] ?? '#3B82F6';
    $shortName = $tenant?->slug ?? 'autocrm';

    return response()->json([
        'name' => $name,
        'short_name' => mb_substr($shortName, 0, 12),
        'description' => 'CRM autoservice — ' . $name,
        'start_url' => '/app',
        'display' => 'standalone',
        'orientation' => 'any',
        'background_color' => '#ffffff',
        'theme_color' => $themeColor,
        'lang' => $tenant?->settings['language'] ?? 'ro',
        'icons' => [
            ['src' => '/pwa/icon-192.png', 'sizes' => '192x192', 'type' => 'image/png'],
            ['src' => '/pwa/icon-512.png', 'sizes' => '512x512', 'type' => 'image/png'],
            ['src' => '/pwa/icon-maskable.png', 'sizes' => '512x512', 'type' => 'image/png', 'purpose' => 'maskable'],
        ],
    ])->header('Cache-Control', 'public, max-age=3600');
});

// Service worker stub — minimal cache for shell.
Route::get('/sw.js', function () {
    return response(<<<'JS'
        const CACHE = 'autocrm-shell-v1';
        const SHELL = ['/manifest.json'];
        self.addEventListener('install', e => {
            e.waitUntil(caches.open(CACHE).then(c => c.addAll(SHELL)));
        });
        self.addEventListener('activate', e => {
            e.waitUntil(caches.keys().then(keys =>
                Promise.all(keys.filter(k => k !== CACHE).map(k => caches.delete(k)))
            ));
        });
        self.addEventListener('fetch', e => {
            const u = new URL(e.request.url);
            if (e.request.method !== 'GET') return;
            // network-first for app routes; cache-first for static
            if (u.pathname.startsWith('/build/') || u.pathname.startsWith('/pwa/')) {
                e.respondWith(caches.match(e.request).then(m => m || fetch(e.request).then(r => {
                    const copy = r.clone();
                    caches.open(CACHE).then(c => c.put(e.request, copy));
                    return r;
                })));
            }
        });
        JS, 200, ['Content-Type' => 'application/javascript', 'Cache-Control' => 'public, max-age=3600']);
});
