コード例 #1
0
ファイル: actions.class.php プロジェクト: taryono/school
 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;
 }
コード例 #2
0
ファイル: actions.class.php プロジェクト: taryono/school
 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;
 }
コード例 #3
0
 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(AngketpmbSessionAnswerPeer::ID, $pks, Criteria::IN);
         $objs = AngketpmbSessionAnswerPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
コード例 #4
0
 public function getAngketpmbSessionAnswersJoinAngketpmbOption($criteria = null, $con = null)
 {
     include_once 'lib/model/om/BaseAngketpmbSessionAnswerPeer.php';
     if ($criteria === null) {
         $criteria = new Criteria();
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collAngketpmbSessionAnswers === null) {
         if ($this->isNew()) {
             $this->collAngketpmbSessionAnswers = array();
         } else {
             $criteria->add(AngketpmbSessionAnswerPeer::SESSION_ID, $this->getId());
             $this->collAngketpmbSessionAnswers = AngketpmbSessionAnswerPeer::doSelectJoinAngketpmbOption($criteria, $con);
         }
     } else {
         $criteria->add(AngketpmbSessionAnswerPeer::SESSION_ID, $this->getId());
         if (!isset($this->lastAngketpmbSessionAnswerCriteria) || !$this->lastAngketpmbSessionAnswerCriteria->equals($criteria)) {
             $this->collAngketpmbSessionAnswers = AngketpmbSessionAnswerPeer::doSelectJoinAngketpmbOption($criteria, $con);
         }
     }
     $this->lastAngketpmbSessionAnswerCriteria = $criteria;
     return $this->collAngketpmbSessionAnswers;
 }
コード例 #5
0
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = AngketpmbSessionAnswerPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setSessionId($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setSoalId($arr[$keys[2]]);
     }
     if (array_key_exists($keys[3], $arr)) {
         $this->setOptionId($arr[$keys[3]]);
     }
 }