public List<DiaryEvent> GetNextEventsForAllowedEventsThreads(DiaryEvent aDiaryEvent)
        {
            List<DiaryEvent> theNextEvents = new List<DiaryEvent>();

            //get all threads for this event
            AquariumEventManagement.EventManagementSoapClient theEventSDKClient = new AquariumEventManagement.EventManagementSoapClient();
            AquariumEventManagement.SessionDetails sd = SDKHelper.GetSessionDetails<AquariumEventManagement.SessionDetails>("User");

            AquariumEventManagement.EventResult nextEventResults = theEventSDKClient.GetNextEvents(sd, aDiaryEvent.LeadEventID, aDiaryEvent.EventThread);

            //convert to Diary Event method

            return theNextEvents;
        }
        /*
        //to create an OOP
        public DiaryEvent()
        {

        }

        //to Create an 'EventType'
        public DiaryEvent()
        {

        }
         * */
        public static List<DiaryEvent> EventsToDisplayToTheUser(int CustomerID)
        {
            //list to return
            List<DiaryEvent> EventToReturnToTheUser = new List<DiaryEvent>();

            AquariumEventManagement.EventManagementSoapClient theEventSDKClient = new AquariumEventManagement.EventManagementSoapClient();
            AquariumEventManagement.SessionDetails sd = SDKHelper.GetSessionDetails<AquariumEventManagement.SessionDetails>("User");

            Case testCase = new Case();
            int TestCaseID = testCase.GetCaseID(CustomerID);
            DiaryEvent theTopLevelEvent_AvailableThreadsContainer = new DiaryEvent();
            theTopLevelEvent_AvailableThreadsContainer.theAvailableEventsAndTheirThreads = new List<DiaryEvent>();

            AquariumEventManagement.EventResult AllowedCaseThreads = theEventSDKClient.GetAllowedCaseEventThreads(sd, TestCaseID);
            //get all the in process

            if (AllowedCaseThreads.AllowedCaseEventThreads.Count() >= 1)
            {

                string[] EventAndThread;

                for (int i = 0; i < AllowedCaseThreads.AllowedCaseEventThreads.Count(); i++)
                {

                    //split the array
                    EventAndThread = AllowedCaseThreads.AllowedCaseEventThreads[i].Value.Split('|');
                    //get erm....the LeadEventID
                    //AquariumEventManagement.EventResult theLeadEvent = theEventSDKClient.GetLeadEvent(sd, Convert.ToInt32(EventAndThread[0]));
                    AquariumEventManagement.EventResult theLeadEvent = theEventSDKClient.GetNextEvents(sd, Convert.ToInt32(EventAndThread[0]), Convert.ToInt32(EventAndThread[1]));

                    theTopLevelEvent_AvailableThreadsContainer.theAvailableEventsAndTheirThreads.Add(new DiaryEvent
                    {
                        EventName = AllowedCaseThreads.AllowedCaseEventThreads[i].Text,
                        LeadEventID = Convert.ToInt32(EventAndThread[0]),
                        EventThread = Convert.ToInt32(EventAndThread[1]),
                        LeadEventIDThreadComposite = AllowedCaseThreads.AllowedCaseEventThreads[i].Value,
                        ParentSDKResult = AllowedCaseThreads,
                        EventTypeID = Convert.ToInt32(theLeadEvent.NextEvents[0].NextEventTypeID)
                    });

                }

                // return these to the user a list of Diary events

                }

            EventToReturnToTheUser.Add(new DiaryEvent
            {

                EventTypeID = 10000,
                EventName = "Please select an Event"
                          });

            for (var i = 0; i < theTopLevelEvent_AvailableThreadsContainer.theAvailableEventsAndTheirThreads.Count(); i++)
               {

                    EventToReturnToTheUser.Add(theTopLevelEvent_AvailableThreadsContainer.theAvailableEventsAndTheirThreads.ElementAt(i));

              }

                return EventToReturnToTheUser;
        }