Example #1
0
 private function isSudahAngket($applicant)
 {
     /* Cari Angket Session */
     $c = new Criteria();
     $c->add(AngketpmbSessionPeer::TEST_APPLICANT_ID, $applicant->getId(), Criteria::EQUAL);
     $angketSession = AngketpmbSessionPeer::doSelectOne($c);
     if (!$angketSession) {
         return false;
     }
     /* Cari soal-soal */
     $c = new Criteria();
     $c->addAscendingOrderByColumn(AngketpmbSoalPeer::ORDERING);
     $soal = AngketpmbSoalPeer::doSelect($c);
     $soalCount = AngketpmbSoalPeer::doCount($c);
     if (!$soal) {
         return false;
     }
     /* Cari Jawaban yang pernah dipilih sebelumnya */
     $c = new Criteria();
     $c->add(AngketpmbSessionAnswerPeer::SESSION_ID, $angketSession->getId(), Criteria::EQUAL);
     $angketAnswer = AngketpmbSessionAnswerPeer::doSelect($c);
     $answerCount = AngketpmbSessionAnswerPeer::doCount($c);
     if ($answerCount < $soalCount) {
         return false;
     }
     $answerSoalId = array();
     foreach ($angketAnswer as $a) {
         $answerSoalId[] = $a->getSoalId();
     }
     foreach ($soal as $s) {
         if (!in_array($s->getId(), $answerSoalId)) {
             return false;
         }
     }
     return true;
 }
