/// <summary>
        /// Populate meta-data and perform pin operation for matter or document based upon the passed object.
        /// </summary>
        /// <param name="requestObject">Request object containing SharePoint App Token</param>
        /// <param name="client">Client object containing Client data</param>
        /// <param name="matterData">Matter object containing Matter data</param>
        /// <param name="documentData">Document object containing Document data</param>
        /// <returns>Status of update</returns>
        internal static string PopulateMetadeta(RequestObject requestObject, Client client, MatterData matterData, DocumentData documentData)
        {
            string status = string.Empty;
            bool isMatterCall = null != matterData ? true : false;

            try
            {
                using (ClientContext clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(client.Url), requestObject.RefreshToken))
                {
                    status = isMatterCall ? SearchHelperFunctions.PinThisRecord(clientContext, matterData, true) : SearchHelperFunctions.PinThisRecord(clientContext, documentData, false);
                }
            }
            catch (Exception exception)
            {
                status = Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
            }
            return status;
        }
 public string PinMatterForUser(RequestObject requestObject, Client client, MatterData matterData)
 {
     string status = string.Empty;
     if (null != requestObject && null != client && null != matterData && ValidationHelperFunctions.CheckRequestValidatorToken())
     {
         ////Create matter object and populate meta-data
         MatterData userPinnedMatterData = new MatterData()
         {
             MatterName = SearchHelperFunctions.EncodeValues(matterData.MatterName),
             MatterDescription = SearchHelperFunctions.EncodeValues(matterData.MatterDescription),
             MatterCreatedDate = SearchHelperFunctions.EncodeValues(matterData.MatterCreatedDate),
             MatterUrl = SearchHelperFunctions.EncodeValues(matterData.MatterUrl),
             MatterPracticeGroup = SearchHelperFunctions.EncodeValues(matterData.MatterPracticeGroup),
             MatterAreaOfLaw = SearchHelperFunctions.EncodeValues(matterData.MatterAreaOfLaw),
             MatterSubAreaOfLaw = SearchHelperFunctions.EncodeValues(matterData.MatterSubAreaOfLaw),
             MatterClientUrl = SearchHelperFunctions.EncodeValues(matterData.MatterClientUrl),
             MatterClient = SearchHelperFunctions.EncodeValues(matterData.MatterClient),
             MatterClientId = SearchHelperFunctions.EncodeValues(matterData.MatterClientId),
             HideUpload = SearchHelperFunctions.EncodeValues(matterData.HideUpload),
             MatterID = SearchHelperFunctions.EncodeValues(matterData.MatterID),
             MatterResponsibleAttorney = SearchHelperFunctions.EncodeValues(matterData.MatterResponsibleAttorney),
             MatterModifiedDate = SearchHelperFunctions.EncodeValues(matterData.MatterModifiedDate),
             MatterGuid = SearchHelperFunctions.EncodeValues(matterData.MatterGuid)
         };
         status = SearchHelperFunctions.PopulateMetadeta(requestObject, client, userPinnedMatterData, null);
     }
     else
     {
         status = TextConstants.MessageNoInputs;
     }
     return status;
 }
        public string RemovePinnedMatter(RequestObject requestObject, Client client, MatterData matterData)
        {

            string status = string.Empty;
            if (null != requestObject && null != client && null != matterData && ValidationHelperFunctions.CheckRequestValidatorToken())
            {
                status = SearchHelperFunctions.UnpinItem(requestObject, client, matterData, null);
            }
            else
            {
                status = TextConstants.MessageNoInputs;
            }
            return status;
        }
        public string GetFolderHierarchy(RequestObject requestObject, MatterData matterData)
        {
            string result = string.Empty;
            if (null != requestObject && null != matterData && ValidationHelperFunctions.CheckRequestValidatorToken())
            {
                try
                {
                    if (!string.IsNullOrWhiteSpace(matterData.MatterName) && !string.IsNullOrWhiteSpace(matterData.MatterUrl))
                    {
                        using (ClientContext clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(matterData.MatterUrl), requestObject.RefreshToken))
                        {
                            List list = clientContext.Web.Lists.GetByTitle(matterData.MatterName);
                            clientContext.Load(list.RootFolder);
                            ListItemCollection listItems = Lists.GetData(clientContext, matterData.MatterName, string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.AllFoldersQuery, matterData.MatterName));
                            List<FolderData> allFolders = new List<FolderData>();
                            allFolders = SearchHelperFunctions.GetFolderAssignment(list, listItems, allFolders);

                            result = JsonConvert.SerializeObject(allFolders);
                        }
                    }
                    else
                    {
                        result = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, 0, TextConstants.MessageNoInputs);
                    }
                }
                catch (Exception exception)
                {
                    result = Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
                }
            }
            else
            {
                result = TextConstants.MessageNoInputs;
            }
            return result;
        }