using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using OI.Metrology.Server.Models;
using OI.Metrology.Shared.ViewModels;

namespace OI.Metrology.Server.Controllers;

public class ReactorsController : Controller
{

    private readonly bool _IsTestDatabase;
    private readonly AppSettings _AppSettings;

    public ReactorsController(AppSettings appSettings)
    {
        _AppSettings = appSettings;
        _IsTestDatabase = appSettings.ConnectionString.Contains("test", StringComparison.InvariantCultureIgnoreCase);
    }

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

    private string GetApiUrl() => string.IsNullOrEmpty(_AppSettings.ApiUrl) ? Url.Content("~/") : _AppSettings.ApiUrl[0] == '~' ? Url.Content(_AppSettings.ApiUrl) : _AppSettings.ApiUrl;

    [HttpGet]
    [Route("/Step1")]
    [Route("/Metrology/Step1")]
    public IActionResult Step1(string mod = "", string equipment = "", string layer = "", string zone = "", string rds = "", string initials = "")
    {
        string directory = "D:/Tmp/Metrology";
        if (!Directory.Exists(directory))
            _ = Directory.CreateDirectory(directory);
        string[] model = new string[] { mod, equipment, layer, zone, rds, initials };
        if (!string.IsNullOrEmpty(initials))
            System.IO.File.WriteAllLines(Path.Combine(directory, $"{DateTime.Now.Ticks}-{initials}.rsv"), model);
        return View(model);
    }

    [HttpGet]
    [Route("/Step2")]
    [Route("/Metrology/Step2")]
    public IActionResult Step2(string mod) =>
        View(new string[] { mod });

    [HttpGet]
    [Route("/Step3")]
    [Route("/Metrology/Step3")]
    public IActionResult Step3(string mod, string equipment) =>
        View(new string[] { mod, equipment });

    [HttpGet]
    [Route("/Step4")]
    [Route("/Metrology/Step4")]
    public IActionResult Step4(string mod, string equipment, string layer) =>
        View(new string[] { mod, equipment, layer });

    [HttpGet]
    [Route("/Step5")]
    [Route("/Metrology/Step5")]
    public IActionResult Step5(string mod, string equipment, string layer, string zone) =>
        View(new string[] { mod, equipment, layer, zone });

    [HttpGet]
    [Route("/Step6")]
    [Route("/Metrology/Step6")]
    public IActionResult Step6(string mod, string equipment, string layer, string zone, string rds) =>
        View(new string[] { mod, equipment, layer, zone, rds });

    [HttpGet]
    [Route("/Reactor")]
    [Route("/Metrology/Reactor")]
    public IActionResult Reactor() => View(new RunInfo());

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

}