<?php

namespace App\Services\Api\Exceptions;

/**
 * El host de la petición no corresponde a ningún entorno del token.
 *
 * Existe para separar dos cosas que antes iban por el mismo camino: este error de
 * dominio —que el Moodle tiene que poder leer para saber que su dominio no está
 * dado de alta— y una `NotFoundHttpException` cualquiera del framework, cuyo
 * mensaje puede traer detalle interno y por eso el controlador lo oculta
 * (MGR-007).
 *
 * El código y el estado HTTP se mantienen en 404/404, que es lo que ya devolvía
 * `sync` desde el middleware: cambiarlos rompería el contrato con el plugin, que
 * ramifica por `code` (ver api-contract.md, sección de retrocompatibilidad).
 */
class EnvironmentNotFoundException extends \RuntimeException
{
    public function __construct(
        string $message = 'Environment not found for this host',
        private int $apiCode = 404,
        private int $httpStatus = 404,
        ?\Throwable $previous = null
    ) {
        parent::__construct($message, 0, $previous);
    }

    public function getApiCode(): int
    {
        return $this->apiCode;
    }

    public function getHttpStatus(): int
    {
        return $this->httpStatus;
    }
}
