in tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/SharePointInfo/Search.cs [264:449]
public SearchResponseVM GetPinnedData(SearchRequestVM searchRequestVM, string listName,
string listColumnName, bool isShowDocument, ClientContext clientContext)
{
////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();
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;
}
}