Example #2
0
 public function executeSubmit()
 {
     header('Cache-Control: no-cache, must-revalidate');
     header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
     header('Content-type: application/json');
     $this->jsonwrapper = new jsonwrapper();
     /* Check sudah login atau belum */
     if (!$this->getUser()->isAuthenticated2('bo')) {
         $this->jsonwrapper->show_json_error('not login', 'Sorry, You must logged in to access this page.');
     }
     $user_id = $this->getContext()->getUser()->getAttribute('user_id', null, 'bo');
     /* Check apakah user terdaftar */
     $applicant = TestApplicantPeer::retrieveByPk($user_id);
     if (!$applicant) {
         $this->jsonwrapper->show_json_error('not register', 'Sorry, Please register first.');
     }
     /* check ada parameter question atau tidak */
     $data = $this->getRequestParameter('question');
     if (empty($data)) {
         $this->jsonwrapper->show_json_error('allQuestionError', 'Please choose an option.');
     }
     $errorAnswer = array();
     /* Cari Soal */
     $c = new Criteria();
     $c->addAscendingOrderByColumn(AngketpmbSoalPeer::ORDERING);
     $soal = AngketpmbSoalPeer::doSelect($c);
     if (!$soal) {
         $this->jsonwrapper->show_json_error('allQuestionError', 'Question is no longer exist. Please refresh the page.');
     }
     foreach ($soal as $s) {
         if (!array_key_exists($s->getId(), $data)) {
             $errorAnswer[] = array('id' => $s->getId(), 'message' => 'Please choose an option.');
         }
     }
     /* Start Transaction */
     $connection = Propel::getConnection('propel');
     $connection->begin();
     /* Getting or Creating Angket Session */
     $c = new Criteria();
     $c->add(AngketpmbSessionPeer::TEST_APPLICANT_ID, $applicant->getId(), Criteria::EQUAL);
     $angketSession = AngketpmbSessionPeer::doSelectOne($c);
     if (!$angketSession) {
         try {
             $angketSession = new AngketpmbSession();
             $angketSession->setTestApplicantId($applicant->getId());
             $angketSession->save();
         } catch (Exception $e) {
             $connection->rollback();
             $this->jsonwrapper->print_json(array('success' => 0, 'code' => 'processError', 'message' => 'Sorry, there is an error while saving your answer. Please trye again later', 'hideMessage' => 'Error while create applicant session'));
             die;
         }
     }
     /* check apakah ada pertanyaan yang belum dijawab */
     foreach ($data as $key => $value) {
         $soal = AngketpmbSoalPeer::retrieveByPk($key);
         /* Jika soal tidak ketemu */
         if (!$soal) {
             $errorAnswer[] = array('id' => $key, 'message' => 'Question is no longer exist. Please refresh the page.');
             continue;
         }
         /* Jika belum dijawab */
         if (empty($value)) {
             $errorAnswer[] = array('id' => $key, 'message' => 'Please choose an option.');
             continue;
         }
         /* Jika jawaban tidak ketemu */
         $option = AngketpmbOptionPeer::retrieveByPk($value);
         if (!$option) {
             $errorAnswer[] = array('id' => $key, 'message' => 'Option you choosed is no longer exist. Please refresh the page.');
             continue;
         }
         /* Jika jawaban bukan untuk soal ini */
         if ($option->getSoalId() != $soal->getId()) {
             $errorAnswer[] = array('id' => $key, 'message' => 'Option you choosed is not valid. Please refresh the page.');
             continue;
         }
         /* Mencari jawaban yang sudah pernah dijawab */
         $c = new Criteria();
         $c->add(AngketpmbSessionAnswerPeer::SESSION_ID, $angketSession->getId(), Criteria::EQUAL);
         $c->add(AngketpmbSessionAnswerPeer::SOAL_ID, $soal->getId(), Criteria::EQUAL);
         $angketAnswer = AngketpmbSessionAnswerPeer::doSelectOne($c);
         if ($angketAnswer) {
             /* Update */
             if ($angketAnswer->getOptionId() != $option->getId()) {
                 try {
                     $angketAnswer->setOptionId($option->getId());
                     $angketAnswer->save();
                 } catch (Exception $e) {
                     $connection->rollback();
                     $this->jsonwrapper->print_json(array('success' => 0, 'code' => 'processError', 'message' => 'Sorry, there is an error while saving your answer. Please trye again later', 'hideMessage' => 'Error while update applicant answer Id = ' . $angketAnswer->getId()));
                     die;
                 }
             }
         } else {
             /* Insert */
             try {
                 $angketAnswer = new AngketpmbSessionAnswer();
                 $angketAnswer->setSessionId($angketSession->getId());
                 $angketAnswer->setSoalId($soal->getId());
                 $angketAnswer->setOptionId($option->getId());
                 $angketAnswer->save();
             } catch (Exception $e) {
                 $connection->rollback();
                 $this->jsonwrapper->print_json(array('success' => 0, 'code' => 'processError', 'message' => 'Sorry, there is an error while saving your answer. Please trye again later', 'hideMessage' => 'Error while insert applicant answer SoalId = ' . $soal->getId()));
                 die;
             }
         }
     }
     if (count($errorAnswer) > 0) {
         $connection->rollback();
         $this->jsonwrapper->print_json(array('success' => 0, 'code' => 'someQuestionError', 'data' => $errorAnswer));
         die;
     }
     $connection->commit();
     $this->jsonwrapper->print_json(array('success' => 1, 'message' => 'Berhasil'));
     die;
 }
 public static function doSelectJoinAllExceptAngketpmbOption(Criteria $c, $con = null)
 {
     $c = clone $c;
     if ($c->getDbName() == Propel::getDefaultDB()) {
         $c->setDbName(self::DATABASE_NAME);
     }
     AngketpmbSessionAnswerPeer::addSelectColumns($c);
     $startcol2 = AngketpmbSessionAnswerPeer::NUM_COLUMNS - AngketpmbSessionAnswerPeer::NUM_LAZY_LOAD_COLUMNS + 1;
     AngketpmbSessionPeer::addSelectColumns($c);
     $startcol3 = $startcol2 + AngketpmbSessionPeer::NUM_COLUMNS;
     AngketpmbSoalPeer::addSelectColumns($c);
     $startcol4 = $startcol3 + AngketpmbSoalPeer::NUM_COLUMNS;
     $c->addJoin(AngketpmbSessionAnswerPeer::SESSION_ID, AngketpmbSessionPeer::ID);
     $c->addJoin(AngketpmbSessionAnswerPeer::SOAL_ID, AngketpmbSoalPeer::ID);
     $rs = BasePeer::doSelect($c, $con);
     $results = array();
     while ($rs->next()) {
         $omClass = AngketpmbSessionAnswerPeer::getOMClass();
         $cls = Propel::import($omClass);
         $obj1 = new $cls();
         $obj1->hydrate($rs);
         $omClass = AngketpmbSessionPeer::getOMClass();
         $cls = Propel::import($omClass);
         $obj2 = new $cls();
         $obj2->hydrate($rs, $startcol2);
         $newObject = true;
         for ($j = 0, $resCount = count($results); $j < $resCount; $j++) {
             $temp_obj1 = $results[$j];
             $temp_obj2 = $temp_obj1->getAngketpmbSession();
             if ($temp_obj2->getPrimaryKey() === $obj2->getPrimaryKey()) {
                 $newObject = false;
                 $temp_obj2->addAngketpmbSessionAnswer($obj1);
                 break;
             }
         }
         if ($newObject) {
             $obj2->initAngketpmbSessionAnswers();
             $obj2->addAngketpmbSessionAnswer($obj1);
         }
         $omClass = AngketpmbSoalPeer::getOMClass();
         $cls = Propel::import($omClass);
         $obj3 = new $cls();
         $obj3->hydrate($rs, $startcol3);
         $newObject = true;
         for ($j = 0, $resCount = count($results); $j < $resCount; $j++) {
             $temp_obj1 = $results[$j];
             $temp_obj3 = $temp_obj1->getAngketpmbSoal();
             if ($temp_obj3->getPrimaryKey() === $obj3->getPrimaryKey()) {
                 $newObject = false;
                 $temp_obj3->addAngketpmbSessionAnswer($obj1);
                 break;
             }
         }
         if ($newObject) {
             $obj3->initAngketpmbSessionAnswers();
             $obj3->addAngketpmbSessionAnswer($obj1);
         }
         $results[] = $obj1;
     }
     return $results;
 }
Example #4
0
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = AngketpmbSessionPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setTestApplicantId($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setCreated($arr[$keys[2]]);
     }
 }
 public function getAngketpmbSession($con = null)
 {
     include_once 'lib/model/om/BaseAngketpmbSessionPeer.php';
     if ($this->aAngketpmbSession === null && $this->session_id !== null) {
         $this->aAngketpmbSession = AngketpmbSessionPeer::retrieveByPK($this->session_id, $con);
     }
     return $this->aAngketpmbSession;
 }
 public static function retrieveByPKs($pks, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria();
         $criteria->add(AngketpmbSessionPeer::ID, $pks, Criteria::IN);
         $objs = AngketpmbSessionPeer::doSelect($criteria, $con);
     }
     return $objs;
 }