From c63c70ac6e0a54f0615ad706785f0ef3273446bc Mon Sep 17 00:00:00 2001 From: Lieuwe Rooijakkers Date: Sat, 25 Jun 2016 12:34:12 +0200 Subject: [PATCH 1/5] create Course class --- lib/classes/course.coffee | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lib/classes/course.coffee diff --git a/lib/classes/course.coffee b/lib/classes/course.coffee new file mode 100644 index 00000000..e1c0f6a0 --- /dev/null +++ b/lib/classes/course.coffee @@ -0,0 +1,63 @@ +###* +# @class Course +# @constructor +# @param {Date} from +# @param {Date} to +# @param {String} profile +# @param {String} userId +### +class @Course + constructor: (@from, @to, @profile, @userId) -> + ###* + # @property typeId + # @type Number|undefined + # @default undefined + ### + @typeId = undefined + + ###* + # @property externalId + # @type mixed + # @default undefined + ### + @externalId = undefined + + ###* + # @property fetchedBy + # @type String|undefined + # @default undefined + ### + @fetchedBy = undefined + + ###* + # @property lastUpdated + # @type Date|undefined + # @default undefined + ### + @lastUpdated = undefined + + ###* + # @method inside + # @param {Date} date + # @return {Boolean} + ### + inside: (date) -> @from <= date <= @to + + @schema: new SimpleSchema + from: + type: Date + to: + type: Date + profile: + type: String + userId: + type: String + typeId: + type: null + optional: yes + externalId: + type: null + optional: yes + fetchedBy: + type: String + optional: yes From 1180e6aace59a2ec380f1d91245e2acf586cb565 Mon Sep 17 00:00:00 2001 From: Lieuwe Rooijakkers Date: Sat, 25 Jun 2016 12:34:25 +0200 Subject: [PATCH 2/5] add `Serivce#updateCourse` --- .../server/functions.coffee | 1 + .../server/functions/courses.coffee | 15 ++++++++++++ packages/magister-binding/magister-binding.js | 24 ++++++++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 packages/external-services-connector/server/functions/courses.coffee diff --git a/packages/external-services-connector/server/functions.coffee b/packages/external-services-connector/server/functions.coffee index 16789de8..99d2b29f 100644 --- a/packages/external-services-connector/server/functions.coffee +++ b/packages/external-services-connector/server/functions.coffee @@ -48,3 +48,4 @@ export * from './functions/studyUtils.coffee' export * from './functions/messages.coffee' export * from './functions/profileData.coffee' export * from './functions/serviceUpdates.coffee' +export * from './functions/courses.coffee' diff --git a/packages/external-services-connector/server/functions/courses.coffee b/packages/external-services-connector/server/functions/courses.coffee new file mode 100644 index 00000000..d2596d26 --- /dev/null +++ b/packages/external-services-connector/server/functions/courses.coffee @@ -0,0 +1,15 @@ +import { Services, ExternalServicesConnector } from '../connector.coffee' + +###* +# @method updateCourses +# @param {String} userId +### +export updateCourses = (userId) -> + check userId, String + + services = _.filter Services, (s) -> s.updateCourse? and s.active userId + for serivce in services + try + service.updateCourse userId + catch e + ExternalServicesConnector.handleServiceError service.name, userId, e diff --git a/packages/magister-binding/magister-binding.js b/packages/magister-binding/magister-binding.js index d2607987..e071c6eb 100644 --- a/packages/magister-binding/magister-binding.js +++ b/packages/magister-binding/magister-binding.js @@ -1,6 +1,6 @@ /* global AbsenceInfo, Schools, Grade, StudyUtil, GradePeriod, ExternalPerson, CalendarItem, Assignment, ExternalFile, getClassInfos, - Message, ms, MagisterBinding, ServiceUpdate */ + Message, ms, MagisterBinding, ServiceUpdate, Course */ // One heck of a binding this is. @@ -249,6 +249,28 @@ function getCurrentCourse (magister) { return fut.wait(); } +/** + * @method updateCourse + * @param {String} userId + */ +MagisterBinding.updateCourse = function (userId) { + check(userId, String); + const magister = getMagisterObject(userId); + const c = getCurrentCourse(magister); + + const course = new Course(c.begin(), c.end(), c.profile(), userId); + course.profile = c.profile(); + course.typeId = c.type().id; + course.externalId = prefixId(magister, c.id()); + course.fetchedBy = MagisterBinding.name; + + course.lastUpdated = new Date(); + + MagisterBinding.storedInfo(userId, { + course: course, + }); +}; + /** * Get the grades for the given userId from Magister. * @method getGrades From 911dcd768265987aefd9171b4097a98a9156c1f7 Mon Sep 17 00:00:00 2001 From: Lieuwe Rooijakkers Date: Sat, 2 Jul 2016 17:06:24 +0200 Subject: [PATCH 3/5] external-services-connector: fix `updateCourses` --- .../server/functions/courses.coffee | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/external-services-connector/server/functions/courses.coffee b/packages/external-services-connector/server/functions/courses.coffee index d2596d26..22b4b713 100644 --- a/packages/external-services-connector/server/functions/courses.coffee +++ b/packages/external-services-connector/server/functions/courses.coffee @@ -3,13 +3,18 @@ import { Services, ExternalServicesConnector } from '../connector.coffee' ###* # @method updateCourses # @param {String} userId +# @return {Error[]} ### export updateCourses = (userId) -> check userId, String + errors = [] services = _.filter Services, (s) -> s.updateCourse? and s.active userId - for serivce in services + for service in services try service.updateCourse userId catch e ExternalServicesConnector.handleServiceError service.name, userId, e + errors.push e + + errors From 9f1c2748b9d9df401d28155df2d5f17c230ebe82 Mon Sep 17 00:00:00 2001 From: Lieuwe Rooijakkers Date: Sat, 2 Jul 2016 23:12:46 +0200 Subject: [PATCH 4/5] updateCourses -> getCourses --- .../server/functions/courses.coffee | 15 ++++++------ packages/magister-binding/magister-binding.js | 24 ++++++++++--------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/packages/external-services-connector/server/functions/courses.coffee b/packages/external-services-connector/server/functions/courses.coffee index 22b4b713..2a524733 100644 --- a/packages/external-services-connector/server/functions/courses.coffee +++ b/packages/external-services-connector/server/functions/courses.coffee @@ -1,20 +1,19 @@ import { Services, ExternalServicesConnector } from '../connector.coffee' ###* -# @method updateCourses +# @method getCourses # @param {String} userId -# @return {Error[]} +# @return {Course[]} ### -export updateCourses = (userId) -> +export getCourses = (userId) -> check userId, String - errors = [] + res = [] - services = _.filter Services, (s) -> s.updateCourse? and s.active userId + services = _.filter Services, (s) -> s.getCourses? and s.active userId for service in services try - service.updateCourse userId + res = res.concat service.getCourses userId catch e ExternalServicesConnector.handleServiceError service.name, userId, e - errors.push e - errors + res diff --git a/packages/magister-binding/magister-binding.js b/packages/magister-binding/magister-binding.js index e071c6eb..77667cf5 100644 --- a/packages/magister-binding/magister-binding.js +++ b/packages/magister-binding/magister-binding.js @@ -250,24 +250,26 @@ function getCurrentCourse (magister) { } /** - * @method updateCourse + * @method getCourses * @param {String} userId + * @return {Course} */ -MagisterBinding.updateCourse = function (userId) { +MagisterBinding.getCourses = function (userId) { check(userId, String); const magister = getMagisterObject(userId); - const c = getCurrentCourse(magister); + const courses = Meteor.wrapAsync(magister.courses, magister)(); - const course = new Course(c.begin(), c.end(), c.profile(), userId); - course.profile = c.profile(); - course.typeId = c.type().id; - course.externalId = prefixId(magister, c.id()); - course.fetchedBy = MagisterBinding.name; + return courses.map(function (c) { + const course = new Course(c.begin(), c.end(), c.profile(), userId); - course.lastUpdated = new Date(); + course.profile = c.profile(); + course.typeId = c.type().id; + course.externalId = prefixId(magister, c.id()); + course.fetchedBy = MagisterBinding.name; - MagisterBinding.storedInfo(userId, { - course: course, + course.lastUpdated = new Date(); + + return course; }); }; From 8727cd260dc10cc13dec8870a4f6b08eb93e1738 Mon Sep 17 00:00:00 2001 From: Lieuwe Rooijakkers Date: Sat, 2 Jul 2016 23:13:17 +0200 Subject: [PATCH 5/5] handle new school years using externalService courses Email is temp disabled, since I don't really know if all this stuff works cleanly. --- client/app/app.coffee | 10 -------- client/app/app.html | 29 ----------------------- client/app/setup/setup.coffee | 29 ++++------------------- server/cronJobs.coffee | 44 +++++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 63 deletions(-) diff --git a/client/app/app.coffee b/client/app/app.coffee index ed4b9586..e24656f6 100644 --- a/client/app/app.coffee +++ b/client/app/app.coffee @@ -18,16 +18,6 @@ class @App NotificationsManager.hideAll() # == Modals == -Template.newSchoolYearModal.helpers classes: -> classes() - -Template.newSchoolYearModal.events - "change": (event) -> - target = $(event.target) - checked = target.is ":checked" - classId = target.attr "classid" - - target.find("span").css color: if checked then "lightred" else "white" - Template.addTicketModal.helpers body: -> Session.get('addTicketModalContent') ? '' diff --git a/client/app/app.html b/client/app/app.html index 21209cf1..ae31460c 100644 --- a/client/app/app.html +++ b/client/app/app.html @@ -92,35 +92,6 @@ - -