コード例 #1
0
 public async void Get_Users()
 {
     SearchRequestVM searchRequestVM = new SearchRequestVM()
     {
         Client = new Client()
         {
             Url = "https://msmatter.sharepoint.com/sites/catalog"
         },
         SearchObject = new SearchObject()
         {
             SearchTerm = "Matter"
         }
     };
     using (var client = testServer.CreateClient().AcceptJson())
     {
         var response = await client.PostAsJsonAsync("http://localhost:44323/api/v1/user/getusers", searchRequestVM);
         var result = response.Content.ReadAsJsonAsync<IList<Users>>().Result;
         Assert.NotNull(result);
     }
 }
コード例 #2
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="searchRequestVM"></param>
 /// <returns></returns>
 public async Task<IList<Users>> GetUsersAsync(SearchRequestVM searchRequestVM)
 {
     IList<PeoplePickerUser> foundUsers = await Task.FromResult(search.SearchUsers(searchRequestVM));
     IList<Users> users = new List<Users>();
     if (foundUsers != null && foundUsers.Count != 0)
     {
         foreach (PeoplePickerUser item in foundUsers)
         {
             Users tempUser = new Users();
             tempUser.Name = Convert.ToString(item.DisplayText, CultureInfo.InvariantCulture);
             tempUser.LogOnName = Convert.ToString(item.Key, CultureInfo.InvariantCulture);
             tempUser.Email = string.Equals(item.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) ?
                 Convert.ToString(item.Description, CultureInfo.InvariantCulture) : Convert.ToString(item.EntityData.Email, CultureInfo.InvariantCulture);
             tempUser.EntityType = Convert.ToString(item.EntityType, CultureInfo.InvariantCulture);
             tempUser.EntityDataTitle = string.IsNullOrWhiteSpace(item.EntityData.Title) ? "" : "(" + item.EntityData.Title.Trim() + ")";
             users.Add(tempUser);
         }
         return users;
     }
     return users;
 }
