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(); };