From 513e19046c5de281a6df9586ed855715c3b1ef8c Mon Sep 17 00:00:00 2001 From: Yaman Qalieh Date: Fri, 12 Aug 2016 12:13:26 -0400 Subject: [PATCH] formatted code --- hourglass/server/main.js | 339 +++++++++++++++++++++++---------------- 1 file changed, 199 insertions(+), 140 deletions(-) diff --git a/hourglass/server/main.js b/hourglass/server/main.js index 7fae929..8d55b7a 100644 --- a/hourglass/server/main.js +++ b/hourglass/server/main.js @@ -1,159 +1,218 @@ -import { Meteor } from 'meteor/meteor'; -import { Mongo } from 'meteor/mongo'; +import { + Meteor +} from 'meteor/meteor'; +import { + Mongo +} from 'meteor/mongo'; _uuid4 = function(cc) { - var rr = Math.random() * 16 | 0; + var rr = Math.random() * 16 | 0; return (cc === 'x' ? rr : (rr & 0x3 | 0x8)).toString(16); }; worktype = ["test", "quiz", "project", "normal"]; Meteor.methods({ - 'genCode': function() { - return 'xxxxxx'.replace(/[x]/g, _uuid4); - }, - 'createSchool': function(schoolname) { - // if superadmin, no need for approval - if (Meteor.user() !== null && - schools.findOne({name:input.school}) !== null && - schools.findOne({status: false, creator: Meteor.userId()}) !== null) { + 'genCode': function() { + return 'xxxxxx'.replace(/[x]/g, _uuid4); + }, + 'createSchool': function(schoolname) { + // if superadmin, no need for approval + if (Meteor.user() !== null && + schools.findOne({ + name: input.school + }) !== null && + schools.findOne({ + status: false, + creator: Meteor.userId() + }) !== null) { - schools.insert({name: schoolname, status: false, creator: Meteor.userId()}); - } - }, - 'deleteSchool': function(schoolid) { - // alanning:roles implementation here - schools.remove({_id: schoolid}); - }, - 'createClass': function(input) { - // if superadmin, no need for approval - classes.schema.validate(input); - if(Meteor.user() !== null && - classes.find({status:false, admin:Meteor.userId()}).fetch().length < 5 && - schools.findOne({name:input.school}) !== null) { - - input.status = false; - input.subscribers = 0; - input.admin = Meteor.userId(); - if (input.privacy) { - Meteor.call('genCode', function(error, result) { - input.code = result; + schools.insert({ + name: schoolname, + status: false, + creator: Meteor.userId() + }); + } + }, + 'deleteSchool': function(schoolid) { + // alanning:roles implementation here + schools.remove({ + _id: schoolid }); - } else { - input.code = ""; - } - if (input.category != "class" && input.category != "club") { - input.category = "other"; - } - input.moderators = []; - input.banned = []; - input.blockEdit = []; - classes.insert(input); - Meteor.call('joinClass',classes.findOne(input)._id, input.code, function(error,result){}); - return 1; - } else { - return 0; - } - }, - 'deleteClass': function(classid) { - found = classes.findOne({_id: classid}); - // Add roles - if (Meteor.user() !== null && found !== null && found.admin === Meteor.user()._id) { - classes.remove({_id: classid}); - } - }, - 'createWork': function(input) { - ref = new Date(); - month = ref.getMonth + 1; - ref = new Date(ref.getFullYear()+ "-" + month.toString() + "-" + ref.getDate()).getTime(); - work.schema.validate(input); - found = Meteor.findOne({_id: input.class}); + }, + 'createClass': function(input) { + // if superadmin, no need for approval + classes.schema.validate(input); + if (Meteor.user() !== null && + classes.find({ + status: false, + admin: Meteor.userId() + }).fetch().length < 5 && + schools.findOne({ + name: input.school + }) !== null) { - if (Meteor.user() !== null && - found !== null && - found.subscribers.indexOf(Meteor.userId()) != -1 && - found.banned.indexOf(Meteor.userId()) === -1 && - found.blockEdit.indexOf(Meteor.userId()) === -1 && - input.dueDate.getTime() >= ref && worktype.indexOf(type) != -1 && - input.name.length <= 50) { - - input.submittor = Meteor.userId(); - input.confirmations = [Meteor.userId()]; - input.reports = []; - input.done = []; - input.numberdone = 0; - work.insert(input); - } - - }, - 'deleteWork': function(workid) { - // Add security here - work.remove({_id: workid}); - }, - 'editProfile': function(change) { - current = Meteor.user().profile; - current.school = change.school; - current.grade = change.grade; - current.description = change.description; - current.avatar = change.avatar; - current.banner = change.banner; - current.preferences = change.preferences; - if (schools.findOne({name:current.school}) !== null && - Number.isInteger(current.grade) && - current.grade >= 9 && current.grade <= 12 && - current.description.length <= 50) { - - Meteor.users.update({_id: Meteor.userId()}, {$set: {profile: current}}); - return 1; - } else { - return 0; - } - }, - 'joinClass': function(input) { - change = input[0]; - pass = input[1]; - - if(Meteor.user().profile.classes === undefined) { - curr = Meteor.user().profile; - curr.classes = []; - Meteor.users.update({_id: Meteor.userId()}, {$set: {profile: curr}}); - } - prof = Meteor.user().profile; - found = classes.findOne({_id: change, status: true}); - if (Meteor.user() !== null && - found !== null && - pass === found.code && - !found.banned.includes(Meteor.userId()) && - !prof.classes.includes(change)) { - - current = Meteor.user().profile; - current.classes.append(change); - Meteor.users.update({_id: Meteor.userId()}, {$set: {profile: current}}); - return 1; - } else { - return 0; - } - }, - 'leaveClass': function(change) { - if (Meteor.user() !== null) { - profile = Meteor.user().profile; - index = profile.classes.indexOf(change); - if (index >= 0) { - if (classes.findOne({_id: change}).admin != Meteor.userId()) { - profile.classes.splice(index, 1); - Meteor.users.update({_id: Meteor.userId()}, {$set: {profile: current}}); + input.status = false; + input.subscribers = 0; + input.admin = Meteor.userId(); + if (input.privacy) { + Meteor.call('genCode', function(error, result) { + input.code = result; + }); + } else { + input.code = ""; + } + if (input.category != "class" && input.category != "club") { + input.category = "other"; + } + input.moderators = []; + input.banned = []; + input.blockEdit = []; + classes.insert(input); + Meteor.call('joinClass', classes.findOne(input)._id, input.code, function(error, result) {}); return 1; } else { - throw "You are currently the admin of this class. Transfer ownership in order to leave this class."; + return 0; } - } + }, + 'deleteClass': function(classid) { + found = classes.findOne({ + _id: classid + }); + // Add roles + if (Meteor.user() !== null && found !== null && found.admin === Meteor.user()._id) { + classes.remove({ + _id: classid + }); + } + }, + 'createWork': function(input) { + ref = new Date(); + month = ref.getMonth + 1; + ref = new Date(ref.getFullYear() + "-" + month.toString() + "-" + ref.getDate()).getTime(); + work.schema.validate(input); + found = Meteor.findOne({ + _id: input.class + }); + if (Meteor.user() !== null && + found !== null && + found.subscribers.indexOf(Meteor.userId()) != -1 && + found.banned.indexOf(Meteor.userId()) === -1 && + found.blockEdit.indexOf(Meteor.userId()) === -1 && + input.dueDate.getTime() >= ref && worktype.indexOf(type) != -1 && + input.name.length <= 50) { + + input.submittor = Meteor.userId(); + input.confirmations = [Meteor.userId()]; + input.reports = []; + input.done = []; + input.numberdone = 0; + work.insert(input); + } + + }, + 'deleteWork': function(workid) { + // Add security here + work.remove({ + _id: workid + }); + }, + 'editProfile': function(change) { + current = Meteor.user().profile; + current.school = change.school; + current.grade = change.grade; + current.description = change.description; + current.avatar = change.avatar; + current.banner = change.banner; + current.preferences = change.preferences; + if (schools.findOne({ + name: current.school + }) !== null && + Number.isInteger(current.grade) && + current.grade >= 9 && current.grade <= 12 && + current.description.length <= 50) { + + Meteor.users.update({ + _id: Meteor.userId() + }, { + $set: { + profile: current + } + }); + return 1; + } else { + return 0; + } + }, + 'joinClass': function(input) { + change = input[0]; + pass = input[1]; + + if (Meteor.user().profile.classes === undefined) { + curr = Meteor.user().profile; + curr.classes = []; + Meteor.users.update({ + _id: Meteor.userId() + }, { + $set: { + profile: curr + } + }); + } + prof = Meteor.user().profile; + found = classes.findOne({ + _id: change, + status: true + }); + if (Meteor.user() !== null && + found !== null && + pass === found.code && + !found.banned.includes(Meteor.userId()) && + !prof.classes.includes(change)) { + + current = Meteor.user().profile; + current.classes.append(change); + Meteor.users.update({ + _id: Meteor.userId() + }, { + $set: { + profile: current + } + }); + return 1; + } else { + return 0; + } + }, + 'leaveClass': function(change) { + if (Meteor.user() !== null) { + profile = Meteor.user().profile; + index = profile.classes.indexOf(change); + if (index >= 0) { + if (classes.findOne({ + _id: change + }).admin != Meteor.userId()) { + profile.classes.splice(index, 1); + Meteor.users.update({ + _id: Meteor.userId() + }, { + $set: { + profile: current + } + }); + return 1; + } else { + throw "You are currently the admin of this class. Transfer ownership in order to leave this class."; + } + } + + } } - } }); function has(array, has) { - for(var i = 0; i < array.length; i++) { - if(array[i] === has) return true; - } - return false; + for (var i = 0; i < array.length; i++) { + if (array[i] === has) return true; + } + return false; }