Provides the structure required for searching matters/documents. It includes page number, search keyword, filter conditions, sort conditions, and numbers of items to be shown on page.
Пример #1
0
 /// <summary>
 /// Defines the sorting property and direction for querying SharePoint Search.
 /// </summary>
 /// <param name="keywordQuery">Keyword object</param>
 /// <param name="searchObject">Search object</param>
 /// <param name="isMatterSearch">Boolean flag which determines current search is for matters or documents</param>
 /// <returns></returns>
 private KeywordQuery GetSortByProperty(KeywordQuery keywordQuery, SearchObject searchObject, Boolean isMatterSearch)
 {
     string matterIDRefiner = string.Empty;
     try
     {
         ////Sorting by specified property  0 --> Ascending order and 1 --> Descending order
         if (!string.IsNullOrWhiteSpace(searchObject.Sort.ByProperty))
         {
             keywordQuery = AddSortingRefiner(keywordQuery, searchObject.Sort.ByProperty, searchObject.Sort.Direction);
             //// Add Matter ID property as second level sort for Client.MatterID column based on Search Matter or Search Document
             if (searchSettings.ManagedPropertyClientID == searchObject.Sort.ByProperty ||
                 searchSettings.ManagedPropertyDocumentClientId == searchObject.Sort.ByProperty)
             {
                 if (isMatterSearch)
                 {
                     matterIDRefiner = searchSettings.ManagedPropertyMatterId;
                 }
                 else
                 {
                     matterIDRefiner = searchSettings.ManagedPropertyDocumentMatterId;
                 }
                 keywordQuery = AddSortingRefiner(keywordQuery, matterIDRefiner, searchObject.Sort.Direction);
             }
         }
     }
     catch (Exception exception)
     {
         customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
         throw;
     }
     return keywordQuery;
 }