コード例 #3
0
        public async Task<int> GetMyCounts(SearchRequestVM searchRequestVM)
        {
            try
            {
                searchRequestVM.SearchObject.Filters.FilterByMe = 1;
                var searchObject = searchRequestVM.SearchObject;
                // Encode all fields which are coming from js
                SearchUtility.EncodeSearchDetails(searchObject.Filters, false);
                // Encode Search Term
                searchObject.SearchTerm = (searchObject.SearchTerm != null) ?
                    WebUtility.HtmlEncode(searchObject.SearchTerm).Replace(ServiceConstants.ENCODED_DOUBLE_QUOTES,
                    ServiceConstants.DOUBLE_QUOTE) : string.Empty;

                var searchResultsVM = await docRepository.GetDocumentsAsync(searchRequestVM);
                return searchResultsVM.TotalRows;
            }
            catch (Exception ex)
            {
                customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
        }
コード例 #4
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        /// <summary>
        /// Gets the matters based on search criteria.
        /// </summary>
        /// <param name="searchRequestVM"></param>
        /// <returns></returns>
        public SearchResponseVM GetMatters(SearchRequestVM searchRequestVM)
        {
            SearchResponseVM searchResponseVM = null;
            var client = searchRequestVM.Client;
            var searchObject = searchRequestVM.SearchObject;
            try
            {
                clientContext = null;
                clientContext = spoAuthorization.GetClientContext(client.Url);
                KeywordQuery keywordQuery = new KeywordQuery(clientContext);
                if (string.IsNullOrWhiteSpace(searchObject.SearchTerm))
                {
                    searchObject.SearchTerm = ServiceConstants.ASTERISK;
                }

                if (searchObject.Filters != null)
                {
                    if (searchObject.Filters.FilterByMe == 1)
                    {

                        Users currentUserDetail = userDetails.GetLoggedInUserDetails(clientContext);
                        string userTitle = currentUserDetail.Name;
                        if(generalSettings.IsBackwardCompatible==false)
                        {
                            searchObject.SearchTerm = string.Concat(searchObject.SearchTerm, ServiceConstants.SPACE,
                            ServiceConstants.OPERATOR_AND, ServiceConstants.SPACE,
                            ServiceConstants.OPENING_BRACKET, searchSettings.ManagedPropertyResponsibleAttorney,
                            ServiceConstants.COLON, ServiceConstants.SPACE, ServiceConstants.DOUBLE_QUOTE, userTitle,
                            ServiceConstants.DOUBLE_QUOTE, ServiceConstants.SPACE, ServiceConstants.OPERATOR_AND, ServiceConstants.SPACE,
                            searchSettings.ManagedPropertyTeamMembers, ServiceConstants.COLON, ServiceConstants.SPACE,
                            ServiceConstants.DOUBLE_QUOTE, userTitle,
                            ServiceConstants.DOUBLE_QUOTE, ServiceConstants.SPACE, ServiceConstants.CLOSING_BRACKET);
                        }
                        else
                        {
                            searchObject.SearchTerm = string.Concat(searchObject.SearchTerm,
                                ServiceConstants.SPACE, ServiceConstants.OPERATOR_AND, ServiceConstants.SPACE,
                                ServiceConstants.OPENING_BRACKET, "CPCTeamMembers", ServiceConstants.COLON,
                                ServiceConstants.SPACE, ServiceConstants.DOUBLE_INVERTED_COMMA, userTitle,
                                ServiceConstants.DOUBLE_INVERTED_COMMA, ServiceConstants.SPACE, ServiceConstants.CLOSING_BRACKET);

                        }

                    }

                    keywordQuery = FilterMatters(searchObject, keywordQuery);

                    keywordQuery = KeywordQueryMetrics(client, searchObject, keywordQuery,
                        ServiceConstants.DOCUMENT_LIBRARY_FILTER_CONDITION,
                        searchSettings.ManagedPropertyIsMatter, true);

                    // Create a list of managed properties which are required to be present in search results
                    List<string> managedProperties = new List<string>();
                    managedProperties.Add(searchSettings.ManagedPropertyTitle);
                    managedProperties.Add(searchSettings.ManagedPropertyName);
                    managedProperties.Add(searchSettings.ManagedPropertyDescription);
                    managedProperties.Add(searchSettings.ManagedPropertySiteName);
                    managedProperties.Add(searchSettings.ManagedPropertyLastModifiedTime);
                    var managedColumns = configuration.GetSection("ContentTypes").GetSection("ManagedStampedColumns").GetChildren();
                    foreach (var key in managedColumns)
                    {                       
                            managedProperties.Add(searchSettings.ManagedPropertyExtension + key.Value.Replace("LPC", ""));
                    }
                    managedProperties.Add(searchSettings.ManagedPropertyMatterId);
                    managedProperties.Add(searchSettings.ManagedPropertyCustomTitle);
                    managedProperties.Add(searchSettings.ManagedPropertyPath);
                    managedProperties.Add(searchSettings.ManagedPropertyMatterName);
                    managedProperties.Add(searchSettings.ManagedPropertyOpenDate);
                    managedProperties.Add(searchSettings.ManagedPropertyClientName);
                    managedProperties.Add(searchSettings.ManagedPropertyBlockedUploadUsers);
                    managedProperties.Add(searchSettings.ManagedPropertyResponsibleAttorney);
                    managedProperties.Add(searchSettings.ManagedPropertyClientID);
                    managedProperties.Add(searchSettings.ManagedPropertyMatterGuid);
                    //Filter on Result source to fetch only Matter Center specific results
                    keywordQuery.SourceId = new Guid(searchSettings.SearchResultSourceID);
                    keywordQuery = AssignKeywordQueryValues(keywordQuery, managedProperties);
                    keywordQuery.BypassResultTypes = true;
                    searchResponseVM = FillResultData(clientContext, keywordQuery, searchRequestVM, true, managedProperties);
                }
                clientContext.Dispose();
                return searchResponseVM;
            }
            catch (Exception ex)
            {
                customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }

        }
コード例 #5
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        private IList<MatterData> GetPinMattersFilteredResult(SearchRequestVM searchRequestVM, Dictionary<string, MatterData> searchResultsVM)
        {
            IList<MatterData> matterDataList2 = new List<MatterData>();
            IList<MatterData> matterDataList = searchResultsVM.Values.ToList();
            string uniqueColumnName = string.Empty;

            matterDataList = GetFilteredPinnedMatterList(searchRequestVM, searchResultsVM.Values.ToList());

            if (searchRequestVM.SearchObject.UniqueColumnName != null)
            {
                uniqueColumnName = searchRequestVM.SearchObject.UniqueColumnName.ToLower().Trim();
            }

            uniqueColumnName = GetuniqueMatterColumnName(uniqueColumnName);

            if (string.IsNullOrWhiteSpace(uniqueColumnName))
            {
                return matterDataList;
            }
            else
            {
                var colList = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter");
                if (uniqueColumnName.Equals(colList.GetSection("matterName").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        matterDataList = (matterDataList.Where(d => d.MatterName.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = matterDataList.Select(o => o.MatterName).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            MatterData matterData = new MatterData();
                            matterData.MatterName = dt;
                            matterDataList2.Add(matterData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("matterClient").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        matterDataList = (matterDataList.Where(d => d.MatterClient.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = matterDataList.Select(o => o.MatterClient).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            MatterData matterData = new MatterData();
                            matterData.MatterClient = dt;
                            matterDataList2.Add(matterData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("matterPracticeGroup").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        matterDataList = (matterDataList.Where(d => d.MatterPracticeGroup.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = matterDataList.Select(o => o.MatterPracticeGroup).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            MatterData matterData = new MatterData();
                            matterData.MatterPracticeGroup = dt;
                            matterDataList2.Add(matterData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("matterResponsibleAttorney").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        matterDataList = (matterDataList.Where(d => d.MatterResponsibleAttorney.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = matterDataList.Select(o => o.MatterResponsibleAttorney).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            MatterData matterData = new MatterData();
                            matterData.MatterResponsibleAttorney = dt;
                            matterDataList2.Add(matterData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("matterAreaOfLaw").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        matterDataList = (matterDataList.Where(d => d.MatterAreaOfLaw.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = matterDataList.Select(o => o.MatterAreaOfLaw).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            MatterData matterData = new MatterData();
                            matterData.MatterAreaOfLaw = dt;
                            matterDataList2.Add(matterData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("matterSubAreaOfLaw").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        matterDataList = (matterDataList.Where(d => d.MatterSubAreaOfLaw.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = matterDataList.Select(o => o.MatterSubAreaOfLaw).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            MatterData matterData = new MatterData();
                            matterData.MatterSubAreaOfLaw = dt;
                            matterDataList2.Add(matterData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("matterID").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        matterDataList = (matterDataList.Where(d => d.MatterID.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = matterDataList.Select(o => o.MatterID).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            MatterData matterData = new MatterData();
                            matterData.MatterID = dt;
                            matterDataList2.Add(matterData);
                        }
                    }
                }
                return matterDataList2;
            }
        }
コード例 #6
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        private IList<MatterData> GetFilteredPinnedMatterList(SearchRequestVM searchRequestVM, IList<MatterData> matterList)
        {
            IList<MatterData> matterDataList = matterList;
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.ClientName))
            {
                matterDataList = (matterDataList.Where(d => d.MatterClient.Equals(searchRequestVM.SearchObject.Filters.ClientName))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.Name))
            {
                matterDataList = (matterDataList.Where(d => d.MatterName.Equals(searchRequestVM.SearchObject.Filters.Name))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.ResponsibleAttorneys))
            {
                matterDataList = (matterDataList.Where(d => d.MatterResponsibleAttorney.Equals(searchRequestVM.SearchObject.Filters.ResponsibleAttorneys))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.PracticeGroup))
            {
                matterDataList = (matterDataList.Where(d => d.MatterPracticeGroup.Equals(searchRequestVM.SearchObject.Filters.PracticeGroup))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.SubareaOfLaw))
            {
                matterDataList = (matterDataList.Where(d => d.MatterSubAreaOfLaw.Equals(searchRequestVM.SearchObject.Filters.SubareaOfLaw))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.AreaOfLaw))
            {
                matterDataList = (matterDataList.Where(d => d.MatterAreaOfLaw.Equals(searchRequestVM.SearchObject.Filters.AreaOfLaw))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.ProjectID))
            {
                matterDataList = (matterDataList.Where(d => d.MatterID.Equals(searchRequestVM.SearchObject.Filters.ProjectID))).ToList();
            }
            if (searchRequestVM.SearchObject.Filters.DateFilters != null)
            {
                if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.DateFilters.ModifiedFromDate))
                {
                    DateTime fromDate = new DateTime();
                    DateTime toDate = new DateTime();

                    if (DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.ModifiedFromDate.Replace("Z", ""), out fromDate)
                        && DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.ModifiedToDate.Replace("Z", ""), out toDate))
                    {
                        matterDataList = (matterDataList.Where(d => !string.IsNullOrWhiteSpace(d.MatterModifiedDate)
                        && Convert.ToDateTime(d.MatterModifiedDate).Date >= fromDate.Date
                        && Convert.ToDateTime(d.MatterModifiedDate).Date <= toDate.Date)).ToList();
                    }
                }
                if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.DateFilters.CreatedFromDate))
                {
                    DateTime fromDate = new DateTime();
                    DateTime toDate = new DateTime();

                    if (DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.CreatedFromDate.Replace("Z", ""), out fromDate)
                        && DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.CreatedToDate.Replace("Z", ""), out toDate))
                    {
                        matterDataList = (matterDataList.Where(d => !string.IsNullOrWhiteSpace(d.MatterCreatedDate)
                       && Convert.ToDateTime(d.MatterCreatedDate).Date >= fromDate.Date
                       && Convert.ToDateTime(d.MatterCreatedDate).Date <= toDate.Date)).ToList();
                    }
                }
                if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.DateFilters.OpenDateFrom))
                {
                    DateTime fromDate = new DateTime();
                    DateTime toDate = new DateTime();

                    if (DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.OpenDateFrom.Replace("Z", ""), out fromDate)
                        && DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.OpenDateTo.Replace("Z", ""), out toDate))
                    {
                        matterDataList = (matterDataList.Where(d => !string.IsNullOrWhiteSpace(d.MatterCreatedDate)
                       && Convert.ToDateTime(d.MatterCreatedDate).Date >= fromDate.Date
                       && Convert.ToDateTime(d.MatterCreatedDate).Date <= toDate.Date)).ToList();
                    }
                }
            }
            return matterDataList;
        }
コード例 #7
0
 public async Task<int> GetPinnedCounts(SearchRequestVM searchRequestVM)
 {
     var pinResponseVM = await matterRepositoy.GetPinnedRecordsAsync(searchRequestVM);
     return pinResponseVM.TotalRows;
 }
コード例 #8
0
        /// <summary>
        /// get the documents async
        /// </summary>
        /// <param name="searchRequestVM"></param>
        /// <returns></returns>
        public async Task<SearchResponseVM> GetPinnedDocumentsAsync(SearchRequestVM searchRequestVM)
        {         

            var searchResultsVM = await docRepository.GetPinnedRecordsAsync(searchRequestVM);    
            return searchResultsVM;
        }
コード例 #9
0
        public async Task<SearchResponseVM> GetDocumentsAsync(SearchRequestVM searchRequestVM)
        {
            var searchObject = searchRequestVM.SearchObject;
            // Encode all fields which are coming from js
            SearchUtility.EncodeSearchDetails(searchObject.Filters, false);
            // Encode Search Term
            searchObject.SearchTerm = (searchObject.SearchTerm != null) ?
                WebUtility.HtmlEncode(searchObject.SearchTerm).Replace(ServiceConstants.ENCODED_DOUBLE_QUOTES, ServiceConstants.DOUBLE_QUOTE) : string.Empty;

            var searchResultsVM = await docRepository.GetDocumentsAsync(searchRequestVM);

            if (searchResultsVM.TotalRows > 0)
            {                
                dynamic documentDataList = new List<dynamic>();
                IEnumerable<IDictionary<string, object>> searchResults = searchResultsVM.SearchResults;
                foreach (var searchResult in searchResults)
                {
                    
                    dynamic documentData = new ExpandoObject();
                    foreach (var key in searchResult.Keys)
                    {
                        documentData.Checker = false;
                        ServiceUtility.AddProperty(documentData, "Checker", false);
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDocumentClientName.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentClient").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyFileName.ToString().ToLower())
                        {
                            if (searchResult[key] != null &&  (searchResult[key].ToString()!=string.Empty))
                            {
                                string fileNameWithOutExt = System.IO.Path.GetFileNameWithoutExtension(searchResult[key].ToString());
                                ServiceUtility.AddProperty(documentData,
                                    configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentName").Key,
                                    fileNameWithOutExt);
                            }
                                
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDocumentClientId.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentClientId").Key,
                                searchResult[key].ToString());
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertySiteName.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentClientUrl").Key,
                                searchResult[key].ToString());
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDocumentVersion.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentVersion").Key,
                                searchResult[key].ToString());
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDocumentMatterName.ToString().ToLower())
                        {
                            if(searchResult[key].ToString()!=string.Empty)
                            {
                                ServiceUtility.AddProperty(documentData,
                                    configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentMatterName").Key,
                                    searchResult[key].ToString());
                            }
                            else
                            {
                                ServiceUtility.AddProperty(documentData,
                                    configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentMatterName").Key,
                                    searchResult["Title"].ToString());
                            }
                        }                        
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDocumentMatterId.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentMatterId").Key,
                                searchResult[key].ToString());
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDocumentCheckOutUser.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentCheckoutUser").Key,
                                searchResult[key].ToString());
                        }
                        //-------------------------
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyCreated.ToString().ToLower())
                        {
                            if (searchResult[key] != null && (searchResult[key].ToString() != string.Empty))
                            {
                                ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentCreatedDate").Key,
                                searchResult[key].ToString());
                            }
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyFileExtension.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentExtension").Key,
                                searchResult[key].ToString());
                            if (searchResult[key].ToString().ToLower() == "csv")
                            {
                                ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentIconUrl").Key,
                                $"{generalSettings.SiteURL}/_layouts/15/images/generaldocument.png");
                            }
                            else if (searchResult[key].ToString().ToLower() != "pdf")
                            {
                                ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentIconUrl").Key,
                                $"{generalSettings.SiteURL}/_layouts/15/images/ic{searchResult[key].ToString().ToLower()}.gif");
                            }
                            else
                            {
                                ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentIconUrl").Key,
                                $"{generalSettings.SiteURL}/_layouts/15/images/ic{searchResult[key].ToString().ToLower()}.png");
                            }
                        }
                        
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyPath.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentOWAUrl").Key,
                                searchResult[key].ToString());
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentUrl").Key,
                                searchResult[key].ToString());
                        }
                        if (key.ToString().ToLower() == "serverredirectedurl")
                        {
                            if (searchResult[key] != null)
                            {
                                ServiceUtility.AddProperty(documentData,
                                    configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentOWAUrl").Key,
                                    searchResult[key].ToString());
                                ServiceUtility.AddProperty(documentData,
                                    configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentUrl").Key,
                                    searchResult[key].ToString());
                            }                                
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyLastModifiedTime.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentModifiedDate").Key,
                                searchResult[key].ToString());                            
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyAuthor.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentOwner").Key,
                                searchResult[key].ToString());
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDocumentId.ToLower())
                        {
                            if (searchResult[key] != null)
                            {
                                ServiceUtility.AddProperty(documentData,
                                    configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("docId").Key,
                                    searchResult[key].ToString());
                            }
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyPracticeGroup.ToString().ToLower())
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentPracticeGroup").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == "parentlink")
                        {
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentParentUrl").Key,
                                searchResult[key].ToString());
                            string documentUrl = searchResult[key].ToString().Substring(0, searchResult[key].ToString().LastIndexOf("/"));
                            string siteUrl = searchResult["SiteName"].ToString();
                            string matterGuid = searchResult[key].ToString().ToLower().Replace(siteUrl, "").Split('/')[1];
                            string matterUrl = $"{siteUrl}/sitepages/{matterGuid}.aspx";
                            ServiceUtility.AddProperty(documentData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentMatterUrl").Key,
                                matterUrl);
                        }  
                        ServiceUtility.AddProperty(documentData, "PinType", "Pin");
                        ServiceUtility.AddProperty(documentData, "DocGuid", Guid.NewGuid().ToString());
                    }
                    documentDataList.Add(documentData);
                }
                searchResultsVM.DocumentDataList = documentDataList;
                searchResultsVM.SearchResults = null;
                if (searchRequestVM.SearchObject.IsUnique && searchResultsVM.DocumentDataList != null && !string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.UniqueColumnName))
                {
                    searchResultsVM.DocumentDataList = GetUniqueResults(searchRequestVM, searchResultsVM);
                }
                return searchResultsVM;
            }         
            else
            {
                return searchResultsVM;
            }
        }
