using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;

namespace Fab2ApprovalSystem.Controllers;

public class WebAPIController : ApiController {
    public TrainingController trainingFunctions = new TrainingController();
    public CorrectiveActionController carFunctions = new CorrectiveActionController();
    public AccountController accountFunctions = new AccountController();
    public HomeController homeFunctions = new HomeController();
    private readonly AppSettings _AppSettings = GlobalVars.AppSettings;

    public string Get() {
        return "Welcome To Web API";
    }
    public List<string> Get(int Id) {
        return new List<string> {
                "Data1",
                "Data2"
            };
    }
    public void Post() {
    }

    public HttpResponseMessage Post(HttpRequestMessage request, string action) {
        switch (action) {
            case "TrainingReport":
                if (trainingFunctions.RunTrainingReport()) {
                    return request.CreateResponse(HttpStatusCode.OK);
                } else {
                    return request.CreateResponse(HttpStatusCode.InternalServerError);
                }
            case "CARDueDates":
                if (carFunctions.ProcessCARDueDates()) {
                    return request.CreateResponse(HttpStatusCode.OK);
                } else {
                    return request.CreateResponse(HttpStatusCode.InternalServerError);
                }
            case "ProcessOoO":
                if (homeFunctions.ProcessOoO()) {
                    return request.CreateResponse(HttpStatusCode.OK);
                } else {
                    return request.CreateResponse(HttpStatusCode.InternalServerError);
                }
            case "ExpireOoO":
                if (homeFunctions.ExpireOoO()) {
                    return request.CreateResponse(HttpStatusCode.OK);
                } else {
                    return request.CreateResponse(HttpStatusCode.InternalServerError);
                }
            case "ApprovalReminders":
                if (homeFunctions.ApprovalsReminderNotifications()) {
                    return request.CreateResponse(HttpStatusCode.OK);
                } else {
                    return request.CreateResponse(HttpStatusCode.InternalServerError);
                }
            default:
                return request.CreateResponse(HttpStatusCode.InternalServerError, "Action Not Found");
        }
    }
}