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); } }
/// <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; }
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; } }
/// <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; } }
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; } }
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; }
public async Task<int> GetPinnedCounts(SearchRequestVM searchRequestVM) { var pinResponseVM = await matterRepositoy.GetPinnedRecordsAsync(searchRequestVM); return pinResponseVM.TotalRows; }
/// <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; }
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; } }
/// <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; }
/// <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; }
/// <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; } }
/// <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; }
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; } }
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); } }
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; } }
/// <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; } } }
/// <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; }
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; }
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; } }
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; }