using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

namespace OI.Metrology.Archive.Controllers;

[Route("/error")]
public class ErrorHandlerController : Controller
{
    private readonly ILogger _Logger;

    public ErrorHandlerController(ILogger<ErrorHandlerController> logger) => _Logger = logger;

    public IActionResult Index()
    {
        IExceptionHandlerFeature? error = HttpContext.Features.Get<IExceptionHandlerFeature>();
        if (error is null)
        {
            return Redirect("~/");
        }
        else
        {
            _Logger.LogError("Unhandled exception: " + error.Error.ToString());
            dynamic r = new
            {
                Message = error.Error is null ? "Error" : error.Error.Message
            };
            return StatusCode(StatusCodes.Status500InternalServerError, r);
        }
    }
}