Example #1
0
 function addNew(form, name) {
   Dom.Dialog.open(AddClimber.$autoRender(Climber.build({org_id: App.orgId, name: name})), {focus: '[name=dateOfBirth]'});
 }
    const importCompetitor = ()=>{
      const name = get('First Name') + ' ' + get('Last Name');

      if (climbers[name] > 1)
        throw 'Name: "' + name + '" registered ' + climbers[name] + ' times';

      const meta = get('Fee level');

      const clubName = meta.split(',')[0].trim();

      const club = Team.query.where({name: clubName, teamType_id: clubTeamType._id}).fetchOne();
      if (club === undefined) throw "Can't find club '" + clubName + "'";

      const mCodes = /\[(.+)\]/.exec(meta);

      const codes = mCodes === null ? undefined : mCodes[1].trim().split(',');

      let gender = (codes && codes[0][0]) || null;
      gender = gender && gender.toLowerCase();

      const climber = Climber.query.where({name: name, org_id: event.org_id}).fetchOne() ||
            Climber.build({
              name: name, org_id: event.org_id, team_ids: [club._id],
              dateOfBirth: get('Birth Date').trim(),
              gender,
              uploadId: get('Participant ID'),
            });

      if (climber.dateOfBirth !== get('Birth Date').trim())
        throw "Climber's date-of-birth does not match: " + climber.dateOfBirth;

      if (! climber.$isValid())
        throw "Climber: " + Val.inspectErrors(climber);

      climber.$save();

      if (! (codes && codes.length))
        throw "Invalid or missing codes";

      const category_ids = [];

      codes.forEach(code =>{
        code = code.trim();
        var cat = Category.query.where({shortName: code, org_id: event.org_id}).fetchOne();
        if (! cat) {
          throw "Category not found: " + code;
        }
        category_ids.push(cat._id);
      });

      const competitor = Competitor.query
            .where({event_id: event._id, climber_id: climber._id}).fetchOne() ||
            Competitor.build({
              event_id: event._id,
              climber_id: climber._id,
              number: climber.number,
              team_ids: [club._id],
            });

      competitor.category_ids = category_ids.sort();
      competitor.$$save();
    };