/**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     Schema::table('factors', function (Blueprint $table) {
     });
     $newRow = new Factor();
     $newRow->factorname = 'Units';
     $newRow->save();
 }
Пример #2
0
 /**
  * Inverse calculation
  * 
  * Calculation is done for HR in [bpm] and time is transformed from [s] to [min].
  * 
  * @param int $bpm [bpm]
  * @param int $trimp value to reach
  */
 protected function calculate($bpm, $trimp)
 {
     $Factor = new Factor($this->Athlete->gender());
     $max = $this->Athlete->knowsMaximalHeartRate() ? $this->Athlete->maximalHR() : Calculator::DEFAULT_HR_MAX;
     $rest = $this->Athlete->knowsRestingHeartRate() ? $this->Athlete->restingHR() : Calculator::DEFAULT_HR_REST;
     $hr = max(0, ($bpm - $rest) / ($max - $rest));
     $sum = $trimp / ($hr * exp($Factor->B() * $hr));
     $this->value = 1 / $Factor->A() * $sum * 60;
 }
Пример #3
0
 /**
  * Calculate
  * 
  * Calculation is done for HR in [bpm] and time is transformed from [s] to [min].
  */
 protected function calculate()
 {
     $Factor = new Factor($this->Athlete->gender());
     $max = $this->Athlete->knowsMaximalHeartRate() ? $this->Athlete->maximalHR() : self::DEFAULT_HR_MAX;
     $rest = $this->Athlete->knowsRestingHeartRate() ? $this->Athlete->restingHR() : self::DEFAULT_HR_REST;
     $sum = 0;
     $B = $Factor->B();
     foreach ($this->Data as $bpm => $t) {
         $hr = max(0, ($bpm - $rest) / ($max - $rest));
         $sum += $t / 60 * $hr * exp($B * $hr);
     }
     $this->value = $Factor->A() * $sum;
 }
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     Schema::table('factors', function (Blueprint $table) {
         //
     });
     $newFactor = new Factor();
     $newFactor->factorname = "High Grades";
     $newFactor->save();
     $newFactor = new Factor();
     $newFactor->factorname = "Unemployment";
     $newFactor->save();
     $newFactor = new Factor();
     $newFactor->factorname = "Overloading";
     $newFactor->save();
 }
Пример #5
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function fire()
 {
     ini_set('max_execution_time', 0);
     $factorQuestions = Question::on('main')->where('id_question_type', QuestionType::TYPE_FACTOR)->get();
     $listIDAnswerFactor = [];
     foreach ($factorQuestions as $q) {
         $listIDAnswerFactor[] = QuestionAnswer::on('main')->where('id_question', $q->id)->lists('id_answer');
     }
     $listIDAnswerNormal = Question::on('main')->where('id_question_type', '!=', QuestionType::TYPE_FACTOR)->join('question_answer', 'question_answer.id_question', '=', 'questions.id')->distinct('id_answer')->orderBy('id_answer')->lists('id_answer');
     $keyGroup = [];
     foreach ($listIDAnswerFactor[0] as $fKey0) {
         foreach ($listIDAnswerFactor[1] as $fKey1) {
             foreach ($listIDAnswerFactor[2] as $fKey2) {
                 $arrTemp = [$fKey0, $fKey1, $fKey2];
                 sort($arrTemp);
                 $keyGroup[] = $arrTemp;
             }
         }
     }
     $insert = [];
     foreach ($keyGroup as $key) {
         $keyString = implode(',', $key);
         foreach ($listIDAnswerNormal as $idAnswer) {
             $answerRoot = DB::select("select * from option_ans where id='{$idAnswer}'");
             $idAttribute = $answerRoot[0]->attribute_id;
             $factor = DB::select("select * from factor where user_detail = '{$keyString}' and attribute_id='{$idAttribute}'");
             if (count($factor) > 0) {
                 $insert[] = ['key_group' => $keyString, 'id_answer' => $idAnswer, 'factor' => $factor[0]->factor];
             } else {
                 $insert[] = ['key_group' => $keyString, 'id_answer' => $idAnswer, 'factor' => rand(1, 3)];
             }
         }
     }
     Factor::insert($insert);
 }
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     Schema::create('factors', function (Blueprint $table) {
         $table->increments('factorid');
         $table->string('factorname');
         $table->timestamps();
     });
     //Add rows (factors) to database
     $newFactor = new Factor();
     $newFactor->factorname = 'Employment';
     $newFactor->save();
     $newFactor = new Factor();
     $newFactor->factorname = 'Grades';
     $newFactor->save();
     $newFactor = new Factor();
     $newFactor->factorname = 'ST Bracket';
     $newFactor->save();
     $newFactor = new Factor();
     $newFactor->factorname = 'Region';
     $newFactor->save();
     $newFactor = new Factor();
     $newFactor->factorname = 'Tuition';
     $newFactor->save();
 }
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     Schema::table('factors', function (Blueprint $table) {
         //
     });
     $entry = Factor::where('factorid', 2)->first();
     $entry->factorname = 'Low Grades';
     $entry->save();
     $entry = Factor::where('factorid', 3)->first();
     $entry->factorname = 'ST Bracket A & B';
     $entry->save();
     $entry = Factor::where('factorid', 6)->first();
     $entry->factorname = 'Underloading Units';
     $entry->save();
     $entry = Factor::where('factorid', 9)->first();
     $entry->factorname = 'Overloading Units';
     $entry->save();
 }
