using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using OI.Metrology.Archive.Models;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.ViewModels;
using System;

namespace OI.Metrology.Archive.Controllers;

public class PagesController : Controller
{
    private readonly IMetrologyRepo _Repo;
    private readonly bool _IsTestDatabase;

    public PagesController(AppSettings appSettings, IMetrologyRepo repo)
    {
        _Repo = repo;
        _IsTestDatabase = appSettings.ConnectionString.Contains("test", StringComparison.InvariantCultureIgnoreCase);
    }

    public override void OnActionExecuted(ActionExecutedContext context)
    {
        base.OnActionExecuted(context);
        ViewBag.IsTestDatabase = _IsTestDatabase;
    }

    [HttpGet]
    [Route("/")]
    public IActionResult Index() =>
        View("RunHeaders");

    [HttpGet]
    [Route("/AwaitingDispo")]
    public IActionResult AwaitingDispo() => View();

    [HttpGet]
    [Route("/RunInfo")]
    public IActionResult RunInfo([FromQuery] int tooltypeid = 1, [FromQuery] int headerid = 0)
    {
        RunInfo m = new()
        {
            ToolTypeID = tooltypeid,
            HeaderID = headerid,
            HeaderAttachmentID = Guid.Empty,
        };
        if (headerid > 0)
        {
            m.HeaderAttachmentID = _Repo.GetHeaderAttachmentID(tooltypeid, headerid);
        }
        return View(m);
    }

    [HttpGet]
    [Route("/RunHeaders")]
    public IActionResult RunHeaders() => View();

    [HttpGet]
    [Route("/Crash")]
    public IActionResult Crash() => throw new Exception("Test unhandled exception");
}