cm.removeAssignPermissionsRow = function()

in tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/wwwroot/app/matter/matterusers.controller.js [338:630]


        cm.removeAssignPermissionsRow = function (index) {
            if (!cm.disableControls) {
                cm.disableControls = true;
                var isStampedUser = false;
                //Check if the current row user has been saved to matter or not
                //If the user is present in stamped properties, then delete the user from matter and then
                //delete the row from the UI else remove the row from the UI directly with out hitting the server
                for (var t = 0; t < cm.stampedMatterUsers.length; t++) {
                    if (cm.stampedMatterUsers[t].userName == cm.assignPermissionTeams[index].assignedUser) {
                        isStampedUser = true;
                        break;
                    }
                }
                if (isStampedUser) {
                    if (validateAttornyUserRolesAndPermission1(cm.assignPermissionTeams[index], 'txtUser', 'delete')) {
                        var attornyCheck = true; //validateAttornyUserRolesAndPermissinsAfterRemoval(index);
                        if (attornyCheck) {
                            var remainingRows = cm.assignPermissionTeams.length;
                            if (1 < remainingRows) {
                                var usersToRemoveFromMatter = [];
                                var deletedUser = cm.assignPermissionTeams[index];
                                if (deletedUser.userAssignedToMatterStatus) {
                                    deletedUser.deleteUserForMatterList = {};
                                    deletedUser.deleteUserForMatterOneNote = {};
                                    deletedUser.deleteUserForMatterTask = {};
                                    deletedUser.deleteUserForMatterCalendar = {};
                                    deletedUser.deleteUserForMatterSpecifiedList = {};
                                    deletedUser.deleteUserForUpdateMatterStamped = {};
                                    deletedUser.deleteSuccessCallList = 0;
                                    deletedUser.status = "refresh";
                                    deletedUser.index = index;
                                    deletedUser.disable = true;
                                    var arrUsersToRemoveFromMatter = [];
                                    var userNames = getUserName(deletedUser.assignedUser.trim() + ";", false);
                                    userNames = cleanArray(userNames);
                                    arrUsersToRemoveFromMatter.push(userNames);


                                    deletedUser.deleteUserForMatterList = {
                                        Client: {
                                            Url: cm.clientUrl,
                                            Id: "",
                                            Name: ""
                                        },
                                        Matter: {
                                            Name: cm.matterName,
                                            Conflict: {
                                                Identified: cm.sConflictScenario
                                            },
                                            FolderNames: [],
                                            DefaultContentType: "",
                                            ContentTypes: [],
                                            Description: "",
                                            Id: "",
                                            MatterGuid: cm.matterProperties.matterObject.matterGuid
                                        },
                                        EditMode: cm.isEdit,
                                        UserIds: [],
                                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                                        IsFullControlPresent: cm.isFullControlePresent,
                                        MatterAssociatedInfo: "MatterLibrary"

                                    }
                                    deletedUser.deleteUserForMatterOneNote = {
                                        Client: {
                                            Url: cm.clientUrl,
                                            Id: "",
                                            Name: ""
                                        },
                                        Matter: {
                                            Name: cm.matterName,
                                            Conflict: {
                                                Identified: cm.sConflictScenario
                                            },
                                            FolderNames: [],
                                            DefaultContentType: "",
                                            ContentTypes: [],
                                            Description: "",
                                            Id: "",
                                            MatterGuid: cm.matterProperties.matterObject.matterGuid
                                        },
                                        EditMode: cm.isEdit,
                                        UserIds: [],
                                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                                        IsFullControlPresent: cm.isFullControlePresent,
                                        MatterAssociatedInfo: "_OneNote"

                                    }
                                    deletedUser.deleteUserForMatterTask = {
                                        Client: {
                                            Url: cm.clientUrl,
                                            Id: "",
                                            Name: ""
                                        },
                                        Matter: {
                                            Name: cm.matterName,
                                            Conflict: {
                                                Identified: cm.sConflictScenario
                                            },
                                            FolderNames: [],
                                            DefaultContentType: "",
                                            ContentTypes: [],
                                            Description: "",
                                            Id: "",
                                            MatterGuid: cm.matterProperties.matterObject.matterGuid
                                        },
                                        EditMode: cm.isEdit,
                                        UserIds: [],
                                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                                        IsFullControlPresent: cm.isFullControlePresent,
                                        MatterAssociatedInfo: "_Task"

                                    }
                                    deletedUser.deleteUserForMatterCalendar = {
                                        Client: {
                                            Url: cm.clientUrl,
                                            Id: "",
                                            Name: ""
                                        },
                                        Matter: {
                                            Name: cm.matterName,
                                            Conflict: {
                                                Identified: cm.sConflictScenario
                                            },
                                            FolderNames: [],
                                            DefaultContentType: "",
                                            ContentTypes: [],
                                            Description: "",
                                            Id: "",
                                            MatterGuid: cm.matterProperties.matterObject.matterGuid
                                        },
                                        EditMode: cm.isEdit,
                                        UserIds: [],
                                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                                        IsFullControlPresent: cm.isFullControlePresent,
                                        MatterAssociatedInfo: "_Calendar"

                                    }
                                    deletedUser.deleteUserForMatterSpecifiedList = {
                                        Client: {
                                            Url: cm.clientUrl,
                                            Id: "",
                                            Name: ""
                                        },
                                        Matter: {
                                            Name: cm.matterName,
                                            Conflict: {
                                                Identified: cm.sConflictScenario
                                            },
                                            FolderNames: [],
                                            DefaultContentType: "",
                                            ContentTypes: [],
                                            Description: "",
                                            Id: "",
                                            MatterGuid: cm.matterProperties.matterObject.matterGuid
                                        },
                                        EditMode: cm.isEdit,
                                        UserIds: [],
                                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                                        IsFullControlPresent: cm.isFullControlePresent,
                                        MatterAssociatedInfo: "MatterPage"

                                    }
                                    deletedUser.deleteUserForUpdateMatterStamped = {
                                        Client: {
                                            Url: cm.clientUrl,
                                            Id: "",
                                            Name: ""
                                        },
                                        Matter: {
                                            Name: cm.matterName,
                                            BlockUserNames: [],
                                            AssignUserNames: [],
                                            AssignUserEmails: [],
                                            Permissions: [],
                                            Roles: [],
                                            Conflict: {
                                                Identified: cm.sConflictScenario
                                            },
                                            FolderNames: [],
                                            DefaultContentType: "",
                                            ContentTypes: [],
                                            Description: "",
                                            Id: "",
                                            MatterGuid: cm.matterProperties.matterObject.matterGuid
                                        },
                                        MatterDetails: {
                                            PracticeGroup: "",
                                            AreaOfLaw: "",
                                            SubareaOfLaw: "",
                                            ResponsibleAttorney: "",
                                            ResponsibleAttorneyEmail: "",
                                            UploadBlockedUsers: [],
                                            TeamMembers: "",
                                            RoleInformation: ""
                                        },
                                        EditMode: cm.isEdit,
                                        UserIds: [],
                                        SerializeMatter: "",
                                        Status: "",
                                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                                        IsFullControlPresent: cm.isFullControlePresent,
                                        MatterAssociatedInfo: "StampedProperties"

                                    }

                                    for (var i = 0; i < cm.matterList.length; i++) {
                                        var listName = cm.matterList[i].toLowerCase();
                                        switch (listName.toLowerCase()) {
                                            case "matterlibrary":
                                                deleteUserFromMatter(deletedUser.deleteUserForMatterList, function (response) {
                                                    if (!response.isError) {
                                                        deletedUser.deleteSuccessCallList++
                                                        if (deletedUser.deleteSuccessCallList == cm.matterList.length) {
                                                            DeleteUserFromMatterStampedProperties(deletedUser);
                                                        }
                                                    }
                                                });
                                                break;
                                            case "_onenote":
                                                deleteUserFromMatter(deletedUser.deleteUserForMatterOneNote, function (response) {
                                                    if (!response.isError) {
                                                        deletedUser.deleteSuccessCallList++
                                                        if (deletedUser.deleteSuccessCallList == cm.matterList.length) {
                                                            DeleteUserFromMatterStampedProperties(deletedUser);
                                                        }
                                                    }

                                                });
                                                break;
                                            case "_task":
                                                deleteUserFromMatter(deletedUser.deleteUserForMatterTask, function (response) {
                                                    if (!response.isError) {
                                                        deletedUser.deleteSuccessCallList++
                                                        if (deletedUser.deleteSuccessCallList == cm.matterList.length) {
                                                            DeleteUserFromMatterStampedProperties(deletedUser);
                                                        }
                                                    }

                                                });
                                                break;
                                            case "_calendar":
                                                deleteUserFromMatter(deletedUser.deleteUserForMatterCalendar, function (response) {
                                                    if (!response.isError) {
                                                        deletedUser.deleteSuccessCallList++
                                                        if (deletedUser.deleteSuccessCallList == cm.matterList.length) {
                                                            DeleteUserFromMatterStampedProperties(deletedUser);
                                                        }
                                                    }

                                                });
                                                break;
                                            case "matterpage":
                                                deleteUserFromMatter(deletedUser.deleteUserForMatterSpecifiedList, function (response) {
                                                    if (!response.isError) {
                                                        deletedUser.deleteSuccessCallList++
                                                        if (deletedUser.deleteSuccessCallList == cm.matterList.length) {
                                                            DeleteUserFromMatterStampedProperties(deletedUser);
                                                        }
                                                    }

                                                });
                                                break;
                                        }
                                    }


                                }
                                else {
                                    cm.assignPermissionTeams.splice(index, 1);
                                    cm.stampedMatterUsers.splice(index, 1);
                                }

                            }
                            cm.notificationPopUpBlock = false;
                            cm.notificationBorder = "";
                        }
                        else {
                            cm.disableControls = false;
                        }
                    }
                    else {
                        cm.disableControls = false;
                    }

                }
                else
                {
                    cm.assignPermissionTeams.splice(index, 1);
                    cm.disableControls = false;
                }
            }
        };