cm.UpdateMatterUser = function()

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


        cm.UpdateMatterUser = function ($event, assignTeam) {
            // if (assignTeam.assignedUser && assignTeam.assignedUser != "") {

            var attornyCheck = true; //  validateAttornyUserRolesAndPermissions($event, assignTeam);
            attornyCheck = validateAttornyUserRolesAndPermission1(assignTeam, 'txtUser', 'save');

            if (attornyCheck) {
                cm.disableControls = true;
                assignTeam.status = "";
                cm.isFullControlePresent = true;
                assignTeam.disable = true;
                cm.canDeleteTheUser = true;
                assignTeam.updatedMatterUsersForMatter = {};
                assignTeam.updatedMatterUsersForOneNote = {};
                assignTeam.updatedMatterUsersForCalender = {};
                assignTeam.updatedMatterUsersForTask = {};
                assignTeam.updatedMatterUsersForSpecifiedList = {};
                assignTeam.updatedMatterUsersForStampedProp = {};

                assignTeam.updateSuccessCallList = 0;
                // cm.popupContainerBackground = "Show";
                if ($event) {
                    $event.stopPropagation();
                }

                var arrUserNames = [],
                  arrUserEmails = [],
                  arrTeamMembers = [],
                  roleInformation = {},
                  arrReadOnlyUsers = [],
                  sResponsibleAttorney = [],
                  sResponsibleAttorneyEmail = [];
                var arrRoles = [];
                var arrPermissions = [];
                var arrBlockUserNames = cm.matterProperties.matterObject.blockUserNames ? cm.matterProperties.matterObject.blockUserNames : ""
                var attornyCheck = true;
                if (!cm.globalSettings.isBackwardCompatible)
                { attornyCheck = validateTeamRoleAndPermission(assignTeam); }
                var validUsersCheck = validateSingleRowUsers(assignTeam);
                if (validUsersCheck) {
                    var checkUserDExists = validateUserExisitsSingleRow(assignTeam);
                    if (attornyCheck && validUsersCheck && checkUserDExists) {
                        if ("" !== assignTeam.assignedRole && "" !== assignTeam.assignedPermission) {
                            if (roleInformation.hasOwnProperty(assignTeam.assignedRole.name)) {
                                roleInformation[assignTeam.assignedRole.name] = roleInformation[assignTeam.assignedRole.name] + ";" + assignTeam.assignedUser;
                            }
                            else {
                                roleInformation[assignTeam.assignedRole.name] = assignTeam.assignedUser;
                            }
                        }
                    }

                    arrUserNames.push(getUserName(assignTeam.assignedUser.trim() + ";", true));
                    arrUserEmails.push(getUserName(assignTeam.assignedUser.trim() + ";", false));
                    arrTeamMembers.push(getUserName(assignTeam.assignedUser.trim() + ";", true).join(";"));
                    var User_Upload_Permissions = "Read";

                    if (assignTeam.assignedPermission.name.toLowerCase() === User_Upload_Permissions.toLowerCase()) {
                        arrReadOnlyUsers.push(getUserName(assignTeam.assignedUser.trim() + ";", false).join(";"), ";");
                    }
                    cm.userIDs = [];
                    cm.userIDs.push("txtAssign" + assignTeam.assigneTeamRowNumber);
                    arrRoles.push(assignTeam.assignedRole.name);
                    arrPermissions.push(assignTeam.assignedPermission.name);
                    if (assignTeam.assignedRole.mandatory) {
                        sResponsibleAttorney.push(getUserName(assignTeam.assignedUser + ";", true).join(";"));
                        sResponsibleAttorneyEmail.push(getUserName(assignTeam.assignedUser + ";", false).join(";"));
                    }
                    var arrUsersToRemoveFromMatter = [];


                    var usersToRemoveFromMatter = getDeletedUserDetailsFromMatter();
                    var arrUsersToRemoveFromMatter = [];
                    angular.forEach(usersToRemoveFromMatter, function (user) {
                        var userNames = getUserName(user.userName.trim() + ";", false);
                        userNames = cleanArray(userNames);
                        arrUsersToRemoveFromMatter.push(userNames);
                    });


                    assignTeam.updatedMatterUsersForMatter = {
                        Client: {
                            Url: cm.clientUrl,
                            Id: "",
                            Name: ""
                        },
                        Matter: {
                            Name: cm.matterName,
                            BlockUserNames: arrBlockUserNames,
                            AssignUserNames: arrUserNames,
                            AssignUserEmails: arrUserEmails,
                            Permissions: arrPermissions,
                            Roles: arrRoles,
                            Conflict: {
                                Identified: cm.sConflictScenario
                            },
                            FolderNames: [],
                            DefaultContentType: "",
                            ContentTypes: [],
                            Description: "",
                            Id: "",
                            MatterGuid: cm.matterProperties.matterObject.matterGuid

                        },
                        MatterDetails: {
                            PracticeGroup: "",
                            AreaOfLaw: "",
                            SubareaOfLaw: "",
                            ResponsibleAttorney: sResponsibleAttorney.join(";").replace(/;;/g, ";"),
                            ResponsibleAttorneyEmail: sResponsibleAttorneyEmail.join(";").replace(/;;/g, ";"),
                            UploadBlockedUsers: arrReadOnlyUsers,
                            TeamMembers: arrTeamMembers.join(";"),
                            RoleInformation: JSON.stringify(roleInformation)
                        },
                        EditMode: cm.isEdit,
                        UserIds: cm.userIDs,
                        SerializeMatter: "",
                        Status: "",
                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                        IsFullControlPresent: cm.isFullControlePresent,
                        MatterAssociatedInfo: "MatterLibrary"
                    }
                    assignTeam.updatedMatterUsersForOneNote = {
                        Client: {
                            Url: cm.clientUrl,
                            Id: "",
                            Name: ""
                        },
                        Matter: {
                            Name: cm.matterName,
                            BlockUserNames: arrBlockUserNames,
                            AssignUserNames: arrUserNames,
                            AssignUserEmails: arrUserEmails,
                            Permissions: arrPermissions,
                            Roles: arrRoles,
                            Conflict: {
                                Identified: cm.sConflictScenario
                            },
                            FolderNames: [],
                            DefaultContentType: "",
                            ContentTypes: [],
                            Description: "",
                            Id: "",
                            MatterGuid: cm.matterProperties.matterObject.matterGuid

                        },
                        MatterDetails: {
                            PracticeGroup: "",
                            AreaOfLaw: "",
                            SubareaOfLaw: "",
                            ResponsibleAttorney: sResponsibleAttorney.join(";").replace(/;;/g, ";"),
                            ResponsibleAttorneyEmail: sResponsibleAttorneyEmail.join(";").replace(/;;/g, ";"),
                            UploadBlockedUsers: arrReadOnlyUsers,
                            TeamMembers: arrTeamMembers.join(";"),
                            RoleInformation: JSON.stringify(roleInformation)
                        },
                        EditMode: cm.isEdit,
                        UserIds: cm.userIDs,
                        SerializeMatter: "",
                        Status: "",
                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                        IsFullControlPresent: cm.isFullControlePresent,
                        MatterAssociatedInfo: "_OneNote"
                    }
                    assignTeam.updatedMatterUsersForCalender = {
                        Client: {
                            Url: cm.clientUrl,
                            Id: "",
                            Name: ""
                        },
                        Matter: {
                            Name: cm.matterName,
                            BlockUserNames: arrBlockUserNames,
                            AssignUserNames: arrUserNames,
                            AssignUserEmails: arrUserEmails,
                            Permissions: arrPermissions,
                            Roles: arrRoles,
                            Conflict: {
                                Identified: cm.sConflictScenario
                            },
                            FolderNames: [],
                            DefaultContentType: "",
                            ContentTypes: [],
                            Description: "",
                            Id: "",
                            MatterGuid: cm.matterProperties.matterObject.matterGuid

                        },
                        MatterDetails: {
                            PracticeGroup: "",
                            AreaOfLaw: "",
                            SubareaOfLaw: "",
                            ResponsibleAttorney: sResponsibleAttorney.join(";").replace(/;;/g, ";"),
                            ResponsibleAttorneyEmail: sResponsibleAttorneyEmail.join(";").replace(/;;/g, ";"),
                            UploadBlockedUsers: arrReadOnlyUsers,
                            TeamMembers: arrTeamMembers.join(";"),
                            RoleInformation: JSON.stringify(roleInformation)
                        },
                        EditMode: cm.isEdit,
                        UserIds: cm.userIDs,
                        SerializeMatter: "",
                        Status: "",
                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                        IsFullControlPresent: cm.isFullControlePresent,
                        MatterAssociatedInfo: "_Calendar"
                    }
                    assignTeam.updatedMatterUsersForTask = {
                        Client: {
                            Url: cm.clientUrl,
                            Id: "",
                            Name: ""
                        },
                        Matter: {
                            Name: cm.matterName,
                            BlockUserNames: arrBlockUserNames,
                            AssignUserNames: arrUserNames,
                            AssignUserEmails: arrUserEmails,
                            Permissions: arrPermissions,
                            Roles: arrRoles,
                            Conflict: {
                                Identified: cm.sConflictScenario
                            },
                            FolderNames: [],
                            DefaultContentType: "",
                            ContentTypes: [],
                            Description: "",
                            Id: "",
                            MatterGuid: cm.matterProperties.matterObject.matterGuid

                        },
                        MatterDetails: {
                            PracticeGroup: "",
                            AreaOfLaw: "",
                            SubareaOfLaw: "",
                            ResponsibleAttorney: sResponsibleAttorney.join(";").replace(/;;/g, ";"),
                            ResponsibleAttorneyEmail: sResponsibleAttorneyEmail.join(";").replace(/;;/g, ";"),
                            UploadBlockedUsers: arrReadOnlyUsers,
                            TeamMembers: arrTeamMembers.join(";"),
                            RoleInformation: JSON.stringify(roleInformation)
                        },
                        EditMode: cm.isEdit,
                        UserIds: cm.userIDs,
                        SerializeMatter: "",
                        Status: "",
                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                        IsFullControlPresent: cm.isFullControlePresent,
                        MatterAssociatedInfo: "_Task"
                    }
                    assignTeam.updatedMatterUsersForSpecifiedList = {
                        Client: {
                            Url: cm.clientUrl,
                            Id: "",
                            Name: ""
                        },
                        Matter: {
                            Name: cm.matterName,
                            BlockUserNames: arrBlockUserNames,
                            AssignUserNames: arrUserNames,
                            AssignUserEmails: arrUserEmails,
                            Permissions: arrPermissions,
                            Roles: arrRoles,
                            Conflict: {
                                Identified: cm.sConflictScenario
                            },
                            FolderNames: [],
                            DefaultContentType: "",
                            ContentTypes: [],
                            Description: "",
                            Id: "",
                            MatterGuid: cm.matterProperties.matterObject.matterGuid

                        },
                        MatterDetails: {
                            PracticeGroup: "",
                            AreaOfLaw: "",
                            SubareaOfLaw: "",
                            ResponsibleAttorney: sResponsibleAttorney.join(";").replace(/;;/g, ";"),
                            ResponsibleAttorneyEmail: sResponsibleAttorneyEmail.join(";").replace(/;;/g, ";"),
                            UploadBlockedUsers: arrReadOnlyUsers,
                            TeamMembers: arrTeamMembers.join(";"),
                            RoleInformation: JSON.stringify(roleInformation)
                        },
                        EditMode: cm.isEdit,
                        UserIds: cm.userIDs,
                        SerializeMatter: "",
                        Status: "",
                        UsersNamesToRemove: arrUsersToRemoveFromMatter,
                        IsFullControlPresent: cm.isFullControlePresent,
                        MatterAssociatedInfo: "MatterPage"
                    }
                    assignTeam.updatedMatterUsersForStampedProp = {
                        Client: {
                            Url: cm.clientUrl,
                            Id: "",
                            Name: ""
                        },
                        Matter: {
                            Name: cm.matterName,
                            BlockUserNames: arrBlockUserNames,
                            AssignUserNames: arrUserNames,
                            AssignUserEmails: arrUserEmails,
                            Permissions: arrPermissions,
                            Roles: arrRoles,
                            Conflict: {
                                Identified: cm.sConflictScenario
                            },
                            FolderNames: [],
                            DefaultContentType: "",
                            ContentTypes: [],
                            Description: "",
                            Id: "",
                            MatterGuid: cm.matterProperties.matterObject.matterGuid

                        },
                        MatterDetails: {
                            PracticeGroup: "",
                            AreaOfLaw: "",
                            SubareaOfLaw: "",
                            ResponsibleAttorney: sResponsibleAttorney.join(";").replace(/;;/g, ";"),
                            ResponsibleAttorneyEmail: sResponsibleAttorneyEmail.join(";").replace(/;;/g, ";"),
                            UploadBlockedUsers: arrReadOnlyUsers,
                            TeamMembers: arrTeamMembers.join(";"),
                            RoleInformation: JSON.stringify(roleInformation)
                        },
                        EditMode: cm.isEdit,
                        UserIds: cm.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":
                                updateUserPermissionOnMatterListForRow(assignTeam);
                                break;
                            case "_onenote":
                                updateUserPermissionOnMatterOneNoteListForRow(assignTeam);
                                break;
                            case "_calendar":
                                updateUserPermissionOnMatterCalendarListForRow(assignTeam);
                                break;
                            case "_task":
                                updateUserPermissionOnMatterTaskListForRow(assignTeam);
                                break;
                            case "matterpage":
                                updateUserPermissionOnMatterSpecifiedListForRow(assignTeam);
                                break;
                        }
                    }

                }
                else {
                    assignTeam.disable = false;
                    cm.canDeleteTheUser = false;
                    assignTeam.status = "add";
                    cm.disableControls = false;
                }
            }
            else {
                cm.disableControls = false;
            }
            // }
        }