summaryrefslogtreecommitdiffstats
path: root/client/components/import/csvMembersMapper.js
blob: cf8d5837592825e067ac0469b254227f002032de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
export function getMembersToMap(data) {
  // we will work on the list itself (an ordered array of objects) when a
  // mapping is done, we add a 'wekan' field to the object representing the
  // imported member

  const membersToMap = [];
  const importedMembers = [];
  let membersIndex;

  for (let i = 0; i < data[0].length; i++) {
    if (data[0][i].toLowerCase() === 'members') {
      membersIndex = i;
    }
  }

  for (let i = 1; i < data.length; i++) {
    if (data[i][membersIndex]) {
      for (const importedMember of data[i][membersIndex].split(' ')) {
        if (importedMember && importedMembers.indexOf(importedMember) === -1) {
          importedMembers.push(importedMember);
        }
      }
    }
  }

  for (let importedMember of importedMembers) {
    importedMember = {
      username: importedMember,
      id: importedMember,
    };
    const wekanUser = Users.findOne({ username: importedMember.username });
    if (wekanUser) importedMember.wekanId = wekanUser._id;
    membersToMap.push(importedMember);
  }

  return membersToMap;
}