Пример #2
0
        /// <summary>
        /// Prepares and returns the keyword query to get data from SharePoint Search based on filtering condition.
        /// </summary>
        /// <param name="client">The client object</param>
        /// <param name="searchObject">The search object.</param>
        /// <param name="keywordQuery">The keyword query.</param>
        /// <param name="filterCondition">The filter condition.</param>
        /// <param name="managedProperty">The managed property.</param>
        /// <param name="isMatterView">If the user is pinning a matter, this will be true, else will be false.</param>
        /// <returns>It returns a Keyword Query object.</returns>
        private KeywordQuery KeywordQueryMetrics(Client client, SearchObject searchObject, KeywordQuery keywordQuery,
            string filterCondition, string managedProperty, bool isMatterView)
        {
            KeywordQuery result = null;
            try
            {
                if (generalSettings.IsTenantDeployment)
                {
                    keywordQuery.QueryText = searchObject.SearchTerm;
                }
                else
                {
                    keywordQuery.QueryText = "(" + searchObject.SearchTerm + " AND site:" + client.Url + ")";
                }

                keywordQuery.RefinementFilters.Add(filterCondition);
                if (isMatterView)
                {
                    keywordQuery.RefinementFilters.Add(string.Concat(managedProperty, ServiceConstants.COLON,
                        ServiceConstants.DOUBLE_QUOTE, true, ServiceConstants.DOUBLE_QUOTE));
                }
                else
                {

                    string[] invalidExtensions = searchSettings.FindDocumentInvalidExtensions.Split(',');
                    string chunk = string.Empty;

                    foreach (string extension in invalidExtensions)
                    {
                        chunk = chunk + "equals" + ServiceConstants.OPENING_BRACKET + ServiceConstants.DOUBLE_QUOTE + extension +
                            ServiceConstants.DOUBLE_QUOTE + ServiceConstants.CLOSING_BRACKET + ServiceConstants.COMMA;
                    }
                    chunk = chunk.Remove(chunk.Length - 1);

                    keywordQuery.RefinementFilters.Add(string.Concat("not" + ServiceConstants.OPENING_BRACKET + "FileType", ServiceConstants.COLON, ServiceConstants.OPERATOR_OR + ServiceConstants.OPENING_BRACKET +
                                                                                                            chunk + ServiceConstants.CLOSING_BRACKET + ServiceConstants.CLOSING_BRACKET
                                                                                                            ));
                    keywordQuery.RefinementFilters.Add(string.Concat(managedProperty, ServiceConstants.COLON, "equals", ServiceConstants.OPENING_BRACKET + ServiceConstants.DOUBLE_QUOTE +
                                                                                                            "1" + ServiceConstants.DOUBLE_QUOTE + ServiceConstants.CLOSING_BRACKET
                                                                                                            ));
                }

                keywordQuery.TrimDuplicates = false;
                if (0 < searchObject.PageNumber && 0 < searchObject.ItemsPerPage)
                {
                    keywordQuery.StartRow = (searchObject.PageNumber - 1) * searchObject.ItemsPerPage;
                    keywordQuery.RowLimit = searchObject.ItemsPerPage;
                }

                result = keywordQuery;
            }
            catch (Exception exception)
            {
                customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
            return result;
        }
Пример #3
0
        /// <summary>
        /// Returns the query to filter the matters/ documents for common filters.
        /// </summary>
        /// <param name="searchObject">The search object.</param>
        /// <param name="keywordQuery">The keyword query.</param>
        /// <param name="isMatterView">Flag to identify matters/documents view.</param>
        /// <returns>It returns a keyword query object.</returns>
        private KeywordQuery FilterCommonDetails(SearchObject searchObject, KeywordQuery keywordQuery, bool isMatterView)
        {
            try
            {
                if (null != searchObject && null != keywordQuery)
                {

                    if (null != searchObject.Filters.DateFilters)
                    {
                        string lastModifiedTime = searchSettings.ManagedPropertyLastModifiedTime;
                        //// Add refiner for Modified date value
                        if (!isMatterView)
                        {
                            lastModifiedTime = searchSettings.ManagedPropertyDocumentLastModifiedTime;
                        }
                        keywordQuery = AddDateRefinementFilter(keywordQuery, searchObject.Filters.DateFilters.ModifiedFromDate,
                            searchObject.Filters.DateFilters.ModifiedToDate, lastModifiedTime);

                        ////// Add refiner for Created date value
                        keywordQuery = AddDateRefinementFilter(keywordQuery, searchObject.Filters.DateFilters.CreatedFromDate,
                            searchObject.Filters.DateFilters.CreatedToDate, searchSettings.ManagedPropertyCreated);
                    }
                }
            }
            catch (Exception exception)
            {
                customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
            return keywordQuery;
        }
Пример #4
0
        /// <summary>
        /// Returns the query to filter the matters.
        /// </summary>
        /// <param name="searchObject">The search object.</param>
        /// <param name="keywordQuery">The keyword query.</param>
        /// <returns>It returns a keyword query object.</returns>
        private KeywordQuery FilterMattersUtility(SearchObject searchObject, KeywordQuery keywordQuery)
        {
            try
            {
                if (null != searchObject && null != keywordQuery && null != searchObject.Filters)
                {
                    /* New refinement filters for list view control */
                    if (!string.IsNullOrWhiteSpace(searchObject.Filters.Name))
                    {
                        keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyMatterName, ServiceConstants.COLON,
                            ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.Name, ServiceConstants.DOUBLE_QUOTE));
                    }

                    if (!string.IsNullOrWhiteSpace(searchObject.Filters.ClientName))
                    {
                        keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyClientName, ServiceConstants.COLON,
                            ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.ClientName, ServiceConstants.DOUBLE_QUOTE));
                    }

                    if (null != searchObject.Filters.ResponsibleAttorneys && !string.IsNullOrWhiteSpace(searchObject.Filters.ResponsibleAttorneys))
                    {
                        keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyResponsibleAttorney, ServiceConstants.COLON,
                            ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.ResponsibleAttorneys, ServiceConstants.DOUBLE_QUOTE));
                    }
                    if (null != searchObject.Filters.PracticeGroup && !string.IsNullOrWhiteSpace(searchObject.Filters.PracticeGroup))
                    {
                        var pgList = searchObject.Filters.PracticeGroup.Split(',').ToList();
                        var filterValues = FormFilterQuery(searchSettings.ManagedPropertyPracticeGroup, pgList);
                        keywordQuery.RefinementFilters.Add(filterValues);

                        //keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyPracticeGroup, ServiceConstants.COLON, ServiceConstants.DOUBLE_INVERTED_COMMA, searchObject.Filters.PracticeGroup, ServiceConstants.DOUBLE_INVERTED_COMMA));
                    }
                    if (!string.IsNullOrWhiteSpace(searchObject.Filters.AreaOfLaw))
                    {
                        //keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyAreaOfLaw, ServiceConstants.COLON, ServiceConstants.DOUBLE_INVERTED_COMMA, searchObject.Filters.AreaOfLaw, ServiceConstants.DOUBLE_INVERTED_COMMA));
                        var areaList = searchObject.Filters.AreaOfLaw.Split(',').ToList();
                        var filterValues = FormFilterQuery(searchSettings.ManagedPropertyAreaOfLaw, areaList);
                        keywordQuery.RefinementFilters.Add(filterValues);
                    }

                    if (null != searchObject.Filters.SubareaOfLaw && !string.IsNullOrWhiteSpace(searchObject.Filters.SubareaOfLaw))
                    {
                        var subAreaList = searchObject.Filters.SubareaOfLaw.Split(',').ToList();
                        var filterValues = FormFilterQuery(searchSettings.ManagedPropertySubAreaOfLaw, subAreaList);
                        keywordQuery.RefinementFilters.Add(filterValues);
                        //keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertySubAreaOfLaw, ServiceConstants.COLON, ServiceConstants.DOUBLE_INVERTED_COMMA, searchObject.Filters.SubareaOfLaw, ServiceConstants.DOUBLE_INVERTED_COMMA));
                    }
                    if (null != searchObject.Filters.ProjectID && !string.IsNullOrWhiteSpace(searchObject.Filters.ProjectID))
                    {
                        keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyMatterId, ServiceConstants.COLON, ServiceConstants.DOUBLE_INVERTED_COMMA, searchObject.Filters.ProjectID, ServiceConstants.DOUBLE_INVERTED_COMMA));
                    }

                    if (null != searchObject.Filters.DateFilters)
                    {
                        ////// Add refiner for Open date value
                        keywordQuery = AddDateRefinementFilter(keywordQuery, searchObject.Filters.DateFilters.OpenDateFrom,
                            searchObject.Filters.DateFilters.OpenDateTo, searchSettings.ManagedPropertyOpenDate);
                    }

                }
            }
            catch (Exception exception)
            {
                customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }

            return keywordQuery;
        }
