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

namespace ChamChat.Models
{
    public enum Parameter
    {
        // Programmables and implemented options
        T = 1,
        RH = 2,
        RampT = 3,
        RampRH = 4,
        PreTemp = 5,
        Tlimit = 6,

        // Client has option to proceed with next step
        ProceedWithNextStep = 7,
      
        
    }




    public enum ProfileOption
    {
        // In every group XX00 - XX99, the option with the lowest int value is auto selected as default.

        #region TSx : 1000-1999

        // 1000 - 1099 : Startup options
        TSx_StartSetupTest = 1000,
        TSx_StartNoSetup = 1001,

        // 1100 - 1199 : End mode options
        TSx_EndModeOff = 1101,
        TSx_EndModeHeatReturn = 1102,
        TSx_EndModeSetup = 1103,
        TSx_EndModeDefrost = 1104,
        TSx_EndModeDry = 1105,

        // 1200 - : others
        TSx_PreTempManual = 1200,
        TSx_PreTempAuto = 1201,

        #endregion TSx : 1000-1999


        #region PLxKPH : 2000-2999

        // 2100 - 2199 : End mode options
        PLxKPH_EndModeOff = 2100,
        PLxKPH_EndModeHold = 2101,

        #endregion PLxKPH : 2000-2999


        #region LHL113 : 3000-3999

        // 3100 - 3199 : End mode options
        LHL113_EndModeOff = 3100,
        LHL113_EndModeHold = 3101,

        #endregion LHL113 : 3000-3999


        #region HTS7057 : 4000-4999

        // 4100 - 4199 : End mode options
        HTS7057_EndModeOff = 4100,
        HTS7057_EndModeHold = 4101,
        
        #endregion HTS7057 : 4000-4999


        #region Watlow988U : 5000-5999

        // 5100 - 5199 : End mode options
        Watlow988U_EndModeOff = 5100,
        Watlow988U_EndModeHold = 5101,

        #endregion Watlow988U : 5000-5999






    }


    public static class ProfileOptionExtensions
    {
        public static string ToStr(this ProfileOption me)
        {
            switch (me)
            {
                // TSx
                case ProfileOption.TSx_StartNoSetup:
                    return "Start: no setup";
                case ProfileOption.TSx_StartSetupTest:
                    return "Start: setup before test";
                case ProfileOption.TSx_EndModeOff:
                    return "End: off";
                case ProfileOption.TSx_EndModeHeatReturn:
                    return "End: return to heat";
                case ProfileOption.TSx_EndModeSetup:
                    return "End: setup";
                case ProfileOption.TSx_EndModeDefrost:
                    return "End: defrost";
                case ProfileOption.TSx_EndModeDry:
                    return "End: dry";
                case ProfileOption.TSx_PreTempAuto:
                    return "Pre-temp: Automatic";
                case ProfileOption.TSx_PreTempManual:
                    return "Pre-temp: Manual";

                // LHL-113
                case ProfileOption.LHL113_EndModeOff:
                    return "End: off";
                case ProfileOption.LHL113_EndModeHold:
                    return "End: hold last step";



                // PLxKPH
                case ProfileOption.PLxKPH_EndModeOff:
                    return "End: off";
                case ProfileOption.PLxKPH_EndModeHold:
                    return "End: hold last step";


                // HTS7057
                case ProfileOption.HTS7057_EndModeOff:
                    return "End: off";
                case ProfileOption.HTS7057_EndModeHold:
                    return "End: hold last step";


                // Watlow988U
                case ProfileOption.Watlow988U_EndModeOff:
                    return "End: off";
                case ProfileOption.Watlow988U_EndModeHold:
                    return "End: hold last step";


                default:
                    return string.Format("{0} [{1:0}]", me.ToString(), (int)me);
            }
        }
    }
}




