in tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/Common/MatterProvision.cs [214:397]
public async Task<SearchResponseVM> GetMatters(SearchRequestVM searchRequestVM, ClientContext clientContext)
{
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, clientContext);
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());
}
//Added MatterDefault Content type to part of Matter Search results.
if (key.ToString().ToLower() == searchSettings.ManagedPropertyMatterDefaultContentType.ToLower())
{
// due to a change in search schema, this is failing with a null reference exception unless a managed property is mapped manually in search settings
// for more details see https://github.com/Microsoft/mattercenter/issues/759
// check for null until this mapping issue is addressed
ServiceUtility.AddProperty(matterData,
configuration.GetSection("Search").GetSection("SearchColumnsUIPickerForMatter").GetSection("matterDefaultContentType").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;
}
}