Пример #8
0
 public function writeprojectdetailAction()
 {
     try {
         $manager = $this->session->get('Manager');
         $project_id = $manager->project_id;
         #添加项目判断,是否有被试答题,若有答题则不能更新配置的模块
         $result = $this->modelsManager->createBuilder()->columns(array('COUNT(Examinee.id) as count'))->from('Examinee')->join('QuestionAns', 'Examinee.id = QuestionAns.examinee_id AND Examinee.project_id = ' . $project_id)->getQuery()->execute();
         $result = $result->toArray();
         if ($result[0]['count'] > 0) {
             $this->dataReturn(array('error' => '已有被试答题,项目模块不可再修改!'));
             return;
         }
         if ($manager) {
             $module_names = array();
             $checkeds = $this->request->getpost('checkeds');
             $values = $this->request->getpost('values');
             $i = 0;
             foreach ($checkeds as $value) {
                 if ($value == 'true') {
                     $module_names[] = PmDB::getModuleName($values[$i]);
                 }
                 $i++;
             }
             #全选情况
             $project_detail_info = array();
             $index_names = array();
             if (count($module_names) == 10) {
                 $index = Index::find();
                 foreach ($index as $index_record) {
                     $index_names[] = $index_record->name;
                 }
                 $factor = Factor::find();
                 $factor_names = array();
                 foreach ($factor as $factor_record) {
                     $factor_names[] = $factor_record->name;
                 }
                 $question = Question::find();
                 $examination = array();
                 foreach ($question as $question_record) {
                     $paper_name = Paper::findFirst($question_record->paper_id)->name;
                     $examination[$paper_name][] = $question_record->number;
                 }
                 $project_detail_info['exam_json'] = json_encode($examination, JSON_UNESCAPED_UNICODE);
             } else {
                 #所有相关指标名数组
                 $index_names = PmDB::getIndexName($module_names);
                 #所有相关因子名数组
                 $factor_names = PmDB::getFactorName($index_names);
                 #所有相关试卷下题目的数组
                 $examination = PmDB::getQuestionName($factor_names);
                 $project_detail_info['exam_json'] = json_encode($examination, JSON_UNESCAPED_UNICODE);
             }
             #因子分类 以及寻找子因子
             $factors = PmDB::getAllDividedFactors($factor_names);
             $project_detail_info['factor_names'] = json_encode($factors, JSON_UNESCAPED_UNICODE);
             $project_detail_info['module_names'] = implode(',', $module_names);
             $project_detail_info['index_names'] = implode(',', $index_names);
             $project_detail_info['project_id'] = $project_id;
             #插入到project_detail 并更新状态
             PmDB::insertProjectDetail($project_detail_info);
             #模块配置的类型设为true
             #需求量表的上传设为false
             $this->dataReturn(array('success' => true));
             return;
         } else {
             $this->dataBack(array('error' => "您的身份验证出错!请重新登录!"));
             return;
         }
     } catch (Exception $e) {
         $this->dataReturn(array('error' => $e->getMessage()));
         return;
     }
 }
