<?php

namespace App\Framework\ErrorHandling;

use App\Framework\Http\RequestId;

final readonly class ErrorContext
{
    public StackTrace $stackTrace;

    public function __construct(
        public \Throwable $exception,
        public ErrorLevel $level,
        public RequestId  $requestId,
        public array      $additionalData = []
    )
    {
        $this->stackTrace = new StackTrace($exception);
    }

    /**
     * Gibt eine HTML-formatierte Version der Fehlermeldung zurück
     */
    public function getFormattedMessage(): string
    {
        return nl2br(htmlspecialchars($this->exception->getMessage(), ENT_QUOTES, 'UTF-8'));
    }

    /**
     * Gibt die Fehlerklasse zurück (ohne Namespace)
     */
    public function getErrorClass(): string
    {
        $class = get_class($this->exception);
        $parts = explode('\\', $class);
        return end($parts);
    }

    /**
     * Gibt den vollständigen Klassennamen zurück
     */
    public function getFullErrorClass(): string
    {
        return get_class($this->exception);
    }
}
