<?php namespace BookStack\Exceptions;

use Exception;
use Illuminate\Contracts\Support\Responsable;

class PrettyException extends Exception implements Responsable
{
    /**
     * @var ?string
     */
    protected $subtitle = null;

    /**
     * @var ?string
     */
    protected $details = null;

    /**
     * Render a response for when this exception occurs.
     * @inheritdoc
     */
    public function toResponse($request)
    {
        $code = ($this->getCode() === 0) ? 500 : $this->getCode();
        return response()->view('errors.' . $code, [
            'message' => $this->getMessage(),
            'subtitle' => $this->subtitle,
            'details' => $this->details,
        ], $code);
    }

    public function setSubtitle(string $subtitle): self
    {
        $this->subtitle = $subtitle;
        return $this;
    }

    public function setDetails(string $details): self
    {
        $this->details = $details;
        return $this;
    }
}