ChurchofJesusChristDev / ministering-assignments

Unofficial tool to send a friendly email for all assignments with plain-text contact information
https://churchofjesuschristdev.github.io/ministering-assignments/
1 stars 0 forks source link

toCSV() #6

Open coolaj86 opened 2 years ago

coolaj86 commented 2 years ago
var exported = {};
var csv = [
  [ "District", "Companions", "Families" ]
];

var members = assignments; // CJCD.toJSON();
var ships = [];
members.forEach(function (m) {
  var p = m.member

  if (exported[p.id]) {
    return;
  }
  exported[p.id] = true;

  m.companions.forEach(function (c) {
    if (exported[c.id]) {
      return;
    }
    exported[c.id] = true;

    ships.push(m);
  });
});

ships.sort(function (a, b) {
  if (a.district < b.district) {
    return -1;
  }
  if (a.district > b.district) {
    return 1;
  }
  return 0;
});

ships.forEach(function (m) {
  var p = m.member
  console.log(m);

  var mName = p.nickname || p.name;
  var mPhone = p.phone || p.email;
  var companions = [
    `${mName} ${mPhone}`
  ];
  m.companions.forEach(function (c) {
    var name = c.nickname || c.name;
    var phone = c.phone || c.email || '';
    companions.push(`${name} ${phone}`);
  });
  if (!m.assignments?.length) {
    console.log('skip');
    return;
  }

  csv.push([
    '"' + m.district + '"',
    '"' + companions.join('\n') + '"',
    '"' + m.assignments.map(function (a) {
      return a.nickname || a.name;
    }).join('\n') + '"',
  ]);
});

console.log(csv.map(function (row) {
  return row.join('\t');
}).join('\n'));
coolaj86 commented 2 years ago

TODO