コード例 #10
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        /// <summary>
        /// Fires query on SharePoint Search and fills the result data.
        /// </summary>
        /// <param name="clientContext">The client context.</param>
        /// <param name="keywordQuery">The keyword query.</param>
        /// <param name="searchObject">The search object.</param>
        /// <param name="isMatterSearch">The flag to determine weather call is from Search Matter or Search Document.</param>
        /// <param name="managedProperties">List of managed properties</param>
        /// <returns>It returns a string object, that contains all the results combined with dollar pipe dollar separator.</returns>
        private SearchResponseVM FillResultData(ClientContext clientContext, KeywordQuery keywordQuery,
            SearchRequestVM searchRequestVM, Boolean isMatterSearch, List<string> managedProperties)
        {
            SearchResponseVM searchResponseVM = new SearchResponseVM();
            Boolean isReadOnly;
            try
            {
                var searchObject = searchRequestVM.SearchObject;
                //var client = searchRequestVM.Client;
                if (null != searchObject.Sort)
                {
                    keywordQuery.EnableSorting = true;
                    keywordQuery = GetSortByProperty(keywordQuery, searchObject, isMatterSearch);
                }
                if(keywordQuery.QueryText.Length > 4000)
                {
                    return new SearchResponseVM();
                }

                SearchExecutor searchExecutor = new SearchExecutor(clientContext);
                ClientResult<ResultTableCollection> resultsTableCollection = searchExecutor.ExecuteQuery(keywordQuery);
                Users currentLoggedInUser = userDetails.GetLoggedInUserDetails(clientContext);

                if (null != resultsTableCollection && null != resultsTableCollection.Value && 0 <
                    resultsTableCollection.Value.Count && null != resultsTableCollection.Value[0].ResultRows)
                {
                    if (isMatterSearch && 0 < resultsTableCollection.Value.Count &&
                        null != resultsTableCollection.Value[0].ResultRows && !string.IsNullOrWhiteSpace(currentLoggedInUser.Email))
                    {
                        foreach (IDictionary<string, object> matterMetadata in resultsTableCollection.Value[0].ResultRows)
                        {
                            isReadOnly = false;
                            if (null != matterMetadata)
                            {
                                // Decode matter properties
                                DecodeMatterProperties(matterMetadata);
                                string readOnlyUsers = Convert.ToString(matterMetadata[searchSettings.ManagedPropertyBlockedUploadUsers], CultureInfo.InvariantCulture);
                                if (!string.IsNullOrWhiteSpace(readOnlyUsers))
                                {
                                    isReadOnly = IsUserReadOnlyForMatter(isReadOnly, currentLoggedInUser.Name,
                                        currentLoggedInUser.Email, readOnlyUsers);
                                }
                                matterMetadata.Add(generalSettings.IsReadOnlyUser, isReadOnly);
                            }
                        }
                    }
                    else
                    {
                        /*Keeping the code to clean the author values*/
                        foreach (IDictionary<string, object> documentMetadata in resultsTableCollection.Value[0].ResultRows)
                        {
                            if (null != documentMetadata)
                            {
                                string authorData = Convert.ToString(documentMetadata[searchSettings.ManagedPropertyAuthor], CultureInfo.InvariantCulture);
                                int ltIndex = authorData.IndexOf(ServiceConstants.OPENING_ANGULAR_BRACKET, StringComparison.Ordinal);
                                int gtIndex = authorData.IndexOf(ServiceConstants.CLOSING_ANGULAR_BRACKET, StringComparison.Ordinal);
                                authorData = (0 <= ltIndex && ltIndex < gtIndex) ? authorData.Remove(ltIndex, (gtIndex - ltIndex) + 1) : authorData;
                                authorData = authorData.Replace(ServiceConstants.ENCODED_DOUBLE_QUOTES, string.Empty);
                                documentMetadata[searchSettings.ManagedPropertyAuthor] = authorData.Trim();
                            }
                        }
                    }
                    if (resultsTableCollection.Value.Count > 1)
                    {
                        searchResponseVM.TotalRows = resultsTableCollection.Value[0].TotalRows;
                        searchResponseVM.SearchResults = resultsTableCollection.Value[0].ResultRows;
                    }
                    else
                    {
                        if (resultsTableCollection.Value[0].TotalRows == 0)
                        {
                            searchResponseVM = NoDataRow(managedProperties);
                        }
                        else
                        {
                            searchResponseVM.TotalRows = resultsTableCollection.Value[0].TotalRows;
                            searchResponseVM.SearchResults = resultsTableCollection.Value[0].ResultRows;
                        }
                    }
                }
                else
                {
                    searchResponseVM = NoDataRow(managedProperties);
                }
            }
            catch (Exception exception)
            {
                customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
            return searchResponseVM;
        }
コード例 #11
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        /// <summary>
        /// Gets the matters based on search criteria.
        /// </summary>
        /// <param name="searchRequestVM"></param>
        /// <returns></returns>
        public SearchResponseVM GetDocuments(SearchRequestVM searchRequestVM)
        {
            SearchResponseVM searchResponseVM = null;
            try
            {
                var client = searchRequestVM.Client;
                var searchObject = searchRequestVM.SearchObject;
                clientContext = null;
                clientContext = spoAuthorization.GetClientContext(client.Url);
                KeywordQuery keywordQuery = new KeywordQuery(clientContext);
                if (string.IsNullOrWhiteSpace(searchObject.SearchTerm))
                {
                    searchObject.SearchTerm = ServiceConstants.ASTERISK;
                }

                if (searchObject.Filters != null)
                {
                    if (searchObject.Filters.FilterByMe == 1)
                    {
                        ////Get logged in user alias
                        Users currentUserDetail = userDetails.GetLoggedInUserDetails(clientContext);
                        string userTitle = currentUserDetail.Name;
                        searchObject.SearchTerm = String.Concat(searchObject.SearchTerm, ServiceConstants.SPACE, ServiceConstants.OPERATOR_AND, ServiceConstants.SPACE, searchSettings.ManagedPropertyAuthor, ServiceConstants.COLON, userTitle);
                    }

                    keywordQuery = FilterDocuments(searchObject, keywordQuery);

                    keywordQuery = KeywordQueryMetrics(client, searchObject, keywordQuery, ServiceConstants.DOCUMENT_ITEM_FILTER_CONDITION,
                        searchSettings.ManagedPropertyIsDocument, false);

                    // Create a list of managed properties which are required to be present in search results
                    List<string> managedProperties = new List<string>();
                    managedProperties.Add(searchSettings.ManagedPropertyFileName);
                    managedProperties.Add(searchSettings.ManagedPropertyTitle);
                    managedProperties.Add(searchSettings.ManagedPropertyCreated);
                    managedProperties.Add(searchSettings.ManagedPropertyUIVersionStringOWSTEXT);
                    managedProperties.Add(searchSettings.ManagedPropertyServerRelativeUrl);
                    managedProperties.Add(searchSettings.ManagedPropertyFileExtension);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentMatterId);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentLastModifiedTime);
                    managedProperties.Add(searchSettings.ManagedPropertySiteTitle);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentClientId);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentClientName);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentMatterName);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentId);
                    managedProperties.Add(searchSettings.ManagedPropertyCheckOutByUser);
                    managedProperties.Add(searchSettings.ManagedPropertySiteName);
                    managedProperties.Add(searchSettings.ManagedPropertySPWebUrl);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentVersion);
                    managedProperties.Add(searchSettings.ManagedPropertyDocumentCheckOutUser);
                    managedProperties.Add(searchSettings.ManagedPropertySPWebUrl);
                    managedProperties.Add(searchSettings.ManagedPropertyAuthor);
                    managedProperties.Add(searchSettings.ManagedPropertyMatterGuid);

                    //Filter on Result source to fetch only Matter Center specific results
                    keywordQuery.SourceId = new Guid(searchSettings.SearchResultSourceID);

                    var managedColumns = configuration.GetSection("ContentTypes").GetSection("ManagedStampedColumns").GetChildren();
                    foreach (var key in managedColumns)
                    {
                        managedProperties.Add(searchSettings.ManagedPropertyExtension + key.Value.Replace("LPC", ""));
                    }
                    //managedProperties.Add("PCPrePodDocumentPracticeGroup");
                    //managedProperties.Add("PCPrePodDocumentProjectType");
                    keywordQuery = AssignKeywordQueryValues(keywordQuery, managedProperties);
                    searchResponseVM = FillResultData(clientContext, keywordQuery, searchRequestVM, false, managedProperties);
                    clientContext.Dispose();
                }
            }
            catch (Exception ex)
            {
                customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
            return searchResponseVM;
        }
