1010
1111class AttendanceRegistration
1212{
13- const MARK_STUDENT = "student " ;
14- const MARK_MARK = "attendanceMark " ;
15- const MARK_NOTE = "note " ;
16- const MARK_MINUTES_LATE = "minutesLate " ;
17- const MARK_SESSION_START_TIME = "sessionStartTime " ;
18- const ACADEMIC_UNIT = "academicUnit " ;
19- const INCLUDE_ACADEMIC_UNIT = "includeAcademicUnit " ;
20-
21- /**@var \Arbor\Api\Gateway\RestGateway $_gateway*/
13+ const MARK_STUDENT = 'student ' ;
14+ const MARK_MARK = 'attendanceMark ' ;
15+ const MARK_NOTE = 'note ' ;
16+ const MARK_MINUTES_LATE = 'minutesLate ' ;
17+ const MARK_SESSION_START_TIME = 'sessionStartTime ' ;
18+ const ACADEMIC_UNIT = 'academicUnit ' ;
19+ const INCLUDE_ACADEMIC_UNIT = 'includeAcademicUnit ' ;
20+ const INCLUDE_EXTRA_MARKS = 'includeExtraMarks ' ;
21+
22+ /** @var \Arbor\Api\Gateway\RestGateway $_gateway */
2223 protected $ _gateway ;
2324 protected $ _hydrator ;
2425 protected $ _marks = [];
@@ -52,7 +53,7 @@ public function awardAttendanceMark($student, $sessionStartTime, $attendanceMark
5253 ];
5354 }
5455
55- public function saveMarks ($ includeAcademicUnit = false )
56+ public function saveMarks ($ includeAcademicUnit = false , bool $ includeExtraMarks = false )
5657 {
5758 $ payload = [];
5859
@@ -61,7 +62,7 @@ public function saveMarks($includeAcademicUnit = false)
6162 foreach ($ this ->_marks as $ mark ) {
6263 $ markPayload = [];
6364
64- //Convert models to REST representations
65+ // Convert models to REST representations
6566 $ markPayload [self ::MARK_STUDENT ] = $ this ->getHydrator ()->extractArray ($ mark [self ::MARK_STUDENT ], true );
6667 $ markPayload [self ::MARK_MARK ] = $ this ->getHydrator ()->extractArray ($ mark [self ::MARK_MARK ], true );
6768
@@ -75,22 +76,26 @@ public function saveMarks($includeAcademicUnit = false)
7576
7677 $ markPayload [self ::INCLUDE_ACADEMIC_UNIT ] = $ includeAcademicUnit ;
7778
78- //Convert date to Y-m-d H:i:s string
79- /**@var \DateTime $sessionStartTime*/
79+ // Convert date to Y-m-d H:i:s string
80+ /** @var \DateTime $sessionStartTime */
8081 $ sessionStartTime = $ mark [self ::MARK_SESSION_START_TIME ];
8182 if (!$ sessionStartTime instanceof \DateTime) {
8283 throw new \InvalidArgumentException ("SessionStartTime must be an PHP DateTime object " );
8384 }
8485 $ markPayload [self ::MARK_SESSION_START_TIME ] = $ sessionStartTime ->format ("Y-m-d H:i:s " );
8586
86- //Only include optional minutesLate and note parameters if not set to NULL
87+ // Only include optional minutesLate and note parameters if not set to NULL
8788 if (isset ($ mark [self ::MARK_MINUTES_LATE ]) && !is_null ($ mark [self ::MARK_MINUTES_LATE ])) {
8889 $ markPayload [self ::MARK_MINUTES_LATE ] = $ mark [self ::MARK_MINUTES_LATE ];
8990 }
9091 if (isset ($ mark [self ::MARK_NOTE ]) && !is_null ($ mark [self ::MARK_NOTE ])) {
9192 $ markPayload [self ::MARK_NOTE ] = $ mark [self ::MARK_NOTE ];
9293 }
9394
95+ if ($ includeExtraMarks ) {
96+ $ markPayload [self ::INCLUDE_EXTRA_MARKS ] = $ includeExtraMarks ;
97+ }
98+
9499 $ payload ['request ' ]['marks ' ][] = $ markPayload ;
95100 }
96101
0 commit comments