import { TrelloCreator } from './trelloCreator'; import { WekanCreator } from './wekanCreator'; import { CsvCreator } from './csvCreator'; import { Exporter } from './exporter'; import { getMembersToMap } from './wekanmapper'; Meteor.methods({ importBoard(board, data, importSource, currentBoard) { check(data, Object); check(importSource, String); check(currentBoard, Match.Maybe(String)); let creator; switch (importSource) { case 'trello': check(board, Object); creator = new TrelloCreator(data); break; case 'wekan': check(board, Object); creator = new WekanCreator(data); break; case 'csv': check(board, Array); creator = new CsvCreator(data); break; } // 1. check all parameters are ok from a syntax point of view //creator.check(board); // 2. check parameters are ok from a business point of view (exist & // authorized) nothing to check, everyone can import boards in their account // 3. create all elements return creator.create(board, currentBoard); }, }); Meteor.methods({ cloneBoard(sourceBoardId, currentBoardId) { check(sourceBoardId, String); check(currentBoardId, Match.Maybe(String)); const exporter = new Exporter(sourceBoardId); const data = exporter.build(); const additionalData = {}; //get the members to map const membersMapping = getMembersToMap(data); //now mirror the mapping done in finishImport in client/components/import/import.js: if (membersMapping) { const mappingById = {}; membersMapping.forEach(member => { if (member.wekanId) { mappingById[member.id] = member.wekanId; } }); additionalData.membersMapping = mappingById; } const creator = new WekanCreator(additionalData); //data.title = `${data.title } - ${ TAPi18n.__('copy-tag')}`; data.title = `${data.title}`; return creator.create(data, currentBoardId); }, });