using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace MECF.Framework.Common.CommonData
{
    [DataContract]
    [Serializable]
    public class AlarmList
    {
        /// <summary>
        /// 模块名称
        /// </summary>
        [DataMember]
        public string ModuleName { get; set; }
        /// <summary>
        /// 模块状态机
        /// </summary>
        [DataMember]
        public string ModuleState { get; set; }
        /// <summary>
        /// 当前步骤
        /// </summary>
        [DataMember]
        public int ModuleStep { get; set; }
        /// <summary>
        /// 模块指令
        /// </summary>
        [DataMember]
        public int ModuleCmd { get; set; }
        /// <summary>
        /// 报警信息
        /// </summary>
        [DataMember]
        public string AlarmMsg { get; set; }
        /// <summary>
        /// 数据项
        /// </summary>
        [DataMember]
        public string DataItem { get; set; }
        /// <summary>
        /// 报警类型(0-错误,1-警告,2-数据错误)
        /// </summary>
        [DataMember]
        public int AlarmType { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        [DataMember]
        public DateTime CreateTime { get; set; }
        /// <summary>
        /// 更新时间
        /// </summary>
        [DataMember]
        public DateTime UpdateTime { get; set; }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="moduleName"></param>
        /// <param name="moduleState"></param>
        /// <param name="moduleCmd"></param>
        /// <param name="alarmMsg"></param>
        public AlarmList(string moduleName, string moduleState, int moduleCmd, string alarmMsg, int step, int alarmType)
        {
            ModuleName = moduleName;
            ModuleState = moduleState;
            ModuleCmd = moduleCmd;
            AlarmMsg = alarmMsg;
            ModuleStep = step;
            AlarmType = alarmType;
            CreateTime = DateTime.Now;
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        public AlarmList()
        {

        }

        public void Clone(AlarmList alarmList)
        {
            ModuleCmd = alarmList.ModuleCmd;
            ModuleState = alarmList.ModuleState;
            ModuleStep = alarmList.ModuleStep;
            AlarmMsg = alarmList.AlarmMsg;
            AlarmType = alarmList.AlarmType;
            UpdateTime = DateTime.Now;
        }
    }

    public enum AlarmType
    {
        Error = 0,
        Warning = 1,
        DataError = 2
    }
}