Пример #5
0
        /// <summary>
        /// Prepares and returns the query to filter the documents.
        /// </summary>
        /// <param name="searchObject">The search object.</param>
        /// <param name="keywordQuery">The keyword query.</param>
        /// <returns>It returns a Keyword Query object.</returns>
        internal KeywordQuery FilterDocuments(SearchObject searchObject, KeywordQuery keywordQuery)
        {
            string filterValues = string.Empty;
            try
            {
                if (null != searchObject && null != keywordQuery)
                {
                    if (null != searchObject.Filters)
                    {
                        keywordQuery = AddDateRefinementFilter(keywordQuery, searchObject.Filters.FromDate, searchObject.Filters.ToDate, searchSettings.ManagedPropertyCreated);
                        if (null != searchObject.Filters.DocumentAuthor && !string.IsNullOrWhiteSpace(searchObject.Filters.DocumentAuthor))
                        {
                            keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyAuthor, ServiceConstants.COLON,
                                ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.DocumentAuthor, ServiceConstants.DOUBLE_QUOTE));
                        }

                        if (0 < searchObject.Filters.ClientsList.Count && !string.IsNullOrWhiteSpace(searchObject.Filters.ClientsList[0]))
                        {
                            filterValues = FormFilterQuery(searchSettings.ManagedPropertyDocumentClientName, searchObject.Filters.ClientsList);
                            keywordQuery.RefinementFilters.Add(filterValues);
                        }

                        /* New refinement filters for list view control */

                        if (!string.IsNullOrWhiteSpace(searchObject.Filters.Name))
                        {
                            if (searchObject.Filters.Name.Length > 70)
                            {
                                searchObject.Filters.Name = searchObject.Filters.Name.Replace(searchObject.Filters.Name.Substring(70, searchObject.Filters.Name.Length - 70), "*");
                            }

                            keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyFileName, ServiceConstants.COLON,
                                ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.Name, ServiceConstants.DOUBLE_QUOTE));
                        }
                        if (!string.IsNullOrWhiteSpace(searchObject.Filters.ProjectName))
                        {
                            keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyMatterName, ServiceConstants.COLON,
                                ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.ProjectName, ServiceConstants.DOUBLE_QUOTE));
                        }

                        if (!string.IsNullOrWhiteSpace(searchObject.Filters.ClientName))
                        {
                            keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyDocumentClientName, ServiceConstants.COLON,
                                ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.ClientName, ServiceConstants.DOUBLE_QUOTE));
                        }

                        if (null != searchObject.Filters.DocumentCheckoutUsers && !string.IsNullOrWhiteSpace(searchObject.Filters.DocumentCheckoutUsers))
                        {
                            keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyDocumentCheckOutUser, ServiceConstants.COLON,
                                ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.DocumentCheckoutUsers, ServiceConstants.DOUBLE_QUOTE));
                        }
                        if (!string.IsNullOrWhiteSpace(searchObject.Filters.PracticeGroup))
                        {
                            keywordQuery.RefinementFilters.Add(string.Concat(searchSettings.ManagedPropertyPracticeGroup, ServiceConstants.COLON,
                                ServiceConstants.DOUBLE_QUOTE, searchObject.Filters.PracticeGroup, ServiceConstants.DOUBLE_QUOTE));
                        }
                    }
                    keywordQuery = FilterCommonDetails(searchObject, keywordQuery, false);
                }
            }
            catch (Exception ex)
            {
                customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
            return keywordQuery;
        }
