Beispiel #1
0
 $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;
                 }
Beispiel #2
0
    //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;