using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace EgtBEAMWALL.DataLayer.DatabaseModels
{
    /// <summary>
    /// Tabella dei LOG Macchina
    /// </summary>
    [Table("LogMachine")]
    public class LogMachineModel
    {
        #region Public Properties

        /// <summary>
        /// Codice Allarme
        /// </summary>
        [Column("AlarmCode")]
        public string AlarmCode { get; set; } = "";

        /// <summary>
        /// Data Evento
        /// </summary>
        [Column("AlarmDtEvent")]
        public DateTime AlarmDatetime { get; set; } = DateTime.Now;

        /// <summary>
        /// Messaggio Allarme
        /// </summary>
        [Column("AlarmMessage")]
        public string AlarmMessage { get; set; } = "";

        /// <summary>
        /// Alarm Operation
        /// </summary>
        [Column("AlarmOperation")]
        public int AlarmOperation { get; set; } = 0;

        /// <summary>
        /// Alarm Type
        /// </summary>
        [Column("AlarmType")]
        public int AlarmType { get; set; } = 0;

        /// <summary>
        /// Esaecuzione comando corretta
        /// </summary>
        [Column("CommExecuted")]
        public bool CommandExecutedCorrectly { get; set; } = false;

        /// <summary>
        /// Stato da enum Core
        /// </summary>
        [Column("CommandState")]
        public Core.ConstMachComm.CommandStates CommandState { get; set; } = Core.ConstMachComm.CommandStates.NULL;

        /// <summary>
        /// Tipo Comando da enum Core
        /// </summary>
        [Column("CommandType")]
        public Core.ConstMachComm.LogCommandTypes CommandType { get; set; } = Core.ConstMachComm.LogCommandTypes.NULL;

        /// <summary>
        /// Descrizione
        /// </summary>
        [Column("Description")]
        public string Description { get; set; } = "";

        [Key, Column("DbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int LogDbId { get; set; }

        /// <summary>
        /// New OP State
        /// </summary>
        [Column("NewOpState")]
        public int NewOpState { get; set; } = 0;

        /// <summary>
        /// Stato da enum Core
        /// </summary>
        [Column("ResultType")]
        public Core.ConstMachComm.ResultTypes ResultType { get; set; } = Core.ConstMachComm.ResultTypes.NULL;

        /// <summary>
        /// Indirizzo VAR
        /// </summary>
        [Column("VarAddress")]
        public string VarAddress { get; set; } = "";

        /// <summary>
        /// Valore VAR
        /// </summary>
        [Column("VarValue")]
        public string VarValue { get; set; } = "";

        #endregion Public Properties

    }
}