Example #1
0
 /**
  * @usage 写入被试的答卷信息
  * @param int $examinee_id
  * @param string $paper_name
  * @param string $option_str
  * @param array $number_array
  * @throws Exception
  * @return boolean
  */
 public static function insertQuestionAns($examinee_id, $paper_name, $option_str, $number_array, $time)
 {
     $project_id = self::getProjectId($examinee_id);
     if (!$project_id) {
         return false;
     }
     $paper_name = strtoupper($paper_name);
     switch ($paper_name) {
         case 'EPQA':
             self::checkEPQA($option_str, $number_array, $project_id);
             break;
         case 'EPPS':
             self::checkEPPS($option_str, $number_array, $project_id);
             break;
         case 'CPI':
             self::checkCPI($option_str, $number_array, $project_id);
             break;
         case '16PF':
             self::checkKS($option_str, $number_array, $project_id);
             break;
         case 'SCL':
             self::checkSCL($option_str, $number_array, $project_id);
             break;
         case 'SPM':
             self::checkSPM($option_str, $number_array, $project_id);
             break;
         default:
             throw new Exception(self::$error_state . '-不存在试卷-' . $paper_name);
     }
     $paper_id = MemoryCache::getPaperDetail($paper_name)->id;
     try {
         // Create a transaction manager
         $manager = new TxManager();
         // Request a transaction
         $transaction = $manager->get();
         $question_ans = new QuestionAns();
         #将事务设置到每一次的new之后
         $question_ans->setTransaction($transaction);
         $question_ans->option = $option_str;
         $question_ans->paper_id = $paper_id;
         $question_ans->examinee_id = $examinee_id;
         $question_ans->question_number_list = implode("|", $number_array);
         $question_ans->time = $time;
         if ($question_ans->save() == false) {
             $transaction->rollback(self::$error_state . '-数据库插入失败-' . print_r($question_ans, true));
         }
         $transaction->commit();
         return true;
     } catch (TxFailed $e) {
         throw new Exception($e->getMessage());
     }
 }