namespace OI.Metrology.Shared.DataModels;

public record InfinityQSBase(int EV_COUNT,
                             int CL_COUNT,
                             int SL_COUNT,
                             int SE_SGRP,
                             int SE_SGTM,
                             int SE_TSNO,
                             int TD_TEST,
                             string? PR_NAME,
                             string? JD_NAME,
                             string? PL_NAME,
                             string? PD_NAME,
                             string? TD_NAME,
                             double? SE_VAL)
{

    public static InfinityQSBaseV2[] Convert(InfinityQSBase[] collection)
    {
        List<InfinityQSBaseV2> results = new();
        foreach (InfinityQSBase item in collection)
            results.Add(Map(item));
        return (from l in results orderby l.EventCount descending, l.ControlLimitCount descending, l.SpecLimitCount descending, l.SubGroupId, l.SiteNumber, l.VariableNumber select l).ToArray();
    }

    public static InfinityQSBaseV2 Map(InfinityQSBase item)
    {
        InfinityQSBaseV2 result = new(item.EV_COUNT,
                                      item.CL_COUNT,
                                      item.SL_COUNT,
                                      item.SE_SGRP,
                                      item.SE_SGTM,
                                      item.SE_TSNO,
                                      item.TD_TEST,
                                      item.PR_NAME,
                                      item.JD_NAME,
                                      item.PL_NAME,
                                      item.PD_NAME,
                                      item.TD_NAME,
                                      item.SE_VAL);
        return result;
    }

}

public record InfinityQSBaseV2(int EventCount,
                               int ControlLimitCount,
                               int SpecLimitCount,
                               int SubGroupId,
                               int SubGroupDateTime,
                               int SiteNumber,
                               int VariableNumber,
                               string? Process,
                               string? Job,
                               string? Lot,
                               string? Part,
                               string? Variable,
                               double? Value)
{ }