//this gets all the options and adds them to the list
        /// <summary>
        /// Gets the DetailFieldOptionList
        /// </summary>
        public void Get()
        {
            try
            {

                //connect to DB, add item to self for every item in List
                AquariumDetailFieldManagement.DetailFieldManagementSoapClient detailfieldSDK = new DetailFieldManagementSoapClient();
                SessionDetails sd = SDKHelper.GetSessionDetails<AquariumDetailFieldManagement.SessionDetails>("User");
                LookupListItemsResult LookupListItemsResults = detailfieldSDK.GetLookupListItemsByLookupListID(sd, this.LookupListID);

                for (int i = 0; i < LookupListItemsResults.LookupListItems.Count(); i++)
                {
                    //create a new item and add it to self
                    DiaryDetailFieldOption anOption = new DiaryDetailFieldOption(LookupListItemsResults.LookupListItems.ElementAt(i).LookupListItemID
                        , LookupListItemsResults.LookupListItems.ElementAt(i).ItemValue);

                    this.DetailFieldOptions.Add(anOption);
                    //end
                }
            }
            catch (Exception ex) { throw ex; }
        }
        /// <summary>
        /// writes the value back to the system
        /// </summary>
        /// <param name="LeadID">LeadID</param>
        /// <param name="DetailFieldValue">DetailFieldValue</param>
        /// <returns>true/false</returns>
        public bool SetDetailFieldValue(int LeadID, string DetailFieldValue)
        {
            try{

                using (AquariumDetailFieldManagement.DetailFieldManagementSoapClient detailfieldSDK = new DetailFieldManagementSoapClient())
                {
                   int matterID = DiaryDetailField.GetMatterByLeadID(LeadID);

                     var sdDetailFields = SDKHelper.GetSessionDetails<AquariumDetailFieldManagement.SessionDetails>("User");

                     DetailFieldValue[] theDetailFieldValueToSet = new DetailFieldValue[1];
                     theDetailFieldValueToSet[0] = new AquariumDetailFieldManagement.DetailFieldValue();
                     //theDetailFieldValueToSet[0] = this.AquariumDetailField;
                     theDetailFieldValueToSet[0].DetailValue = DetailFieldValue;
                     theDetailFieldValueToSet[0].DetailFieldID = this.FieldDefinition.FieldID;

                     var result = detailfieldSDK.SaveMatterDetailValues(sdDetailFields, LeadID, matterID,  theDetailFieldValueToSet);

                     if (result.ResultInfo.ReturnCode == BasicCode.OK)
                     {
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                }

            }
            catch (Exception ex) {throw ex;}
        }
        //////////////////////////////
        //////////////instance methods
        //////////////////////////////
        //the value - pass in a LeadID and it will pull it
        /// <summary>
        /// //the value - pass in a LeadID and it will pull the value using internal data
        /// </summary>
        /// <param name="LeadID">LeadID</param>
        /// <returns>DetailFieldValue</returns>
        public string GetDetailFieldValue(int LeadID)
        {
            try
            {

                var theValue = "";

                using (AquariumDetailFieldManagement.DetailFieldManagementSoapClient detailfieldSDK = new DetailFieldManagementSoapClient())
                {
                    using (AquariumCaseManagement.CaseManagementSoapClient caseManSDK = new AquariumCaseManagement.CaseManagementSoapClient())
                    {
                        //need to get the matterID
                        int matterID = DiaryDetailField.GetMatterByLeadID(LeadID);

                        var sd = SDKHelper.GetSessionDetails<AquariumCaseManagement.SessionDetails>("User");
                        var sdDetailFields = SDKHelper.GetSessionDetails<AquariumDetailFieldManagement.SessionDetails>("User"); //yes it's lazy not to convert the above - f**k off

                        int[] theDetailFieldIDWeWant = new int[1];

                        theDetailFieldIDWeWant[0] = this.FieldDefinition.FieldID;

                        var theResultSet = detailfieldSDK.GetMatterDetailValuesByFieldIDs(sdDetailFields, LeadID, matterID, theDetailFieldIDWeWant);

                        //////////////////////////////
                        ////// NB REMOVE WHEN IMPLEMENT RESOURCE LISTS OR TABLE
                        /////////////////////////////
                        if (theResultSet.DetailFieldValues.Count() > 0)
                        {
                            theValue = theResultSet.DetailFieldValues.ElementAt(0).DetailValue;
                        }

                        else
                        {
                            theValue = "";

                        }

                        if (theResultSet.DetailFieldValues.Count() > 0)
                        {
                            if (theResultSet.DetailFieldValues.ElementAt(0).QuestionTypeID == 14 || theResultSet.DetailFieldValues.ElementAt(0).QuestionTypeID == 19)
                            {
                                theValue = "";
                            }
                        }

                    }
                }

                return theValue;
            }
            catch (Exception ex) { throw ex; }
        }