Exemplo n.º 1
0
        /// <summary>
        /// Assigns field values for specified content types to the specified matter (document library).
        /// </summary>
        /// <param name="clientContext">SP client context</param>
        /// <param name="contentTypeCollection">Collection of content types</param>
        /// <param name="matterList">List containing matters</param>
        /// <param name="matterMetadata">Object containing metadata for Matter</param>
        private void SetFieldValues(ClientContext clientContext, IList <ContentType> contentTypeCollection, List matterList,
                                    MatterMetadata matterMetadata)
        {
            try
            {
                FieldCollection fields = GetContentType(clientContext, contentTypeCollection, matterList);
                if (null != fields)
                {
                    matterMetadata = GetWSSId(clientContext, matterMetadata, fields);
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientId).DefaultValue = matterMetadata.Client.Id;
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientId).SetShowInDisplayForm(true);
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientId).ReadOnlyField = true;
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientId).Update();
                    if (configuration.GetSection("General")["IsBackwardCompatible"].ToString().ToLower() == "false")
                    {
                        fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientName).SetShowInDisplayForm(true);
                        fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientName).DefaultValue  = matterMetadata.Client.Name;
                        fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientName).ReadOnlyField = true;
                        fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnClientName).Update();
                    }
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterId).DefaultValue = matterMetadata.Matter.Id;
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterId).SetShowInDisplayForm(true);
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterId).ReadOnlyField = true;
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterId).Update();
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterName).DefaultValue  = matterMetadata.Matter.Name;
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterName).ReadOnlyField = true;
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterName).SetShowInDisplayForm(true);
                    fields.GetByInternalNameOrTitle(contentTypesConfig.ContentTypeColumnMatterName).Update();

                    int levels = taxonomySettings.Levels;
                    //For the number of levels that are configured, get the configured column name and
                    //update the wssid, termname and id for the managed field
                    for (int i = 1; i <= levels; i++)
                    {
                        string columnName = configuration.GetSection("ContentTypes").GetSection("ManagedColumns")["ColumnName" + i];
                        fields.GetByInternalNameOrTitle(columnName).SetShowInDisplayForm(true);
                        ManagedColumn managedColumn = matterMetadata.ManagedColumnTerms[columnName];
                        fields.GetByInternalNameOrTitle(columnName).DefaultValue =
                            string.Format(CultureInfo.InvariantCulture, ServiceConstants.MetadataDefaultValue,
                                          managedColumn.WssId,
                                          managedColumn.TermName,
                                          managedColumn.Id);
                        fields.GetByInternalNameOrTitle(columnName).Update();
                    }
                    //To set the values of new content type site columns and update it in sharepoint .
                    //Update the values of site columns of Additional content type at Matter level
                    MatterExtraProperties matterExtraProperties = matterMetadata.MatterExtraProperties;;

                    foreach (var extraField in matterExtraProperties.Fields)
                    {
                        if (extraField.Type == "Text")
                        {
                            fields.GetByInternalNameOrTitle(extraField.FieldName).DefaultValue = extraField.FieldValue;
                            fields.GetByInternalNameOrTitle(extraField.FieldName).SetShowInDisplayForm(true);
                            fields.GetByInternalNameOrTitle(extraField.FieldName).Update();
                        }
                        else
                        {
                            fields.GetByInternalNameOrTitle(extraField.FieldName).DefaultValue = extraField.FieldValue;
                            fields.GetByInternalNameOrTitle(extraField.FieldName).Update();
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name,
                                      MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
        }