From 64dda83e150af2097f4895f75d2248b55462e1f4 Mon Sep 17 00:00:00 2001
From: "j.goderbauer" <j.goderbauer@adito.de>
Date: Wed, 16 Sep 2020 16:07:34 +0200
Subject: [PATCH] MSTeams: Member: change role for internal member

---
 .../recordcontainers/jdito/onUpdate.js        | 33 +++++++++++++------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
index 07569b024b..f55e08ec25 100644
--- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
@@ -29,14 +29,9 @@ insertedTeamMembers.forEach(function (teamMember){
         }
         return;
     }
-    var memberAzureId = memberUser[tools.PARAMS][tools.TEAMS_AZUREID];
-    var memberUpn = memberUser[tools.PARAMS][tools.TEAMS_AZUREUPN];
-    if (!memberAzureId && memberUpn)
-        memberAzureId = teams.getInternalAzureId(memberUpn);
-    if (memberAzureId)
-    {
-        internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember["ROLE"] == "owner"));
-    }
+    var internalUserConfigToAdd = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner");
+    if (internalUserConfigToAdd)
+        internalMembers.push(internalUserConfigToAdd);
 });
 
 if (internalMembers.length !== 0)
@@ -47,8 +42,13 @@ if (externalMembers.length !== 0)
 
 changedTeamMembers.forEach(function (teamMember){
     var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]);
+    if (!memberUser)
+        return null;
     
-    //teams.changeRole(teamId, );
+    var internalUserConfigToChange = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner");
+    if (internalUserConfigToChange)
+        teams.changeRole(teamId, internalUserConfigToChange);
+    return null;//prevent designer warning
 });
 
 
@@ -60,4 +60,17 @@ var removeMembers = deletedTeamMembers.map(function (member)
 });
 
 if (removeMembers.length !== 0)
-    teams.removeInternalMembers(teamId, removeMembers);
\ No newline at end of file
+    teams.removeInternalMembers(teamId, removeMembers);
+
+function _getTeamsInternalUserConfig(pUserObject, pAsOwner)
+{
+    var memberAzureId = pUserObject[tools.PARAMS][tools.TEAMS_AZUREID];
+    var memberUpn = pUserObject[tools.PARAMS][tools.TEAMS_AZUREUPN];
+    if (!memberAzureId && memberUpn)
+        memberAzureId = teams.getInternalAzureId(memberUpn);
+    if (memberAzureId)
+    {
+        return teams.createInternalUserConfig(memberAzureId).setOwner(pAsOwner);
+    }
+    return null;
+}
\ No newline at end of file
-- 
GitLab