<?php

declare(strict_types=1);

namespace App\Framework\Http\Middlewares;

use App\Framework\Http\HttpMiddleware;
use App\Framework\Http\MiddlewareContext;
use App\Framework\Http\Next;
use App\Framework\Http\RequestStateManager;
use App\Framework\Http\StateKey;

final readonly class ControllerRequestMiddleware implements HttpMiddleware
{
    public function __construct(
        #private Container $container
    ) {
    }

    /**
     * @param RequestStateManager $stateManager
     * @inheritDoc
     */
    public function __invoke(MiddlewareContext $context, Next $next, RequestStateManager $stateManager): MiddlewareContext
    {
        error_log("ControllerRequestMiddleware: Starting controller invocation");

        // Check if we have a route context from the routing middleware
        if (! $stateManager->has(StateKey::ROUTE_CONTEXT)) {
            error_log("ControllerRequestMiddleware: No ROUTE_CONTEXT found, skipping controller invocation");

            return $next($context);
        }

        $routeContext = $stateManager->get(StateKey::ROUTE_CONTEXT);
        error_log("ControllerRequestMiddleware: Route context found, invoking controller");

        // TODO: Implement proper controller invocation
        // For now, just pass through
        error_log("ControllerRequestMiddleware: Controller invocation not yet implemented");

        return $next($context);
    }
}
