in tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/SharePointInfo/SPList.cs [718:826]
public void SetUploadItemProperties(ClientContext clientContext, string documentLibraryName, string fileName,
string folderPath, Dictionary<string, string> mailProperties, MatterExtraProperties matterExtraProperties)
{
try
{
ListItemCollection items = null;
ListItem listItem = null;
if (null != clientContext && !string.IsNullOrEmpty(documentLibraryName) && !string.IsNullOrEmpty(fileName) && !string.IsNullOrEmpty(folderPath) && null != mailProperties)
{
Web web = clientContext.Web;
ListCollection lists = web.Lists;
CamlQuery query = new CamlQuery();
List selectedList = lists.GetByTitle(documentLibraryName);
string serverRelativePath = folderPath + ServiceConstants.FORWARD_SLASH + fileName;
query.ViewXml = string.Format(CultureInfo.InvariantCulture, camlQueries.GetAllFilesInFolderQuery, serverRelativePath);
items = selectedList.GetItems(query);
if (null != items)
{
clientContext.Load(items, item => item.Include(currentItem => currentItem.DisplayName, currentItem => currentItem.File.Name).Where(currentItem => currentItem.File.Name == fileName));
clientContext.ExecuteQuery();
if (0 < items.Count)
{
listItem = items[0];
if (null != mailProperties)
{
listItem[mailSettings.SearchEmailFrom] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_SENDER_KEY]) ? mailProperties[ServiceConstants.MAIL_SENDER_KEY].Trim() : string.Empty;
if (!string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_RECEIVED_DATEKEY]))
{
listItem[mailSettings.SearchEmailReceivedDate] = Convert.ToDateTime(mailProperties[ServiceConstants.MAIL_RECEIVED_DATEKEY].Trim(), CultureInfo.InvariantCulture).ToUniversalTime();
}
else
{
listItem[mailSettings.SearchEmailReceivedDate] = null;
}
listItem[mailSettings.SearchEmailCC] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_CC_ADDRESS_KEY]) ? mailProperties[ServiceConstants.MAIL_CC_ADDRESS_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailAttachments] = (string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_HAS_ATTACHMENTS_KEY]) || mailProperties[ServiceConstants.MAIL_HAS_ATTACHMENTS_KEY].Equals(ServiceConstants.TRUE, StringComparison.OrdinalIgnoreCase)) ? mailProperties[ServiceConstants.MAIL_ATTACHMENT_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailFromMailbox] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_SEARCH_EMAIL_FROM_MAILBOX_KEY]) ? mailProperties[ServiceConstants.MAIL_SEARCH_EMAIL_FROM_MAILBOX_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailSubject] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_SEARCH_EMAIL_SUBJECT]) ? mailProperties[ServiceConstants.MAIL_SEARCH_EMAIL_SUBJECT].Trim() : string.Empty;
listItem[mailSettings.SearchEmailTo] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_RECEIVER_KEY]) ? mailProperties[ServiceConstants.MAIL_RECEIVER_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailImportance] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_IMPORTANCE_KEY]) ? mailProperties[ServiceConstants.MAIL_IMPORTANCE_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailSensitivity] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_SENSITIVITY_KEY]) ? mailProperties[ServiceConstants.MAIL_SENSITIVITY_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailHasAttachments] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_HAS_ATTACHMENTS_KEY]) ? mailProperties[ServiceConstants.MAIL_HAS_ATTACHMENTS_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailConversationId] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_CONVERSATIONID_KEY]) ? mailProperties[ServiceConstants.MAIL_CONVERSATIONID_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailConversationTopic] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_CONVERSATION_TOPIC_KEY]) ? mailProperties[ServiceConstants.MAIL_CONVERSATION_TOPIC_KEY].Trim() : string.Empty;
listItem[mailSettings.SearchEmailCategories] = GetCategories(mailProperties[ServiceConstants.MAIL_CATEGORIES_KEY].Trim());
if (!string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_SENT_DATE_KEY]))
{
listItem[mailSettings.SearchEmailSentDate] = Convert.ToDateTime(mailProperties[ServiceConstants.MAIL_SENT_DATE_KEY].Trim(), CultureInfo.InvariantCulture).ToUniversalTime();
}
else
{
listItem[mailSettings.SearchEmailSentDate] = null;
}
listItem[mailSettings.SearchEmailOriginalName] = !string.IsNullOrWhiteSpace(mailProperties[ServiceConstants.MAIL_ORIGINAL_NAME]) ? mailProperties[ServiceConstants.MAIL_ORIGINAL_NAME] : string.Empty;
//Get all the fields of the document library to which document is getting uploaded.
if (matterExtraProperties != null)
{
string contentTypeName = matterExtraProperties.ContentTypeName;
//Get all site columns that are present in 'Additional Matter Properties' content type.
spContentTypes.AssignContentType(clientContext, contentTypeName, selectedList);
FieldCollection contentTypeFields = contentTypeName.GetFieldsInContentType(clientContext);
FieldCollection fields = GetMatterExtraDefaultSiteColumns(clientContext, selectedList);
if (fields != null && contentTypeFields != null && contentTypeFields.Count > 0)
{
foreach (var field in fields)
{
foreach (var contentTypeField in contentTypeFields)
{
//If document library field name is part of content type field name
//then update default value of tht column name to the value
//of that column name.
if (field.InternalName == contentTypeField.InternalName)
{
if (field.Group == contentTypesConfig.OneDriveContentTypeGroup)
{
string fieldValue = string.Empty;
if (matterExtraProperties != null && matterExtraProperties.Fields.Count > 0)
{
foreach (var extraProp in matterExtraProperties.Fields)
{
if (extraProp.FieldName == field.InternalName)
{
fieldValue = extraProp.FieldValue != null && extraProp.FieldValue != string.Empty ? extraProp.FieldValue : field.DefaultValue;
}
}
}
listItem[field.InternalName] = fieldValue != string.Empty ? fieldValue : field.DefaultValue;
}
}
}
}
}
}
}
listItem.Update();
clientContext.ExecuteQuery();
listItem.RefreshLoad();
}
}
}
}
catch (Exception exception)
{
customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name,
MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
throw;
}
}