Пример #9
0
 public static function getSPMdata($examinee_info)
 {
     $projectdetail = ProjectDetail::findFirst(array('project_id=?1', 'bind' => array(1 => $examinee_info->project_id)));
     $factors = json_decode($projectdetail->factor_names, true);
     if (!isset($factors['SPM'])) {
         return null;
     }
     $ans = array();
     foreach ($factors['SPM'] as $key => $value) {
         $inner_array = array();
         $factor_info = Factor::findFirst($key);
         $inner_array['chs_name'] = $factor_info->chs_name;
         $factor_score_info = FactorAns::findFirst(array('factor_id = ?1 AND examinee_id =?2', 'bind' => array(1 => $key, 2 => $examinee_info->id)));
         $inner_array['std_score'] = intval($factor_score_info->std_score);
         $inner_array['score'] = $factor_score_info->score;
         //$inner_array['name'] = $factor_info->name;
         $ans[$factor_info->name] = $inner_array;
     }
     return $ans;
 }
Пример #10
0
 public function factormanagerAction()
 {
     $oper = $this->request->getPost('oper', 'string');
     if ($oper == 'edit') {
         $f_id = $this->request->getPost('f_id', 'int');
         $ratio = $this->request->getPost('ratio', 'int');
         $factor = Factor::findFirst($f_id);
         if (!$factor || is_null($f_id)) {
             echo "false";
             return;
         }
         $factor->ratio = $ratio;
         if (!$factor->save()) {
             foreach ($factor->getMessages() as $message) {
                 echo $message;
             }
         }
     }
     if ($oper == 'del') {
         $f_id = $this->request->getPost('id', 'int');
         $factor = Factor::findFirst($f_id);
         if (!$factor->delete()) {
             foreach ($factor->getMessages() as $message) {
                 echo $message;
             }
         }
     }
 }
Пример #11
0
 private function isPrimeNumber($number)
 {
     return in_array($number, $this->factor->getPrimeNumbers());
 }
Пример #12
0
 /**
  * @type 不更改
  * @method $rt->id $rt->name $rt->children
  * @usage 缓存根据因子名称查取到的因子详细记录
  * @param string $factor_name
  */
 public static function getFactorDetail($factor_name)
 {
     self::checkConnect();
     return Factor::findFirst(array("name = :factor_name:", 'bind' => array('factor_name' => $factor_name), 'hydration' => \Phalcon\Mvc\Model\Resultset\Simple::HYDRATE_ARRAYS, 'cache' => array('key' => 'factor_detail_name_' . $factor_name)));
 }
Пример #13
0
 public function showDepartment()
 {
     $id = Input::get('department-dropdown');
     $level = 'department';
     $levelName = DB::table('units')->select('unitname')->where('unitid', $id)->first()->unitname;
     //Factors names
     $factors = Factor::select('factorid', 'factorname')->get();
     $factorNames = [];
     foreach ($factors as $factor) {
         $factorNames[$factor->factorid] = $factor->factorname;
     }
     $rawCorrelation[$level][1] = $this->corrEmployment($level, $id);
     if ($rawCorrelation[$level][1] < 0) {
         $correlation[$level][1] = -$rawCorrelation[$level][1];
     } else {
         $correlation[$level][1] = $rawCorrelation[$level][1];
     }
     $rawCorrelation[$level][2] = $this->corrGrades($level, $id);
     if ($rawCorrelation[$level][2] < 0) {
         $correlation[$level][2] = -$rawCorrelation[$level][2];
     } else {
         $correlation[$level][2] = $rawCorrelation[$level][2];
     }
     $rawCorrelation[$level][3] = $this->corrStbracket($level, $id);
     if ($rawCorrelation[$level][3] < 0) {
         $correlation[$level][3] = -$rawCorrelation[$level][3];
     } else {
         $correlation[$level][3] = $rawCorrelation[$level][3];
     }
     $rawCorrelation[$level][4] = $this->corrRegion($level, $id);
     if ($rawCorrelation[$level][4] < 0) {
         $correlation[$level][4] = -$rawCorrelation[$level][4];
     } else {
         $correlation[$level][4] = $rawCorrelation[$level][4];
     }
     $rawCorrelation[$level][6] = $this->corrUnits($level, $id);
     if ($rawCorrelation[$level][6] < 0) {
         $correlation[$level][6] = -$rawCorrelation[$level][6];
     } else {
         $correlation[$level][6] = $rawCorrelation[$level][6];
     }
     $rawCorrelation[$level][8] = $this->corrUnemployment($level, $id);
     if ($rawCorrelation[$level][8] < 0) {
         $correlation[$level][8] = -$rawCorrelation[$level][8];
     } else {
         $correlation[$level][8] = $rawCorrelation[$level][8];
     }
     $rawCorrelation[$level][7] = $this->corrHighGrades($level, $id);
     if ($rawCorrelation[$level][7] < 0) {
         $correlation[$level][7] = -$rawCorrelation[$level][7];
     } else {
         $correlation[$level][7] = $rawCorrelation[$level][7];
     }
     $rawCorrelation[$level][9] = $this->corrOverloading($level, $id);
     if ($rawCorrelation[$level][9] < 0) {
         $correlation[$level][9] = -$rawCorrelation[$level][9];
     } else {
         $correlation[$level][9] = $rawCorrelation[$level][9];
     }
     return View::make('correlation.correlation-specific', compact('rawCorrelation', 'correlation', 'levelName', 'factorNames', 'level'));
 }