コード例 #12
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        /// <summary>
        /// 
        /// </summary>
        /// <param name="searchRequestVM"></param>
        /// <returns></returns>
        public IList<PeoplePickerUser> SearchUsers(SearchRequestVM searchRequestVM)
        {
            var client = searchRequestVM.Client;
            var searchObject = searchRequestVM.SearchObject;
            try
            {
                using (ClientContext clientContext = spoAuthorization.GetClientContext(client.Url))
                {

                    ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters();
                    queryParams.AllowMultipleEntities = searchSettings.PeoplePickerAllowMultipleEntities;
                    queryParams.MaximumEntitySuggestions = searchSettings.PeoplePickerMaximumEntitySuggestions;
                    queryParams.PrincipalSource = PrincipalSource.All;
                    queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup;
                    queryParams.QueryString = searchObject.SearchTerm;
                    int peoplePickerMaxRecords = searchSettings.PeoplePickerMaxRecords;

                    ClientResult<string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(clientContext, queryParams);
                    clientContext.ExecuteQuery();
                    string results = clientResult.Value;
                    IList<PeoplePickerUser> foundUsers = JsonConvert.DeserializeObject<List<PeoplePickerUser>>(results).Where(result => (string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER,
                        StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType,
                        ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList();
                    return foundUsers;
                }
            }
            catch (Exception exception)
            {
                customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
        }
コード例 #13
0
        /// <summary>
        /// getting unique results for this.
        /// </summary>
        /// <param name="searchRequestVM"></param>
        /// <param name="searchResultsVM"></param>
        /// <returns></returns>
        public dynamic GetUniqueResults(SearchRequestVM searchRequestVM, dynamic searchResultsVM)
        {
            dynamic matterDataList1 = new List<dynamic>();
            var colList = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter");
            string UniqueColumnName = GetUniqueColumnName(searchRequestVM.SearchObject.UniqueColumnName.ToLower().Trim());

            if (!string.IsNullOrWhiteSpace(UniqueColumnName)) 
            {
                if (UniqueColumnName.Equals(colList.GetSection("matterName").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.MatterDataList).Where(d => d.matterName.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.matterName).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic matterData1 = new ExpandoObject();
                        matterData1.matterName = dt;
                        matterDataList1.Add(matterData1);
                    }
                    searchResultsVM.MatterDataList = matterDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("matterClient").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.MatterDataList).Where(d => d.matterClient.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.matterClient).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic matterData1 = new ExpandoObject();
                        matterData1.matterClient = dt;
                        matterDataList1.Add(matterData1);
                    }
                    searchResultsVM.MatterDataList = matterDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("matterPracticeGroup").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.MatterDataList).Where(d => d.matterPracticeGroup.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.matterPracticeGroup).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic matterData1 = new ExpandoObject();
                        matterData1.matterPracticeGroup = dt;
                        matterDataList1.Add(matterData1);
                    }
                    searchResultsVM.MatterDataList = matterDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("matterAreaOfLaw").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.MatterDataList).Where(d => d.matterAreaOfLaw.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.matterAreaOfLaw).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic matterData1 = new ExpandoObject();
                        matterData1.matterAreaOfLaw = dt;
                        matterDataList1.Add(matterData1);
                    }
                    searchResultsVM.MatterDataList = matterDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("matterSubAreaOfLaw").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.MatterDataList).Where(d => d.matterSubAreaOfLaw.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.matterSubAreaOfLaw).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic matterData1 = new ExpandoObject();
                        matterData1.matterSubAreaOfLaw = dt;
                        matterDataList1.Add(matterData1);
                    }
                    searchResultsVM.MatterDataList = matterDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("matterResponsibleAttorney").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.MatterDataList).Where(d => d.matterResponsibleAttorney.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.matterResponsibleAttorney).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic matterData1 = new ExpandoObject();
                        matterData1.matterResponsibleAttorney = dt;
                        matterDataList1.Add(matterData1);
                    }
                    searchResultsVM.MatterDataList = matterDataList1;
                }
            }

            return searchResultsVM.MatterDataList;
        }
