<?php

namespace kernel;



use kernel\helpers\Debug;
use kernel\modules\user\models\User;
use kernel\services\ModuleService;
use Phroute\Phroute\Dispatcher;

class App
{

    static string $responseType = ResponseType::TEXT_HTML;

    static CgRouteCollector $collector;

    static Header $header;

    static User $user;

    static array $secure;

    public ModuleService $moduleService;

    public static Database $db;

    public function run(): void
    {
        $dispatcher = new Dispatcher(App::$collector->getData());
        $response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
        App::$header->set();

        //header('Content-Type: ' . App::$responseType);
        echo $response;
    }

    public function load(): static
    {
        $this->moduleService = new ModuleService();
        App::$collector = new CgRouteCollector();
        $this->setRouting();

        return $this;
    }

    public function setRouting(): void
    {
        include KERNEL_DIR . "/routs/admin.php";
        include ROOT_DIR . "/rout.php";
        $modules_routs = $this->moduleService->getModulesRouts();
        foreach ($modules_routs as $rout){
            include "$rout";
        }
    }

    public static function create(): App
    {
        return new self();
    }

}