csvMembersMapper.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { ReactiveCache } from '/imports/reactiveCache';
  2. export function csvGetMembersToMap(data) {
  3. // we will work on the list itself (an ordered array of objects) when a
  4. // mapping is done, we add a 'wekan' field to the object representing the
  5. // imported member
  6. const membersToMap = [];
  7. const importedMembers = [];
  8. let membersIndex;
  9. for (let i = 0; i < data[0].length; i++) {
  10. if (data[0][i].toLowerCase() === 'members') {
  11. membersIndex = i;
  12. }
  13. }
  14. for (let i = 1; i < data.length; i++) {
  15. if (data[i][membersIndex]) {
  16. for (const importedMember of data[i][membersIndex].split(' ')) {
  17. if (importedMember && importedMembers.indexOf(importedMember) === -1) {
  18. importedMembers.push(importedMember);
  19. }
  20. }
  21. }
  22. }
  23. for (let importedMember of importedMembers) {
  24. importedMember = {
  25. username: importedMember,
  26. id: importedMember,
  27. };
  28. const wekanUser = ReactiveCache.getUser({ username: importedMember.username });
  29. if (wekanUser) importedMember.wekanId = wekanUser._id;
  30. membersToMap.push(importedMember);
  31. }
  32. return membersToMap;
  33. }