public GenericResponseVM UpdateMatter(MatterInformationVM matterInformation) { var matter = matterInformation.Matter; var matterDetails = matterInformation.MatterDetails; var client = matterInformation.Client; int listItemId = -1; string loggedInUserName = ""; bool isEditMode = matterInformation.EditMode; ClientContext clientContext = null; IEnumerable <RoleAssignment> userPermissionOnLibrary = null; GenericResponseVM genericResponse = null; try { clientContext = spoAuthorization.GetClientContext(matterInformation.Client.Url); PropertyValues matterStampedProperties = matterRepositoy.GetStampedProperties(clientContext, matter.Name); loggedInUserName = matterRepositoy.GetLoggedInUserDetails(clientContext).Name; bool isFullControlPresent = editFunctions.ValidateFullControlPermission(matter); if (!isFullControlPresent) { return(ServiceUtility.GenericResponse(errorSettings.IncorrectInputSelfPermissionRemoval, errorSettings.ErrorEditMatterMandatoryPermission)); } // Get matter library current permissions userPermissionOnLibrary = matterRepositoy.FetchUserPermissionForLibrary(clientContext, matter.Name); string originalMatterName = matterRepositoy.GetMatterName(clientContext, matter.Name); listItemId = matterRepositoy.RetrieveItemId(clientContext, matterSettings.MatterLandingPageRepositoryName, originalMatterName); List <string> usersToRemove = RetrieveMatterUsers(userPermissionOnLibrary); bool hasFullPermission = CheckFullPermissionInAssignList(matter.AssignUserNames, matter.Permissions, loggedInUserName); List <string> listExists = matterRepositoy.MatterAssociatedLists(clientContext, matter.Name); matterRepositoy.AssignRemoveFullControl(clientContext, matter, loggedInUserName, listItemId, listExists, true, hasFullPermission); bool result = false; if (listExists.Contains(matter.Name)) { result = matterRepositoy.UpdatePermission(clientContext, matter, usersToRemove, loggedInUserName, false, matter.Name, -1, isEditMode); } if (listExists.Contains(matter.Name + matterSettings.OneNoteLibrarySuffix)) { result = matterRepositoy.UpdatePermission(clientContext, matter, usersToRemove, loggedInUserName, false, matter.Name + matterSettings.OneNoteLibrarySuffix, -1, isEditMode); } if (listExists.Contains(matter.Name + matterSettings.CalendarNameSuffix)) { result = matterRepositoy.UpdatePermission(clientContext, matter, usersToRemove, loggedInUserName, false, matter.Name + matterSettings.CalendarNameSuffix, -1, isEditMode); } if (listExists.Contains(matter.Name + matterSettings.TaskNameSuffix)) { result = matterRepositoy.UpdatePermission(clientContext, matter, usersToRemove, loggedInUserName, false, matter.Name + matterSettings.TaskNameSuffix, -1, isEditMode); } if (0 <= listItemId) { result = matterRepositoy.UpdatePermission(clientContext, matter, usersToRemove, loggedInUserName, true, matterSettings.MatterLandingPageRepositoryName, listItemId, isEditMode); } // Update matter metadata result = matterRepositoy.UpdateMatterStampedProperties(clientContext, matterDetails, matter, matterStampedProperties, isEditMode); if (result) { return(genericResponse); } } catch (Exception ex) { MatterRevertList matterRevertListObject = new MatterRevertList() { MatterLibrary = matter.Name, MatterOneNoteLibrary = matter.Name + matterSettings.OneNoteLibrarySuffix, MatterCalendar = matter.Name + matterSettings.CalendarNameSuffix, MatterTask = matter.Name + matterSettings.TaskNameSuffix, MatterSitePages = matterSettings.MatterLandingPageRepositoryName }; matterRepositoy.RevertMatterUpdates(client, matter, clientContext, matterRevertListObject, loggedInUserName, userPermissionOnLibrary, listItemId, isEditMode); } return(ServiceUtility.GenericResponse("9999999", "Error in updating matter information")); }