$seatsAssigned = 0; if (!empty($buckets)) { //exams have been sorted based on priority and placed into buckets reprsenting exan dates foreach ($buckets as $dateBucket) { //iterate through each exam on a particular day foreach ($dateBucket as $exam) { $nrOfExamsInBucket++; //reinitalize flags for each bucket $hasConflicts = false; $noAccommodations = false; $found = false; //iterate through each active seat and check whether to seat is eligible foreach ($seats as $seat) { //retrieve accommodation data and sheduling conflicts if applicable $conflicts = $assignments->getConflicts($exam['request_id'], $seat['seat_id'], $exam['official_evaluation_starttime'], $exam['official_evaluation_endtime']); $examAccs = $model->getExamAccommodationsById($exam['request_id']); $seatAccs = $seatManagement->getSeatAccommodations($seat['seat_id']); //case where the seat is suitable, increment statistical values, assign this exam to the seat, and generate a log entry for the success if (!$conflicts && $assignments->seatHasAccommodations($examAccs, $seatAccs)) { $found = true; $examsScheduled++; $seatsAssigned++; $assignments->assignSeat($exam['request_id'], $seat['seat_id']); $logEntry = array('successful' => 1, 'exam_request_id' => $exam['request_id'], 'assigned_seat_id' => $seat['seat_id'], 'message_id' => '5'); $assignments->updateLog($logEntry); break; } //otherwise store flags for the reason of failure if (!$assignments->seatHasAccommodations($examAccs, $seatAccs)) { $noAccommodations = true; }
//get all exam requests $allRequests = $model->getExamRequestsInRange($startDate, $endDate); $buildings = $seatManagement->getAllBuildings(); foreach ($allRequests as &$req) { $req["dropped"] = $model->determineDropped($req); $req['proctor_status'] = \Ventus\Proctor\Proctor::determineStatus(array("is_cancelled" => $req['is_cancelled'], "proctor_initiated" => $req['proctor_initiated'], "official_evaluation_starttime" => \DateTime::createFromFormat(DATETIME_MYSQL, $req['official_evaluation_starttime']), "official_evaluation_endtime" => \DateTime::createFromFormat(DATETIME_MYSQL, $req['official_evaluation_endtime']), "actual_evaluation_starttime" => \DateTime::createFromFormat(DATETIME_MYSQL, $req['actual_evaluation_starttime']), "actual_evaluation_endtime" => \DateTime::createFromFormat(DATETIME_MYSQL, $req['actual_evaluation_endtime']))); } unset($req); $l10n->addResource(__DIR__ . '/l10n/confirmed-requests.json'); $l10n->localizeArray($allRequests, 'accommodations'); $viewFile = 'views/confirmed-requests.php'; } else { if ($_GET['page'] === "fetch-request-details") { //gather request and accommodation data $request = $model->getExamRequestById($_POST['request_id']); $examAccs = $model->getExamAccommodationsById($_POST['request_id']); $studentAccs = $model->getAllStudentActiveExamAndTranscriptionAccommodations($_POST['student_id'], $_POST['exam_date'], $request[0]['course_code'], $request[0]['course_section'], $request[0]['session']); if (!empty($studentAccs)) { $studentAccs = array_values($studentAccs); } $l10n->addResource(__DIR__ . '/l10n/confirmed-requests.json'); $l10n->localizeArray($examAccs, 'name'); $l10n->localizeArray($studentAccs, 'name'); //set up response array $details = array("request" => $request, "exam_accommodations" => $examAccs, "student_accommodations" => $studentAccs); //if the request also has a seat associated with it recover the appropriate room and seat information if (!is_null($request[0]['seat_id'])) { //gather room and seat data $rooms = $seatManagement->getRooms($request[0]['building_id']); $seats = $seatManagement->getSeatsForRoom($request[0]['room_id']); $details['rooms'] = $rooms;