using SparkClient.ViewModel.Grading;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Documents;
using System.Windows.Shapes;

namespace EncryptFileTool.Entity
{
    /// <summary>
    /// 定级配置导入数据
    /// </summary>
    public class JsonEntity_SYM : JsonEntity
    {
        // 修改属性类型为基类类型
        public override IEnumerable<GradeConfigInfo> GradeConfigs { get; set; } = new List<GradeConfigInfo_SYM>();
        public override IEnumerable<GradeConfigDetail> GradeConfigDetails { get; set; } = new List<GradeConfigDetail_SYM>();
        public override IEnumerable<GradeConfigParameter> GradeConfigParameters { get; set; } = new List<GradeConfigParameter_SYM>();
    }

    public class GradeConfigInfo_SYM : GradeConfigInfo
    {
        // 使用 override 关键字重写方法
        public override string getInsertSql()
        {
            return JsonEntity.GenerateInsertSql("SYM_GRADE_CONFIG", new[] { "GRADE_CONFIG_ID", "SHAPE_ID", "RULE_ID", "TEST_ITEM_ID", "GRADE_CONFIG_ORDER", "GUID" },
                new[] { GRADE_CONFIG_ID, SHAPE_ID, RULE_ID, TEST_ITEM_ID, GRADE_CONFIG_ORDER.ToString(), Guid.NewGuid().ToString() });
        }

        // 使用 override 关键字重写方法
        public override string getDeleteSql()
        {
            return JsonEntity.GenerateDeleteSql("SYM_GRADE_CONFIG", $"SHAPE_ID='{JsonEntity.EscapeSql(SHAPE_ID)}' AND RULE_ID='{JsonEntity.EscapeSql(RULE_ID)}'");
        }
    }

    public class GradeConfigDetail_SYM : GradeConfigDetail
    {
        // 使用 override 关键字重写方法
        public override string getInsertSql()
        {
            return JsonEntity.GenerateInsertSql("SYM_GRADE_CONFIG_DETAIL", new[] { "GRADE_CONFIG_ID", "GRADE_CONFIG_DETAIL_ID", "GRADE_ID", "GUID" },
                new[] { GRADE_CONFIG_ID, GRADE_CONFIG_DETAIL_ID.ToString(), GRADE_ID, Guid.NewGuid().ToString() });
        }

        // 使用 override 关键字重写方法
        public override string getDeleteSql(string shapeId, string ruleId)
        {
            return JsonEntity.GenerateDeleteSql("SYM_GRADE_CONFIG_DETAIL", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
        }
    }

    public class GradeConfigParameter_SYM : GradeConfigParameter
    {
        // 使用 override 关键字重写方法
        public override string getInsertSql()
        {
            return JsonEntity.GenerateInsertSql("SYM_GRADE_CONFIG_DETAIL_PARAMETER", new[] { "GRADE_CONFIG_ID", "GRADE_CONFIG_DETAIL_ID", "PARAMETER_KEY", "PARAMETER_VALUE", "PARAMETER_TYPE", "GUID" },
                new[] { GRADE_CONFIG_ID, GRADE_CONFIG_DETAIL_ID.ToString(), PARAMETER_KEY, PARAMETER_VALUE, PARAMETER_TYPE, Guid.NewGuid().ToString() });
        }

        // 使用 override 关键字重写方法
        public override string getDeleteSql(string shapeId, string ruleId)
        {
            return JsonEntity.GenerateDeleteSql("SYM_GRADE_CONFIG_DETAIL_PARAMETER", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
        }
    }
}