Пример #14
0
 public function getFactorGrideByLevel($factor_chs_name = null, $factor_name = null, $level_examines, $project_id)
 {
     #判断因子是index还是factor
     //按照中文名搜索
     if (empty($factor_chs_name)) {
         $factor_info = Factor::findFirst(array("name = ?2", 'bind' => array(2 => $factor_name)));
         $search = 'Factor.name = ' . "'{$factor_name}'";
         //按照英文名搜索
     } else {
         $factor_info = Factor::findFirst(array("chs_name = ?2", 'bind' => array(2 => $factor_chs_name)));
         $search = 'Factor.chs_name = ' . "'{$factor_chs_name}'";
     }
     if (isset($factor_info->id)) {
         //对各层次人群进行得分计算后返回
         $rtn_array = array();
         foreach ($level_examines as $level_array) {
             $result = $this->modelsManager->createBuilder()->columns(array('AVG(FactorAns.ans_score) as score'))->from('Examinee')->inwhere('Examinee.id', $level_array)->join('FactorAns', 'FactorAns.examinee_id = Examinee.id AND Examinee.type =0 AND Examinee.project_id = ' . $project_id)->join('Factor', 'FactorAns.factor_id = Factor.id AND ' . $search)->getQuery()->execute()->toArray();
             if (empty($result[0]['score'])) {
                 $score = 0;
             } else {
                 $score = sprintf('%.2f', $result[0]['score']);
             }
             $rtn_array[] = $score;
         }
         return $rtn_array;
     }
     //按照中文名搜索
     if (empty($factor_chs_name)) {
         $index_info = Index::findFirst(array(" name = ?2", 'bind' => array(2 => $factor_name)));
         $search = 'Index.name = ' . "'{$factor_name}'";
         //按照英文名搜索
     } else {
         $index_info = Index::findFirst(array("chs_name = ?2", 'bind' => array(2 => $factor_chs_name)));
         $search = 'Index.chs_name = ' . "'{$factor_chs_name}'";
     }
     if (isset($index_info->id)) {
         $rtn_array = array();
         foreach ($level_examines as $level_array) {
             $result = $this->modelsManager->createBuilder()->columns(array('AVG(IndexAns.score) as score'))->from('Examinee')->inwhere('Examinee.id', $level_array)->join('IndexAns', 'IndexAns.examinee_id = Examinee.id AND Examinee.type =0 AND Examinee.project_id = ' . $project_id)->join('Index', 'IndexAns.index_id = Index.id AND ' . $search)->getQuery()->execute()->toArray();
             if (empty($result[0]['score'])) {
                 $score = 0;
             } else {
                 $score = sprintf('%.2f', $result[0]['score']);
             }
             $rtn_array[] = $score;
         }
         return $rtn_array;
     }
     throw new Exception('no this factor exist!' . print_r($factor_name));
 }
Пример #15
0
 /**
  * @usage input 因子名数组
  * @return 所有分类下的因子数组
  */
 public static function getAllDividedFactors($factor_names)
 {
     $factors = array();
     foreach ($factor_names as $factor_name) {
         $factor = Factor::findFirst(array('name=?1', 'bind' => array(1 => $factor_name)));
         $paper_name = Paper::findFirst($factor->paper_id)->name;
         $factors[$paper_name][$factor->id] = $factor_name;
         $children_type_array = explode(',', $factor->children_type);
         #因子至多两层
         if (in_array(0, $children_type_array)) {
             $factor = explode(',', $factor->children);
             foreach ($factor as $value) {
                 $zi_factor = Factor::findFirst(array('name=?1', 'bind' => array(1 => $value)));
                 $factors[$paper_name][$zi_factor->id] = $value;
             }
         }
     }
     return $factors;
 }