コード例 #14
0
        public async Task<SearchResponseVM> GetMatters(SearchRequestVM searchRequestVM)
        {
            var searchObject = searchRequestVM.SearchObject;
            // Encode all fields which are coming from js
            SearchUtility.EncodeSearchDetails(searchObject.Filters, false);
            // Encode Search Term
            searchObject.SearchTerm = (searchObject.SearchTerm != null) ?
                WebUtility.HtmlEncode(searchObject.SearchTerm).Replace(ServiceConstants.ENCODED_DOUBLE_QUOTES,
                ServiceConstants.DOUBLE_QUOTE) : string.Empty;

            var searchResultsVM = await matterRepositoy.GetMattersAsync(searchRequestVM);
            if (searchResultsVM.TotalRows > 0)
            {                

                dynamic matterDataList = new List<dynamic>();
                IEnumerable<IDictionary<string, object>> searchResults = searchResultsVM.SearchResults;
                var searchSchema = configuration.GetSection("Search");
                string key1 = configuration.GetSection("Search").GetSection("ManagedPropertyMatterName").Value.ToString();
                foreach (var searchResult in searchResults)
                {
                    dynamic matterData = new ExpandoObject();
                    matterData.matterSubAreaOfLaw = string.Empty;
                    string subAreaOfLaw = "";
                    string subAreaOfLaw1 = "";
                    string subAreaOfLaw2 = "";
                    foreach (var key in searchResult.Keys)
                    {                        
                        if(key.ToString().ToLower() == searchSettings.ManagedPropertyMatterName.ToString().ToLower())
                        {                            
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterName").Key,
                                WebUtility.HtmlDecode(searchResult[key].ToString()));                            
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyDescription.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterDescription").Key,
                                searchResult[key].ToString());
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyOpenDate.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterCreatedDate").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyPath.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterUrl").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertySiteName.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterClientUrl").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyPracticeGroup.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterPracticeGroup").Key,
                                searchResult[key].ToString().Trim().TrimEnd(';'));
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyAreaOfLaw.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterAreaOfLaw").Key,
                                searchResult[key].ToString().Trim().TrimEnd(';'));
                        }

                        #region Subarea of law login
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertySubAreaOfLaw2.ToLower())
                        {
                            subAreaOfLaw2 = searchResult[key].ToString().Trim().TrimEnd(';');
                        }
                        if (key.ToString().ToLower() == searchSettings.ManagedPropertySubAreaOfLaw1.ToLower())
                        {
                            subAreaOfLaw1 = searchResult[key].ToString().Trim().TrimEnd(';');
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertySubAreaOfLaw.ToLower())
                        {
                            subAreaOfLaw = searchResult[key].ToString().Trim().TrimEnd(';');
                        }

                        if (subAreaOfLaw2 != string.Empty && subAreaOfLaw1 != string.Empty && subAreaOfLaw != string.Empty)
                        {
                            ServiceUtility.AddProperty(matterData, "matterSubAreaOfLaw", subAreaOfLaw2);
                        }

                        if (subAreaOfLaw2 == string.Empty && subAreaOfLaw1 != string.Empty && subAreaOfLaw != string.Empty)
                        {
                            ServiceUtility.AddProperty(matterData, "matterSubAreaOfLaw", subAreaOfLaw1);
                        }

                        if (subAreaOfLaw2 == string.Empty && subAreaOfLaw1 == string.Empty && subAreaOfLaw != string.Empty)
                        {
                            ServiceUtility.AddProperty(matterData, "matterSubAreaOfLaw",  WebUtility.HtmlDecode(subAreaOfLaw));
                        }
                        #endregion

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyClientName.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterClient").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyClientID.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterClientId").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyBlockedUploadUsers.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("hideUpload").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyResponsibleAttorney.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterResponsibleAttorney").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyMatterId.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterID").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyMatterGuid.ToLower())
                        {
                            ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterGuid").Key,
                                searchResult[key].ToString());
                        }

                        if (key.ToString().ToLower() == searchSettings.ManagedPropertyLastModifiedTime.ToLower())
                        {
                            if (searchResult[key] != null && (searchResult[key].ToString() != string.Empty))
                            {
                                ServiceUtility.AddProperty(matterData,
                                configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterModifiedDate").Key,
                                searchResult[key].ToString());
                            }
                        }
                        ServiceUtility.AddProperty(matterData,"PinType","Pin");
                    }
                    matterDataList.Add(matterData);
                }
                searchResultsVM.MatterDataList = matterDataList;

                searchResultsVM.SearchResults = null;
                if (searchRequestVM.SearchObject.IsUnique && searchResultsVM.MatterDataList != null && !string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.UniqueColumnName))
                {
                    searchResultsVM.MatterDataList = GetUniqueResults(searchRequestVM, searchResultsVM);
                }
                return searchResultsVM;
            }
            else
            {
                return searchResultsVM;
            }
        }
