<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;

class VOHController extends Controller
{
    // 1. Generate Link (For Finalsite)
    public function start()
    {
        // For Production, use addHours(48). For testing, use addMinutes(2).
        $url = URL::temporarySignedRoute(
            'voh.view', 
            now()->addHours(48) // Change this to addHours(48) when done!
        );
        
        return redirect($url);
    }

    // 2. Secure Watch Page
    public function watch(Request $request)
    {
        // Security Check
        if (! $request->hasValidSignature()) {
            abort(403, 'Link Expired.');
        }

        // Proxy Request Logic
        $internal = Request::create(
            '/admissions/voh-internal-source',
            'GET',
            [],
            $request->cookies->all(),
            $request->files->all(),
            $request->server->all()
        );

        app()->instance('request', $internal);

        $controller = app()->make(\App\Http\Controllers\PagesController::class);
        $response   = $controller->load();

        // Handle Response Types
        if ($response instanceof \Illuminate\Http\JsonResponse ||
            $response instanceof \Illuminate\Http\RedirectResponse) {
            return $response;
        }

        // Extract Content
        if ($response instanceof \Illuminate\View\View) {
            $content = $response->render();
        } elseif ($response instanceof \Symfony\Component\HttpFoundation\Response) {
            $content = $response->getContent();
        } else {
            return $response;
        }

        // Inject Auto-Refresh (90s for test, 48h for production)
        // 48 Hours = 172800000 milliseconds
        $script = '<script>setTimeout(function(){ window.location.reload(); }, 172800000);</script>';

        if (strpos($content, '</body>') !== false) {
            $content = str_replace('</body>', $script . '</body>', $content);
        } else {
            $content .= $script;
        }

        return response($content);
    }
}