Пример #6
0
        /// <summary>
        /// Returns the query to filter the matters.
        /// </summary>
        /// <param name="searchObject">The search object.</param>
        /// <param name="keywordQuery">The keyword query.</param>
        /// <returns>It returns a keyword query object.</returns>
        private KeywordQuery FilterMatters(SearchObject searchObject, KeywordQuery keywordQuery)
        {
            string filterValues = string.Empty;
            try
            {
                if (null != searchObject && null != keywordQuery)
                {
                    if (null != searchObject.Filters)
                    {
                        if (null != searchObject.Filters.AOLList && 0 < searchObject.Filters.AOLList.Count && !string.IsNullOrWhiteSpace(searchObject.Filters.AOLList[0]))
                        {
                            filterValues = FormFilterQuery(searchSettings.ManagedPropertyAreaOfLaw, searchObject.Filters.AOLList);
                            keywordQuery.RefinementFilters.Add(filterValues);
                        }

                        if (null != searchObject.Filters.PGList && 0 < searchObject.Filters.PGList.Count && !string.IsNullOrWhiteSpace(searchObject.Filters.PGList[0]))
                        {
                            filterValues = FormFilterQuery(searchSettings.ManagedPropertyPracticeGroup, searchObject.Filters.PGList);
                            keywordQuery.RefinementFilters.Add(filterValues);
                        }
                        keywordQuery = AddDateRefinementFilter(keywordQuery, searchObject.Filters.FromDate, searchObject.Filters.ToDate, searchSettings.ManagedPropertyOpenDate);
                        if (null != searchObject.Filters.ClientsList && 0 < searchObject.Filters.ClientsList.Count && !string.IsNullOrWhiteSpace(searchObject.Filters.ClientsList[0]))
                        {
                            filterValues = FormFilterQuery(searchSettings.ManagedPropertyClientName, searchObject.Filters.ClientsList);
                            keywordQuery.RefinementFilters.Add(filterValues);
                        }
                    }

                    keywordQuery = FilterMattersUtility(searchObject, keywordQuery);

                    keywordQuery = FilterCommonDetails(searchObject, keywordQuery, true);
                }
            }
            catch (Exception ex)
            {
                customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
            return keywordQuery;
        }