Updated the models.
This commit is contained in:
@@ -2,10 +2,13 @@ import { Meteor } from 'meteor/meteor';
|
||||
import { Mongo } from 'meteor/mongo';
|
||||
import { check } from 'meteor/check';
|
||||
import {Sites} from "./sites";
|
||||
import { Roles } from 'meteor/alanning:roles';
|
||||
|
||||
export const Students = new Mongo.Collection('students');
|
||||
|
||||
if (Meteor.isServer) {
|
||||
Students.createIndex({id: 1}, {name: "External ID", unique: true});
|
||||
|
||||
// This code only runs on the server
|
||||
Meteor.publish('students', function(siteId) {
|
||||
return Students.find({siteId});
|
||||
@@ -13,6 +16,19 @@ if (Meteor.isServer) {
|
||||
}
|
||||
|
||||
Meteor.methods({
|
||||
/**
|
||||
* Sets a first name alias that can be overridden by the one that is imported.
|
||||
* @param _id The student's database ID.
|
||||
* @param alias The alias to set for the student.
|
||||
*/
|
||||
'students.setAlias'(_id, alias) {
|
||||
if(Roles.userIsInRole(Meteor.userId(), "admin", {anyScope:true})) {
|
||||
check(_id, String);
|
||||
check(alias, String);
|
||||
|
||||
Students.update({_id}, !alias || !alias.length() ? {$unset: {alias: true}} : {$set: {alias}});
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Expects the CSV string to contain comma delimited data in the form:
|
||||
* email, student ID, first name, last name, grade, first name alias, last name alias
|
||||
@@ -32,7 +48,7 @@ Meteor.methods({
|
||||
check(csv, String);
|
||||
check(siteId, String);
|
||||
|
||||
let site = Sites.find({_id: siteId});
|
||||
let site = Sites.findOne({_id: siteId});
|
||||
|
||||
if(site) {
|
||||
let lines = csv.split(/\r?\n/);
|
||||
@@ -45,16 +61,21 @@ Meteor.methods({
|
||||
skip = 2;
|
||||
} else {
|
||||
let values = line.split(/\s*,\s*/);
|
||||
let email = values[0];
|
||||
let id = values[1];
|
||||
let firstName = values[2];
|
||||
let lastName = values[3];
|
||||
let grade = values[4];
|
||||
let firstNameAlias = values[5];
|
||||
let lastNameAlias = values[6];
|
||||
let student = {email, id, firstName, lastName, grade, firstNameAlias, lastNameAlias};
|
||||
|
||||
console.log(student);
|
||||
if(values.length === 7) {
|
||||
let email = values[0];
|
||||
let id = values[1];
|
||||
let firstName = values[2];
|
||||
let lastName = values[3];
|
||||
let grade = parseInt(values[4], 10);
|
||||
let firstNameAlias = values[5];
|
||||
let active = true;
|
||||
let student = {siteId, email, id, firstName, lastName, grade, firstNameAlias, active};
|
||||
|
||||
// console.log(student);
|
||||
// Update or insert in the db.
|
||||
Students.upsert({id}, {$set: student});
|
||||
}
|
||||
|
||||
//TODO: Find existing student. Update student, and move them to the new site.
|
||||
//TODO: Create student if none exists.
|
||||
|
||||
Reference in New Issue
Block a user