#region << 版 本 注 释 >>

/*--------------------------------------------------------------------
* 版权所有 (c) 2025 WenJY 保留所有权利。
* CLR版本：4.0.30319.42000
* 机器名称：Mr.Wen's MacBook Pro
* 命名空间：Sln.Iot.CFX
* 唯一标识：CB14024A-08C4-4FF4-BD6C-8E8667D00263
*
* 创建者：WenJY
* 电子邮箱：
* 创建时间：2025-10-24 15:23:00
* 版本：V1.0.0
* 描述：
*
*--------------------------------------------------------------------
* 修改人：
* 时间：
* 修改说明：
*
* 版本：V1.0.0
*--------------------------------------------------------------------*/

#endregion << 版 本 注 释 >>

using CFX;
using CFX.ResourcePerformance;
using CFX.Structures;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Repository.service;
using Sln.Iot.Serilog;

namespace Sln.Iot.CFX.CFXRequestes;

/// <summary>
/// 5.4.4.1.5 - 查询当前有无错误
/// GetActiveFaultsRequest/Response
/// </summary>
public class GetActiveFaultsRequestReceived1 : BaseGetActiveFaultsRequestReceived
{
    private readonly ErrorService errorService = ErrorService.Instance;

    /// <summary>
    /// 子类重写处理
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    public override CFXMessage SubHandle(GetActiveFaultsRequest request)
    {
        // 获取现在所有的错误
        var errorList1 = errorService.GetV1List().ToList();
        var errorList2 = errorService.GetV2List().ToList();

        List<Fault> faults = new List<Fault>();

        foreach (var fault in errorList1)
        {
            faults.Add(new Fault()
            {
                Description = fault.ErrorName,
                FaultCode = fault.ErrorCode,
            });
        }
        foreach (var fault in errorList2)
        {
            faults.Add(new Fault()
            {
                Description = fault.ErrorName,
                FaultCode = fault.ErrorCode,
            });
        }

        CFXMessage response = new GetActiveFaultsResponse()
        {
            Result = new RequestResult()
            {
                Result = StatusResult.Success,
                ResultCode = 0,
                Message = "",
            },
            ActiveFaults = faults
            //ActiveFaults = new List<Fault>()
            //{
            //    new Fault()
            //    {
            //        Description = "测试错误1",
            //        FaultCode = "5003",
            //    }
            //}
        };

        return response;
    }
}