예제 #1
0
 /**
  * Assigns a test taker to a delivery
  *
  * @throws \common_Exception
  * @throws \oat\oatbox\service\ServiceNotFoundException
  */
 public function assignTestTakers()
 {
     $deliveryId = $this->getRequestParameter('delivery');
     $testTakers = $this->getRequestParameter('testtaker');
     $testCenterId = $this->getRequestParameter('testCenter');
     if (!is_array($testTakers)) {
         $testTakers = array($testTakers);
     }
     try {
         $added = DeliveryHelper::assignTestTakers($testTakers, $deliveryId, $testCenterId);
         $notAdded = array_diff($testTakers, $added);
         $this->returnJson(array('success' => !count($notAdded), 'processed' => $added, 'unprocessed' => $notAdded));
     } catch (ServiceNotFoundException $e) {
         \common_Logger::w('No delivery service defined for proctoring');
         $this->returnError('Proctoring interface not available');
     }
 }
$i = 0;
$proctorNum = 1;
$ttNum = 1;
$subClass = $testTakerService->createSubClass($testTakerService->getRootClass(), 'jmeter_test_taker_' . $totalTtNum);
while ($i < $totalProctorNum) {
    if ($userService->loginAvailable('Jmeter_proctor_' . $proctorNum)) {
        $tts = array();
        //create sample group
        $testCenter = $testCenterService->createInstance(new \core_kernel_classes_Class($testCenterService::CLASS_URI), 'jmeter_test_center_' . $proctorNum);
        $proctor = $userService->addUser('Jmeter_proctor_' . $proctorNum, 'Jmeter_proctor_' . $proctorNum, new \core_kernel_classes_Resource("http://www.tao.lu/Ontologies/TAOProctor.rdf#ProctorRole"), $userClass);
        $proctor->setPropertyValue(new core_kernel_classes_Property($proctorManagementService::PROPERTY_ASSIGNED_PROCTOR_URI), $testCenter);
        $proctor->setPropertyValue(new core_kernel_classes_Property($proctorManagementService::PROPERTY_ADMINISTRATOR_URI), $testCenter);
        $i++;
        $j = 0;
        while ($j < $ttByProctor) {
            if ($userService->loginAvailable('jmeter_TT_' . $ttNum)) {
                $tt = $testTakerCrudService->createFromArray(array(PROPERTY_USER_LOGIN => 'jmeter_TT_' . $ttNum, PROPERTY_USER_PASSWORD => 'jmeter_TT_' . $ttNum, RDFS_LABEL => 'jmeter_tt' . $ttNum, PROPERTY_USER_FIRSTNAME => 'jmeter_tt_' . $ttNum, PROPERTY_USER_LASTNAME => 'jmeter_tt_' . $ttNum, RDF_TYPE => $subClass));
                $tts[] = $tt->getUri();
                $j++;
            }
            $ttNum++;
        }
        $testCenterService->addTestTaker($tt->getUri(), $testCenter);
        //add delivery to eligible list
        \oat\taoProctoring\model\EligibilityService::singleton()->createEligibility($testCenter, $delivery);
        \oat\taoProctoring\model\EligibilityService::singleton()->setEligibleTestTakers($testCenter, $delivery, $tts);
        //assign tt to delivery
        \oat\taoProctoring\helpers\DeliveryHelper::assignTestTakers($tts, $delivery->getUri(), $testCenter->getUri());
    }
    $proctorNum++;
}