コード例 #15
0
        public async void Get_Matter_With_SearchTerm()
        {
            var searchRequest = new SearchRequestVM()
            {
                Client = new Client()
                {
                    Id = "123456",
                    Name = "Microsoft",
                    Url = "https://msmatter.sharepoint.com/sites/catalog"
                },
                SearchObject = new SearchObject()
                {
                    PageNumber = 1,
                    ItemsPerPage = 10,
                    SearchTerm = "M",
                    Filters = new FilterObject() { },
                    Sort = new SortObject()
                    {
                        ByProperty = "LastModifiedTime",
                        Direction = 1
                    }
                }
            };
            using (var testClient = testServer.CreateClient().AcceptJson())
            {
                var response = await testClient.PostAsJsonAsync("http://localhost:58775/api/v1/matter/get", searchRequest);
                var result = response.Content.ReadAsJsonAsync<SearchResponseVM>().Result;
                Assert.NotNull(result);
                Assert.NotEmpty(result.SearchResults);

            }
        }
コード例 #16
0
 public async Task<int> GetPinnedCounts(SearchRequestVM searchRequestVM)
 {
     try
     {
         var pinResponseVM = await docRepository.GetPinnedRecordsAsync(searchRequestVM);
         return pinResponseVM.TotalRows;
     }
     catch (Exception ex)
     {
         customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
         throw;
     }
 }
