//public class Print
        //{
        //    protected static char[] lineChars = new char[]{'─','│', '┌', '┐', '└', '┘', '├', '┤', '┬', '┴', '┼' };
        //    /// <summary>
        //    /// Horizontal Line
        //    /// </summary>
        //    public char HZ { get { return lineChars[0]; } }
        //    /// <summary>
        //    /// Vertical Line
        //    /// </summary>
        //    public char VR { get { return lineChars[1]; } }
        //    /// <summary>
        //    /// Corner Upper Right
        //    /// </summary>
        //    public char UR { get { return lineChars[2]; } }
        //    /// <summary>
        //    /// Corner Upper Left
        //    /// </summary>
        //    public char UL { get { return lineChars[3]; } }
        //    /// <summary>
        //    /// Corner Lower Right
        //    /// </summary>
        //    public char LR { get { return lineChars[4]; } }
        //    /// <summary>
        //    /// Corner Lower Left
        //    /// </summary>
        //    public char LL { get { return lineChars[5]; } }
        //    /// <summary>
        //    /// Cross Right
        //    /// </summary>
        //    public char CR { get { return lineChars[6]; } }
        //    /// <summary>
        //    /// Cross Left
        //    /// </summary>
        //    public char CL { get { return lineChars[7]; } }
        //    /// <summary>
        //    /// Cross Down
        //    /// </summary>
        //    public char CD { get { return lineChars[8]; } }
        //    /// <summary>
        //    /// Cross Up
        //    /// </summary>
        //    public char CU { get { return lineChars[9]; } }
        //    /// <summary>
        //    /// Start
        //    /// </summary>
        //    public char SR { get { return lineChars[10]; } }
        //}

        public SlotAllocation()
        {
            season = Init();
            PrintSeason();
        }
        protected Models.Season Init()
        {
            Models.Season season = new Models.Season("Winter A");

            #region Slots
            #region Slots-5
            //DAYS 5
            //JAN
            season.AddSlot(name: "JAN2A", start: new DateTime(2019, 1, 11), isFiveDays: true, available: 1);
            season.AddSlot(name: "JAN2B", start: new DateTime(2019, 1, 16), isFiveDays: true, available: 2);
            season.AddSlot(name: "JAN3A", start: new DateTime(2019, 1, 21), isFiveDays: true, available: 1);
            season.AddSlot(name: "JAN3B", start: new DateTime(2019, 1, 26), isFiveDays: true, available: 3);
            //FEB
            season.AddSlot(name: "FEB1A", start: new DateTime(2019, 2, 1), isFiveDays: true, available: 1);
            season.AddSlot(name: "FEB1B", start: new DateTime(2019, 2, 6), isFiveDays: true, available: 1);
            season.AddSlot(name: "FEB2A", start: new DateTime(2019, 2, 11), isFiveDays: true, available: 2);
            season.AddSlot(name: "FEB2B", start: new DateTime(2019, 2, 16), isFiveDays: true, available: 3);
            season.AddSlot(name: "FEB3A", start: new DateTime(2019, 2, 21), isFiveDays: true, available: 2);
            //MAR
            season.AddSlot(name: "MAR1A", start: new DateTime(2019, 3, 1), isFiveDays: true, available: 1);
            season.AddSlot(name: "MAR1B", start: new DateTime(2019, 3, 6), isFiveDays: true, available: 1);
            season.AddSlot(name: "MAR2A", start: new DateTime(2019, 3, 11), isFiveDays: true, available: 2);
            season.AddSlot(name: "MAR2B", start: new DateTime(2019, 3, 16), isFiveDays: true, available: 2);
            season.AddSlot(name: "MAR3A", start: new DateTime(2019, 3, 21), isFiveDays: true, available: 2);
            season.AddSlot(name: "MAR3B", start: new DateTime(2019, 3, 26), isFiveDays: true, available: 1);
            //APR
            season.AddSlot(name: "APR1A", start: new DateTime(2019, 4, 1), isFiveDays: true, available: 3);
            season.AddSlot(name: "APR1B", start: new DateTime(2019, 4, 6), isFiveDays: true, available: 2);
            season.AddSlot(name: "APR2A", start: new DateTime(2019, 4, 11), isFiveDays: true, available: 3);
            season.AddSlot(name: "APR2B", start: new DateTime(2019, 4, 16), isFiveDays: true, available: 2);
            season.AddSlot(name: "APR3A", start: new DateTime(2019, 4, 21), isFiveDays: true, available: 1);
            season.AddSlot(name: "APR3B", start: new DateTime(2019, 4, 26), isFiveDays: true, available: 2);
            //MAY
            season.AddSlot(name: "MAY1A", start: new DateTime(2019, 5, 1), isFiveDays: true, available: 1);
            season.AddSlot(name: "MAY1B", start: new DateTime(2019, 5, 6), isFiveDays: true, available: 2);
            season.AddSlot(name: "MAY2A", start: new DateTime(2019, 5, 11), isFiveDays: true, available: 2);
            season.AddSlot(name: "MAY2B", start: new DateTime(2019, 5, 16), isFiveDays: true, available: 1);
            season.AddSlot(name: "MAY3A", start: new DateTime(2019, 5, 21), isFiveDays: true, available: 3);
            season.AddSlot(name: "MAY3B", start: new DateTime(2019, 5, 26), isFiveDays: true, available: 2);
            #endregion Slots-5

            #region Slots-10
            //DAYS 10
            //JAN
            season.AddSlot(name: "JAN2", start: new DateTime(2019, 1, 11), isFiveDays: false, available: 1);
            season.AddSlot(name: "JAN3", start: new DateTime(2019, 1, 21), isFiveDays: false, available: 1);
            //FEB
            season.AddSlot(name: "FEB1", start: new DateTime(2019, 2, 1), isFiveDays: false, available: 1);
            season.AddSlot(name: "FEB2", start: new DateTime(2019, 2, 11), isFiveDays: false, available: 1);
            //MAR
            season.AddSlot(name: "MAR1", start: new DateTime(2019, 3, 1), isFiveDays: false, available: 1);
            season.AddSlot(name: "MAR2", start: new DateTime(2019, 3, 11), isFiveDays: false, available: 1);
            season.AddSlot(name: "MAR3", start: new DateTime(2019, 3, 21), isFiveDays: false, available: 1);
            //APR
            season.AddSlot(name: "APR1", start: new DateTime(2019, 4, 1), isFiveDays: false, available: 1);
            season.AddSlot(name: "APR2", start: new DateTime(2019, 4, 11), isFiveDays: false, available: 1);
            season.AddSlot(name: "APR3", start: new DateTime(2019, 4, 21), isFiveDays: false, available: 1);
            //MAY
            season.AddSlot(name: "MAY1", start: new DateTime(2019, 5, 1), isFiveDays: false, available: 1);
            season.AddSlot(name: "MAY2", start: new DateTime(2019, 5, 11), isFiveDays: false, available: 1);
            season.AddSlot(name: "MAY3", start: new DateTime(2019, 5, 21), isFiveDays: false, available: 1);
            #endregion Slots-10
            #endregion Slots

            var slots5 = season.FiveDaysSlots;
            var slots10 = season.TenDaysSlots;

            #region People
            int cnt5 = slots5.Count;

            for (var i=1;i<= cnt5; i++)
                season.AddPerson(id: i, name: "Person " + i.ToString(), leaveMode: Models.Person.LeaveModes.Days5_5);

            var p10 = season.AddPerson(id: cnt5 + 1, name: "Person " + (cnt5 + 1).ToString(), leaveMode: Models.Person.LeaveModes.Days10);
            var p10_5 = season.AddPerson(id: cnt5 + 2, name: "Person " + (cnt5 + 2).ToString(), leaveMode: Models.Person.LeaveModes.Days10_5);
            var p5_5_5 = season.AddPerson(id: cnt5 + 3, name: "Person " + (cnt5 + 3).ToString(), leaveMode: Models.Person.LeaveModes.Days5_5_5);
            var p5 = season.AddPerson(id: cnt5 + 4, name: "Person " + (cnt5 + 4).ToString(), leaveMode: Models.Person.LeaveModes.Days5);
            var p10_5_2 = season.AddPerson(id: cnt5 + 5, name: "Person " + (cnt5 + 5).ToString(), leaveMode: Models.Person.LeaveModes.Days10_5);

            p10.AddSlot(season.GetSlotByName("APR2"), true);
            p10_5.AddSlot(season.GetSlotByName("APR1"), true);
            p5_5_5.AddSlot(season.GetSlotByName("MAR2A"), true);
            p10_5_2.AddSlot(season.GetSlotByName("MAR2B"), true);
            #endregion People

            return season;
        }