Esempio n. 1
0
        /// <summary>
        /// Updates permissions on existing lists
        /// </summary>
        /// <param name="groupName">Group name</param>
        /// <param name="clientContext">Client context</param>
        private static void UpdateListPermissions(string groupName, ClientContext clientContext)
        {
            try
            {
                string permissionLevelName        = ConfigurationManager.AppSettings["MatterCenterContributePermission"];
                string permissionLevelDescription = ConfigurationManager.AppSettings["MatterCenterContributePermissionDescription"];
                if (CreateNewPermissionLevel(clientContext, permissionLevelName, permissionLevelDescription))
                {
                    ErrorMessage.ShowMessage(ConfigurationManager.AppSettings["UpdateList"], ErrorMessage.MessageType.Notification);
                    string[] lists     = ConfigurationManager.AppSettings["ListTitles"].Split(',');
                    int      listCount = lists.Count();
                    for (int iterator = 0; iterator < listCount; iterator++)
                    {
                        string listName = lists[iterator];
                        List   list     = GetListIfExists(clientContext, listName);

                        // Check if list already exists
                        if (null != list)
                        {
                            if (!list.HasUniqueRoleAssignments)
                            {
                                list.BreakRoleInheritance(true, true);
                                ErrorMessage.ShowMessage(string.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["RemovedPermission"], listName), ErrorMessage.MessageType.Notification);
                                clientContext.ExecuteQuery();
                            }

                            // remove group (Matter Center Users) from list
                            RoleAssignmentCollection collection = list.RoleAssignments;
                            clientContext.Load(collection, items => items.Include(item => item.Member.Title).Where(item => item.Member.Title == groupName));
                            clientContext.ExecuteQuery();

                            // Check if group is exists in list, then only remove it
                            if (0 < collection.Count())
                            {
                                collection.FirstOrDefault().DeleteObject();
                                clientContext.ExecuteQuery();
                                ErrorMessage.ShowMessage(string.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["RemovedGroup"], groupName, listName), ErrorMessage.MessageType.Notification);
                            }
                            else
                            {
                                ErrorMessage.ShowMessage(string.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["GroupFailure"], groupName, listName), ErrorMessage.MessageType.Notification);
                            }

                            // Assign new permission to group(Matter Center Users) & add that group to list

                            // 1. select new permission level
                            RoleDefinition matterCenterContribute = GetPermissionLevel(clientContext, permissionLevelName);

                            // 2. select Group (Matter Center Users)
                            RoleAssignment group = GetGroup(clientContext, groupName);

                            // 3. Check if permission level already added to group, if not then assign new permission level(Matter Center Contribute) to group
                            AssignPermissionLevelToGroup(clientContext, matterCenterContribute, group);

                            // 4. Add group into list
                            AddGroupToList(groupName, clientContext, list, matterCenterContribute);
                            ErrorMessage.ShowMessage(string.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["AddGroup"], group.Member.Title, listName), ErrorMessage.MessageType.Notification);

                            // 5. get list item and User who created it and assign full control to that user
                            AssignFullControltoListItem(clientContext, list);
                        }
                        else
                        {
                            ErrorMessage.ShowMessage(string.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["ListNotFound"], listName), ErrorMessage.MessageType.Error);
                        }
                    }
                }
                else
                {
                    ErrorMessage.ShowMessage(ConfigurationManager.AppSettings["PermissionFailure"], ErrorMessage.MessageType.Error);
                }
            }
            catch (Exception exception)
            {
                ErrorLogger.LogErrorToTextFile(errorFilePath, string.Concat(exception.Message, "\n", exception.StackTrace));
            }
        }