using OI.Metrology.Shared.Models.Stateless;
using OI.Metrology.Shared.ViewModels;
using System.Text.Json;

namespace OI.Metrology.Server.Repository;

public class ServiceShopOrderRepository : IServiceShopOrderRepository
{

    private static ServiceShopOrder[] GetServiceShopOrders(Shared.Models.ServiceShop? serviceShop)
    {
        ServiceShopOrder[] result = IServiceShopOrder.GetServiceShopOrders(serviceShop);
        return result;
    }

    private static Shared.Models.ServiceShop? GetServiceShopOrders()
    {
        Shared.Models.ServiceShop? result;
        string jsonFile;
        string checkDirectory = Path.Combine(AppContext.BaseDirectory, "Data/Mike");
        if (Directory.Exists(checkDirectory))
            jsonFile = Path.Combine(checkDirectory, "service-shop.json");
        else
            jsonFile = Path.Combine(AppContext.BaseDirectory, "service-shop.json");
        string json = File.ReadAllText(jsonFile);
        result = JsonSerializer.Deserialize<Shared.Models.ServiceShop>(json);
        return result;
    }

    async Task<ServiceShopOrder[]> IServiceShopOrderRepository.GetAllServiceShopOrders()
    {
        ServiceShopOrder[] results;
        Shared.Models.ServiceShop? serviceShop = await Task.Run(GetServiceShopOrders);
        results = GetServiceShopOrders(serviceShop);
        return results.ToArray();
    }

    async Task<ServiceShopOrder[]> IServiceShopOrderRepository.GetServiceShopOrders(string id)
    {
        ServiceShopOrder[] results;
        Shared.Models.ServiceShop? serviceShop = await Task.Run(GetServiceShopOrders);
        results = GetServiceShopOrders(serviceShop).Where(l => l.Id == id).ToArray();
        return results;
    }

}