コード例 #17
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        /// <summary>
        /// 
        /// </summary>
        /// <param name="client"></param>
        /// <param name="listName"></param>
        /// <param name="listColumnName"></param>
        /// <param name="isShowDocument"></param>
        /// <returns></returns>
        public SearchResponseVM GetPinnedData(SearchRequestVM searchRequestVM, string listName,
            string listColumnName, bool isShowDocument)
        {
            ////Holds logged-in user alias
            string userAlias = string.Empty;
            ////Object to store all the list items retrieved from SharePoint list
            ListItemCollection listItems;
            ////Stores the JSON structure with the meta-data of pinned matter/document
            string userPinnedDetails = string.Empty;

            SearchResponseVM searchResponse = new SearchResponseVM();
            using (clientContext = spoAuthorization.GetClientContext(searchRequestVM.Client.Url))
            {
                try
                {
                    ////Get logged in user alias
                    Users currentUserDetail = userDetails.GetLoggedInUserDetails(clientContext);
                    userAlias = currentUserDetail.LogOnName;
                    listItems = spList.GetData(clientContext, listName, string.Format(CultureInfo.InvariantCulture,
                        camlQueries.UserPinnedDetailsQuery, searchSettings.PinnedListColumnUserAlias, userAlias, listColumnName));
                    if (listItems != null && listItems.Count > 0)
                    {
                        ////Since we are maintaining only single list item per user, listItems collection will have only one object; hence accessing first object
                        ////Check if column holds null or empty string. If non empty, pinned matter/document exists
                        if (!string.IsNullOrEmpty(Convert.ToString(listItems[0][listColumnName], CultureInfo.InvariantCulture)))
                        {
                            string userPinnedMatter = Convert.ToString(listItems[0][listColumnName], CultureInfo.InvariantCulture);
                            var sortCol = searchRequestVM.SearchObject.Sort.ByColumn;
                            sortCol = UppercaseFirst(sortCol);

                            if (isShowDocument)
                            {
                                Dictionary<string, DocumentData> userpinnedDocumentCollection =
                                    JsonConvert.DeserializeObject<Dictionary<string, DocumentData>>(userPinnedMatter);
                                searchResponse.TotalRows = userpinnedDocumentCollection.Count;

                                if (searchRequestVM.SearchObject.Sort.SortAndFilterPinnedData == false)
                                {
                                    searchResponse.DocumentDataList = userpinnedDocumentCollection.Values.Reverse();
                                }
                                else
                                {
                                    string lastModifiedDate = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentModifiedDate").GetValue<string>("keyName");
                                    string createdDate = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument").GetSection("documentCreatedDate").GetValue<string>("keyName");
                                    //searchResponse.DocumentDataList = userpinnedDocumentCollection.Values.Reverse();

                                    IList<DocumentData> filterPinnedDocList = null;
                                    filterPinnedDocList = GetPinDocsFilteredResult(searchRequestVM, userpinnedDocumentCollection);
                                    filterPinnedDocList = filterPinnedDocList
                                                               .Select(usr => {usr.DocumentMatterName = WebUtility.HtmlDecode(usr.DocumentMatterName);usr.DocumentPracticeGroup = usr.DocumentPracticeGroup;usr.DocumentName = usr.DocumentName;return usr; })
                                                               .ToList();
                                    if (filterPinnedDocList != null)
                                    {
                                        searchResponse.DocumentDataList = filterPinnedDocList;
                                        try
                                        {
                                            if (searchRequestVM.SearchObject.Sort.Direction == 0 && !string.IsNullOrWhiteSpace(sortCol) && filterPinnedDocList.Count > 1)
                                            {
                                                var getSortColNullCount = filterPinnedDocList.Select(x => TypeHelper.GetPropertyValue(x, sortCol)).Where(y => y == null);
                                                if (getSortColNullCount.Count() == 0)
                                                {
                                                    if (sortCol.ToLower().Trim() == lastModifiedDate.ToLower().Trim() || sortCol.ToLower().Trim() == createdDate.ToLower().Trim())
                                                    {
                                                        searchResponse.DocumentDataList = filterPinnedDocList.OrderBy(x => DateTime.Parse(TypeHelper.GetPropertyValue(x, sortCol).ToString())).ToList();
                                                    }
                                                    else
                                                    {
                                                        searchResponse.DocumentDataList = filterPinnedDocList.OrderBy(x => TypeHelper.GetPropertyValue(x, sortCol)).ToList();
                                                    }
                                                }
                                            }
                                            else if (searchRequestVM.SearchObject.Sort.Direction == 1 && !string.IsNullOrWhiteSpace(sortCol) && filterPinnedDocList.Count > 1)
                                            {
                                                var getSortColNullCount = filterPinnedDocList.Select(x => TypeHelper.GetPropertyValue(x, sortCol)).Where(y => y == null);
                                                if (getSortColNullCount.Count() == 0)
                                                {
                                                    if (sortCol.ToLower().Trim() == lastModifiedDate.ToLower().Trim() || sortCol.ToLower().Trim() == createdDate.ToLower().Trim())
                                                    {
                                                        searchResponse.DocumentDataList = filterPinnedDocList.OrderByDescending(x => DateTime.Parse(TypeHelper.GetPropertyValue(x, sortCol).ToString())).ToList();
                                                    }
                                                    else
                                                    {
                                                        searchResponse.DocumentDataList = filterPinnedDocList.OrderByDescending(x => TypeHelper.GetPropertyValue(x, sortCol)).ToList();
                                                    }
                                                }
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            string msg = ex.Message;
                                        }
                                        searchResponse.TotalRows = searchResponse.DocumentDataList.Count;
                                    }
                                    else
                                    {
                                        searchResponse.DocumentDataList = new List<DocumentData>();
                                        searchResponse.TotalRows = 0;
                                    }
                                }
                            }
                            else
                            {
                                Dictionary<string, MatterData> userpinnedMatterCollection =
                                    JsonConvert.DeserializeObject<Dictionary<string, MatterData>>(userPinnedMatter);
                                searchResponse.TotalRows = userpinnedMatterCollection.Count;
                                if (searchRequestVM.SearchObject.Sort.SortAndFilterPinnedData == false)
                                {
                                    searchResponse.MatterDataList = userpinnedMatterCollection.Values.Reverse();
                                }
                                else
                                {
                                    string lastModifiedDate = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterModifiedDate").GetValue<string>("keyName");
                                    string createdDate = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterCreatedDate").GetValue<string>("keyName");
                                    // searchResponse.MatterDataList = userpinnedMatterCollection.Values.Reverse();


                                    #region Code for filtering pinned data
                                    IList<MatterData> filterPinnedMatterList = null;

                                    filterPinnedMatterList = GetPinMattersFilteredResult(searchRequestVM, userpinnedMatterCollection);
                                    filterPinnedMatterList = filterPinnedMatterList
                                                               .Select(usr => { usr.MatterName = WebUtility.HtmlDecode(usr.MatterName); usr.MatterSubAreaOfLaw = WebUtility.HtmlDecode(usr.MatterSubAreaOfLaw); return usr; })
                                                               .ToList();
                                    if (filterPinnedMatterList != null)
                                    {
                                        searchResponse.MatterDataList = filterPinnedMatterList;
                                        try
                                        {
                                            if (searchRequestVM.SearchObject.Sort.Direction == 0 && !string.IsNullOrWhiteSpace(sortCol) && filterPinnedMatterList.Count > 1)
                                            {
                                                var getSortColNullCount = filterPinnedMatterList.Select(x => TypeHelper.GetPropertyValue(x, sortCol)).Where(y => y == null);
                                                if (getSortColNullCount.Count() == 0)
                                                {
                                                    if (sortCol.ToLower().Trim() == lastModifiedDate.ToLower().Trim() || sortCol.ToLower().Trim() == createdDate.ToLower().Trim())
                                                    {
                                                        searchResponse.MatterDataList = filterPinnedMatterList.OrderBy(x => DateTime.Parse(TypeHelper.GetPropertyValue(x, sortCol).ToString())).ToList();
                                                    }
                                                    else
                                                    {
                                                        searchResponse.MatterDataList = filterPinnedMatterList.OrderBy(x => TypeHelper.GetPropertyValue(x, sortCol)).ToList();
                                                    }
                                                }
                                            }
                                            else if (searchRequestVM.SearchObject.Sort.Direction == 1 && !string.IsNullOrWhiteSpace(sortCol) && filterPinnedMatterList.Count > 1)
                                            {
                                                var getSortColNullCount = filterPinnedMatterList.Select(x => TypeHelper.GetPropertyValue(x, sortCol)).Where(y => y == null);
                                                if (getSortColNullCount.Count() == 0)
                                                {
                                                    if (sortCol.ToLower().Trim() == lastModifiedDate.ToLower().Trim() || sortCol.ToLower().Trim() == createdDate.ToLower().Trim())
                                                    {
                                                        searchResponse.MatterDataList = filterPinnedMatterList.OrderByDescending(x => DateTime.Parse(TypeHelper.GetPropertyValue(x, sortCol).ToString())).ToList();
                                                    }
                                                    else
                                                    {
                                                        searchResponse.MatterDataList = filterPinnedMatterList.OrderByDescending(x => TypeHelper.GetPropertyValue(x, sortCol)).ToList();
                                                    }
                                                }
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            string msg = ex.Message;
                                        }
                                        searchResponse.TotalRows = searchResponse.MatterDataList.Count;
                                    }
                                    else
                                    {
                                        searchResponse.MatterDataList = new List<MatterData>();
                                        searchResponse.TotalRows = 0;
                                    }
                                    #endregion
                                }
                            }
                        }
                    }
                    else
                    {
                        searchResponse.TotalRows = 0;
                        searchResponse.NoPinnedMessage = ServiceConstants.NO_PINNED_MESSAGE;
                    }
                    return searchResponse;
                }
                catch (Exception ex)
                {
                    customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                    throw;
                }
            }
        }
コード例 #18
0
        /// <summary>
        /// getting unique results for this.
        /// </summary>
        /// <param name="searchRequestVM"></param>
        /// <param name="searchResultsVM"></param>
        /// <returns></returns>
        public dynamic GetUniqueResults(SearchRequestVM searchRequestVM, dynamic searchResultsVM)
        {
           dynamic documentDataList1 = new List<dynamic>();

           var colList = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument");

           string UniqueColumnName = GetUniqueColumnName(searchRequestVM.SearchObject.UniqueColumnName.ToLower().Trim());
            if (!string.IsNullOrWhiteSpace(UniqueColumnName))
            {
                if (UniqueColumnName.Equals(colList.GetSection("documentName").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.DocumentDataList).Where(d => d.documentName.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    foreach (var dt in data)
                    {
                        dt.documentName = dt.documentName + "." + dt.documentExtension;
                    }

                    data = data.Select(o => o.documentName).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic documentData1 = new ExpandoObject();
                        documentData1.documentName = dt;
                        documentDataList1.Add(documentData1);
                    }
                    searchResultsVM.DocumentDataList = documentDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("documentMatterName").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.DocumentDataList).Where(d => d.documentMatterName.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.documentMatterName).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic documentData1 = new ExpandoObject();
                        documentData1.documentMatterName = dt;
                        documentDataList1.Add(documentData1);
                    }
                    searchResultsVM.DocumentDataList = documentDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("documentPracticeGroup").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.DocumentDataList).Where(d => d.documentPracticeGroup.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.documentPracticeGroup).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic documentData1 = new ExpandoObject();
                        documentData1.documentPracticeGroup = dt;
                        documentDataList1.Add(documentData1);
                    }
                    searchResultsVM.DocumentDataList = documentDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("documentOwner").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.DocumentDataList).Where(d => d.documentOwner.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.documentOwner).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic documentData1 = new ExpandoObject();
                        documentData1.documentOwner = dt;
                        documentDataList1.Add(documentData1);
                    }
                    searchResultsVM.DocumentDataList = documentDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("documentCheckoutUser").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.DocumentDataList).Where(d => d.documentCheckoutUser.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.documentCheckoutUser).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic documentData1 = new ExpandoObject();
                        documentData1.documentCheckoutUser = dt;
                        documentDataList1.Add(documentData1);
                    }
                    searchResultsVM.DocumentDataList = documentDataList1;
                }
                else if (UniqueColumnName.Equals(colList.GetSection("documentClient").Key))
                {
                    var data = ((IEnumerable<dynamic>)searchResultsVM.DocumentDataList).Where(d => d.documentClient.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()));
                    data = data.Select(o => o.documentClient).Distinct();
                    foreach (var dt in data)
                    {
                        dynamic documentData1 = new ExpandoObject();
                        documentData1.documentClient = dt;
                        documentDataList1.Add(documentData1);
                    }
                    searchResultsVM.DocumentDataList = documentDataList1;
                }
            }
        
            return searchResultsVM.DocumentDataList;
        }
