UNCLASSIFIED

Commit c4c40088 authored by graham.smith's avatar graham.smith
Browse files

team changes

parent d9c28ce6
...@@ -24,14 +24,21 @@ export default { ...@@ -24,14 +24,21 @@ export default {
} }
}, },
async updateTeam(team, addPOC, editedMembers) { async updateTeam(team) {
console.log("UPDATING", team, addPOC, editedMembers); const { name, description, capacity } = team;
await HTTP.put(`/teams/${team.id}/members`, editedMembers); return HTTP.put(`/teams/${team.id}`, {
if (addPOC) { name,
await HTTP.post(`/teams/${team.id}/members`, addPOC); description,
}; capacity,
const response = await HTTP.put(`/teams/${team.id}`, team); });
return response; },
async updateTeamMembers(team) {
const membersBody = team.members.map((m) => ({
userId: m.id,
isTeamLead: m.TeamMember.isTeamLead,
}));
return HTTP.put(`/teams/${team.id}/members`, membersBody);
}, },
async deleteMembers(members, teamId) { async deleteMembers(members, teamId) {
......
...@@ -141,16 +141,16 @@ export default { ...@@ -141,16 +141,16 @@ export default {
// merge members and leads // merge members and leads
const members = new Map(); const members = new Map();
this.toAdd.members.forEach((member) => { this.toAdd.members.forEach((member) => {
member.TeamMember.isTeamLead = false; member.TeamMember = { isTeamLead: false };
members.set(member.id, member); members.set(member.id, member);
}); });
this.leads.forEach((lead) => { this.leads.forEach((lead) => {
lead.TeamMember.isTeamLead = true; lead.TeamMember = { isTeamLead: true };
members.set(lead.id, lead); members.set(lead.id, lead);
}); });
this.toAdd.members = members.values(); this.toAdd.members = [...members.values()];
this.$emit("edit", this.toAdd); this.$emit("edit", this.toAdd, this.leads);
this.init(); this.init();
}, },
}, },
......
...@@ -273,32 +273,35 @@ export default { ...@@ -273,32 +273,35 @@ export default {
inputRules, inputRules,
}), }),
async mounted() { async mounted() {
try { this.init();
this.loading = true; },
methods: {
async init() {
try {
this.loading = true;
// no team specified // no team specified
if (!this.$route.params.teamId) { if (!this.$route.params.teamId) {
// Admin and Dojo Master don't have a team, so redirect them since // Admin and Dojo Master don't have a team, so redirect them since
// they don't have a reason to be on this page without a specific id // they don't have a reason to be on this page without a specific id
this.user = this.$store.state.user.user; this.user = this.$store.state.user.user;
if (this.user.permission !== Permission.USER) { if (this.user.permission !== Permission.USER) {
console.warn("redirecting privileged user to /teams"); console.warn("redirecting privileged user to /teams");
this.$router.push("/teams"); this.$router.push("/teams");
} else {
// get the current user's team
this.team = await TeamService.getMyTeam();
}
} else { } else {
// get the current user's team console.log("THIS CANNOT BE ME");
this.team = await TeamService.getMyTeam(); await this.getTeams();
} }
} else { } catch (error) {
console.log("THIS CANNOT BE ME"); console.error("!user error!", error);
await this.getTeams(); } finally {
this.loading = false;
} }
} catch (error) { },
console.error("!user error!", error);
} finally {
this.loading = false;
}
},
methods: {
async getTeams() { async getTeams() {
if (this.initialLoad) { if (this.initialLoad) {
this.loading = true; this.loading = true;
...@@ -315,55 +318,16 @@ export default { ...@@ -315,55 +318,16 @@ export default {
}, },
async editTeam(editedTeam) { async editTeam(editedTeam) {
this.state.isEditingTeamDetailsBusy = true; this.state.isEditingTeamDetailsBusy = true;
//1 filtering out to only get IDs from various groups of users
const editMembersId = editedTeam.members.map((member) => member.id);
const newPOCId = editedTeam.poc.map((member) => member.id);
let currentPOCId = this.team.members.filter(
(member) => member.TeamMember.isTeamLead === true
);
currentPOCId = currentPOCId.map((member) => member.id);
console.log("ID", editMembersId);
const addTeamLeads =[];
const editTeamMembers = [];
//2 sorting throught the new team leads to decide whether or not they need to be added or updated to team leads
for (let i = 0; i < editedTeam.poc.length; i++) {
//adding
if (!editMembersId.includes(editedTeam.poc[i].id)) {
console.log("ADDING", editedTeam.poc[i].name)
addTeamLeads.push({ userId: editedTeam.poc[i].id, isTeamLead: true });
} //upgrading users
else if (
editMembersId.includes(editedTeam.poc[i].id) &&
!currentPOCId.includes(editedTeam.poc[i].id)
) {
console.log("UPGRADING", editedTeam.poc[i].name)
editTeamMembers.push({
userId: editedTeam.poc[i].id,
isTeamLead: true,
});
}
}
//seeing a person needs to be removed from team lead
editTeamMembers.concat(
currentPOCId.map(function (member) {
if (!newPOCId.includes(member)) {
console.log("DEMOTING", member);
return { userId: member, isTeamLead: false };
}
})
);
console.log("addTeamLeads", addTeamLeads);
console.log("REMOVE TEAM LEAD", editTeamMembers);
try { try {
this.team = await TeamService.updateTeam( await TeamService.updateTeam(editedTeam);
editedTeam, // the editedTeam.members will essentially just be the team leads
addTeamLeads, await TeamService.updateTeamMembers(editedTeam);
editTeamMembers
);
// success state // success state
this.snackbars.teamDetails = true; this.snackbars.teamDetails = true;
this.state.showEditDialog = false; this.state.showEditDialog = false;
this.init();
} catch (e) { } catch (e) {
// TODO: no error message to the user???
console.error("error editing team", e); console.error("error editing team", e);
} finally { } finally {
this.state.isEditingTeamDetailsBusy = false; this.state.isEditingTeamDetailsBusy = false;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment