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

namespace Maser.Feanor.Model
{

    public enum SensorType
    {
        NONE = 0,
        Pt100 = 1,
        ThermocoupleK = 2,
        Voltage = 3,
        PsychrometerRH = 4,
        PressurecookerRH = 5,
        Current = 6
    }



    public class Sensor
    {
        public Sensor() { }


        public Sensor(int PK, int ID, int ChamberPK, string Description, SensorType Type, Boolean Active, Boolean ApplyCalibration)
        {
            _PK = PK;
            _ID = ID;
            _chamberPK = ChamberPK;
            _Description = Description;
            _Type = Type;
            _Enabled = Active;
            _ApplyCalibration = ApplyCalibration;
        }



        public Int32 PK { set { _PK = value; } get { return _PK; } }
        private Int32 _PK = -1;



        public Int32 ID { set { _ID = value; } get { return _ID; } }
        private Int32 _ID = 0;



        public Boolean ApplyCalibration { get { return _ApplyCalibration; } set { _ApplyCalibration = value; } }
        private bool _ApplyCalibration = true;


        public Int32 ChamberPK { set { _chamberPK = value; } get { return _chamberPK; } }
        private Int32 _chamberPK = 0;


        public String Description { set { _Description = value; } get { return _Description; } }
        private String _Description = "";


        public SensorType Type { set { _Type = value; } get { return _Type; } }
        private SensorType _Type = SensorType.NONE;

        public Boolean Enabled { set { _Enabled = value; } get { return _Enabled; } }
        private Boolean _Enabled = false;


        public String Units
        {
            get
            {
                switch (this.Type)
                {
                    case SensorType.Pt100:
                        return "°C";
                    case SensorType.ThermocoupleK:
                        return "°C";
                    case SensorType.Voltage:
                        return "V";
                    case SensorType.PsychrometerRH:
                        return "%rh";
                    case SensorType.PressurecookerRH:
                        return "%rh";
                    case SensorType.Current:
                        return "A";
                    default:
                        return "";
                }
            }
        }


        public String ListDescription = "";



        public override string ToString()
        {
            return string.Format("{0:00} {1}", _ID, _Description);
        }

        public string TypeToString()
        {
            switch (_Type)
            {
                case SensorType.Pt100:
                    return "Pt100";
                case SensorType.ThermocoupleK:
                    return "Thermoucouple K";
                case SensorType.PsychrometerRH:
                    return "RH with psychrometer";
                case SensorType.PressurecookerRH:
                    return "RH in pressurecooker";
                case SensorType.Voltage:
                    return "Voltage";
                case SensorType.Current:
                    return "Current";
                default:
                    return _Type.ToString();
            }
        }


    }
}