コード例 #19
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        private IList<DocumentData> GetFilteredPinnedDocumentList(SearchRequestVM searchRequestVM, IList<DocumentData> docList)
        {
            IList<DocumentData> docDataList = docList;
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.ClientName))
            {
                docDataList = (docDataList.Where(d => d.DocumentClient.Equals(searchRequestVM.SearchObject.Filters.ClientName))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.ProjectName))
            {
                docDataList = (docDataList.Where(d => d.DocumentMatterName.Equals(searchRequestVM.SearchObject.Filters.ProjectName))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.DocumentAuthor))
            {
                docDataList = (docDataList.Where(d => d.DocumentOwner.Equals(searchRequestVM.SearchObject.Filters.DocumentAuthor))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.PracticeGroup))
            {
                docDataList = (docDataList.Where(d => d.DocumentPracticeGroup.Equals(searchRequestVM.SearchObject.Filters.PracticeGroup))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.DocumentCheckoutUsers))
            {
                docDataList = (docDataList.Where(d => d.DocumentCheckoutUser.Equals(searchRequestVM.SearchObject.Filters.DocumentCheckoutUsers))).ToList();
            }
            if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.Name))
            {
                string docName = searchRequestVM.SearchObject.Filters.Name;
                if (searchRequestVM.SearchObject.Filters.Name.Contains("."))
                {
                    docName = searchRequestVM.SearchObject.Filters.Name.Substring(0, searchRequestVM.SearchObject.Filters.Name.LastIndexOf("."));
                }
                docDataList = (docDataList.Where(d => d.DocumentName.Equals(docName))).ToList();
            }
            if (searchRequestVM.SearchObject.Filters.DateFilters != null)
            {
                if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.DateFilters.ModifiedFromDate))
                {
                    DateTime fromDate = new DateTime();
                    DateTime toDate = new DateTime();

                    if (DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.ModifiedFromDate.Replace("Z", ""), out fromDate)
                        && DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.ModifiedToDate.Replace("Z", ""), out toDate))
                    {
                        docDataList = (docDataList.Where(d => !string.IsNullOrWhiteSpace(d.DocumentModifiedDate)
                        && Convert.ToDateTime(d.DocumentModifiedDate).Date >= fromDate.Date
                        && Convert.ToDateTime(d.DocumentModifiedDate).Date <= toDate.Date)).ToList();
                    }
                }
                if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.Filters.DateFilters.CreatedFromDate))
                {
                    DateTime fromDate = new DateTime();
                    DateTime toDate = new DateTime();

                    if (DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.CreatedFromDate.Replace("Z", ""), out fromDate)
                        && DateTime.TryParse(searchRequestVM.SearchObject.Filters.DateFilters.CreatedToDate.Replace("Z", ""), out toDate))
                    {
                        docDataList = (docDataList.Where(d => !string.IsNullOrWhiteSpace(d.DocumentCreatedDate)
                       && Convert.ToDateTime(d.DocumentCreatedDate).Date >= fromDate.Date
                       && Convert.ToDateTime(d.DocumentCreatedDate).Date <= toDate.Date)).ToList();
                    }
                }
            }
            return docDataList;
        }
コード例 #20
0
ファイル: Search.cs プロジェクト: Microsoft/mattercenter
        private IList<DocumentData> GetPinDocsFilteredResult(SearchRequestVM searchRequestVM, Dictionary<string, DocumentData> searchResultsVM)
        {
            IList<DocumentData> documentDataList2 = new List<DocumentData>();
            IList<DocumentData> documentDataList = searchResultsVM.Values.ToList();
            string uniqueColumnName = string.Empty;

            documentDataList = GetFilteredPinnedDocumentList(searchRequestVM, searchResultsVM.Values.ToList());

            if (searchRequestVM.SearchObject.UniqueColumnName != null)
            {
                uniqueColumnName = searchRequestVM.SearchObject.UniqueColumnName.ToLower().Trim();
            }
            uniqueColumnName = GetUniqueDocumentColumnName(uniqueColumnName);

            if (string.IsNullOrWhiteSpace(uniqueColumnName))
            {
                return documentDataList;
            }
            else
            {
                var colList = configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForDocument");
                if (uniqueColumnName.Equals(colList.GetSection("documentName").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        documentDataList = (documentDataList.Where(d => d.DocumentName.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        foreach (var dt in documentDataList)
                        {
                           dt.DocumentName = dt.DocumentName + "." + dt.DocumentExtension;
                        }
                        var data1 = documentDataList.Select(o => o.DocumentName).Distinct().ToList();

                        foreach (var dt in data1)
                        {
                            DocumentData documentData = new DocumentData();
                            documentData.DocumentName = dt;
                            documentDataList2.Add(documentData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("documentClient").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        documentDataList = (documentDataList.Where(d => d.DocumentClient.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = documentDataList.Select(o => o.DocumentClient).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            DocumentData documentData = new DocumentData();
                            documentData.DocumentClient = dt;
                            documentDataList2.Add(documentData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("documentOwner").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        documentDataList = (documentDataList.Where(d => d.DocumentOwner.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = documentDataList.Select(o => o.DocumentOwner).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            DocumentData documentData = new DocumentData();
                            documentData.DocumentOwner = dt;
                            documentDataList2.Add(documentData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("documentCheckoutUser").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        documentDataList = (documentDataList.Where(d => d.DocumentCheckoutUser.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = documentDataList.Select(o => o.DocumentCheckoutUser).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            DocumentData documentData = new DocumentData();
                            documentData.DocumentCheckoutUser = dt;
                            documentDataList2.Add(documentData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("documentPracticeGroup").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        documentDataList = (documentDataList.Where(d => d.DocumentPracticeGroup.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = documentDataList.Select(o => o.DocumentPracticeGroup).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            DocumentData documentData = new DocumentData();
                            documentData.DocumentPracticeGroup = dt;
                            documentDataList2.Add(documentData);
                        }
                    }
                }
                if (uniqueColumnName.Equals(colList.GetSection("documentMatterName").Key))
                {
                    if (!string.IsNullOrWhiteSpace(searchRequestVM.SearchObject.FilterValue))
                    {
                        documentDataList = (documentDataList.Where(d => d.DocumentMatterName.ToLower().Contains(searchRequestVM.SearchObject.FilterValue.ToLower()))).ToList();
                        var data1 = documentDataList.Select(o => o.DocumentMatterName).Distinct().ToList();
                        foreach (var dt in data1)
                        {
                            DocumentData documentData = new DocumentData();
                            documentData.DocumentMatterName = dt;
                            documentDataList2.Add(documentData);
                        }
                    }
                }

                return documentDataList2;
            }
        }
コード例 #21
0
        public async Task<int> GetMyCounts(SearchRequestVM searchRequestVM)
        {
            searchRequestVM.SearchObject.Filters.FilterByMe = 1;
            var searchObject = searchRequestVM.SearchObject;
            // Encode all fields which are coming from js
            SearchUtility.EncodeSearchDetails(searchObject.Filters, false);
            // Encode Search Term
            searchObject.SearchTerm = (searchObject.SearchTerm != null) ?
                WebUtility.HtmlEncode(searchObject.SearchTerm).Replace(ServiceConstants.ENCODED_DOUBLE_QUOTES,
                ServiceConstants.DOUBLE_QUOTE) : string.Empty;

            var searchResultsVM = await matterRepositoy.GetMattersAsync(searchRequestVM);
            return searchResultsVM.TotalRows;
        }