1
1
/// <reference path="./lab.exec.d.ts" />
2
2
var lab = require ( './lab.js' ) ;
3
- var session = function ( ) {
4
- } ;
3
+ var student = require ( './lab.student.js' ) ;
4
+ var session = function ( ) { } ;
5
5
6
6
session . prototype . env = null ;
7
7
session . prototype . lab = null ;
8
+ session . prototype . student = null ;
8
9
/* init: pulls labFile and initializes session object from it
9
10
*/
10
- session . prototype . init = function ( user , labId , callback ) {
11
+ session . prototype . init = function ( user , userId , labId , callback ) {
11
12
var slf = this ;
12
13
this . env = require ( './lab.env.js' ) ;
13
14
this . env . setUser ( user ) ;
14
-
15
+
15
16
// Get Metadata from Database
16
17
var lab_data = Collections . labs . findOne ( { _id : labId } , { fields : { 'labfile' : 0 } } ) ;
18
+ var courseId = lab_data . course_id ;
19
+
20
+ //initialize student object
21
+ this . student = new student ( userId , labId , courseId ) ;
22
+
17
23
if ( ! lab_data || lab_data . length < 0 ) {
18
24
TuxLog . log ( "warn" , new Error ( "Lab not found" ) ) ;
19
25
callback ( new Error ( "Lab Not Found." ) , null ) ;
20
26
}
27
+
21
28
else {
22
29
// Get Course Metadata
23
30
var course = Collections . courses . findOne ( { _id : lab_data . course_id } , { fields : { 'labs' : 1 } } ) ;
@@ -53,7 +60,6 @@ session.prototype.init = function(user,labId,callback){
53
60
else {
54
61
slf . env . getPass ( function ( err , res ) {
55
62
if ( err ) {
56
- //TODO: err log in server/imports/api/lab.env.js:
57
63
//TODO: separate streams in env.js
58
64
callback ( err , null ) ;
59
65
}
@@ -102,7 +108,7 @@ session.prototype.start = function(callback){
102
108
. then ( function ( ) {
103
109
return new Promise ( function ( resolve , reject ) {
104
110
try {
105
- slf . lab . tasks ( this . env ) ;
111
+ slf . lab . tasks ( ) ;
106
112
resolve ( ) ;
107
113
}
108
114
catch ( e ) {
@@ -116,15 +122,14 @@ session.prototype.start = function(callback){
116
122
}
117
123
)
118
124
. then ( function ( ) {
119
- console . log ( "resolved" ) ;
120
125
if ( ! slf . lab . currentTask . next ) {
121
126
TuxLog . log ( 'warn' , new Error ( 'labfile tasks not properly chained at start' ) ) ;
122
127
callback ( new Error ( "labfile task chaining error" ) ) ;
123
128
}
124
129
125
130
else {
126
131
slf . lab . currentTask = slf . lab . currentTask . next ;
127
- slf . lab . currentTask . setupFn ( slf . env )
132
+ slf . lab . currentTask . setupFn ( slf . env , slf . student )
128
133
. then ( callback ( null ) , function ( err ) {
129
134
TuxLog . log ( "warn" , err ) ;
130
135
callback ( err ) } ) ;
@@ -136,6 +141,12 @@ session.prototype.start = function(callback){
136
141
} ) ;
137
142
}
138
143
144
+
145
+ session . prototype . verify = function ( callback ) {
146
+
147
+ slf . lab . currentTask . verifyFn ( slf . env , slf . student )
148
+ . then ( callback ( true ) , callback ( false ) ) ;
149
+ }
139
150
/* next: verifies that task is completed
140
151
* moves on to next task and runs callback(null,parseTasks) if completed
141
152
* runs callback(err,null) -err from verify- if not
@@ -151,10 +162,10 @@ session.prototype.next = function(callback){
151
162
152
163
//if it is not the last task...
153
164
else {
154
- slf . lab . currentTask . verifyFn ( slf . env )
165
+ slf . lab . currentTask . verifyFn ( slf . env , slf . student )
155
166
. then ( function ( ) {
156
167
slf . lab . currentTask = slf . lab . currentTask . next ;
157
- slf . lab . currentTask . setupFn ( slf . env )
168
+ slf . lab . currentTask . setupFn ( slf . env , slf . student )
158
169
. then ( function ( ) {
159
170
slf . lab . taskNo += 1 ;
160
171
callback ( null , slf . lab . taskNo ) ;
0 commit comments