page_data=globalfunc::getMessage($parent,$parent->lang,'survey'); if(count($parent->params)==0) { //$parent->response(array('response'=>'failed', 'message' => 'PAGE NOT FOUND'), 404); $this->surveyfunc($parent); }else { $qry_params=explode ("?",$parent->params[0]); $parameter_val=strtolower($qry_params[0]); if(strtolower($parent->device_type)=='app') { switch($parameter_val){ case "question": case "startsurvey": case "review": case "survey_status": $this->$parameter_val($parent ); break; default: $this->surveyfunc($parent); break; } }else if(strtolower($parent->device_type)=='web') { switch($parameter_val){ case "question": case "startsurvey": case "review": case "survey_status": $this->$parameter_val($parent ); break; default: $this->surveyfunc($parent); break; } } } $parent->response(array('response'=>'failed', 'message' => 'PAGE NOT FOUND'), 404); } /* /////////////////////////////// ASSESSMENT MAIN FUNCTION //////////////////////////////////////////////// */ private function surveyfunc($parent){ globalfunc::checkMethodType($parent,array('GET','POST')); switch ($parent->get_request_method()){ case "GET": globalfunc::checkParamCount($parent,0); globalfunc::checkAuthrozation($parent,array('type'=>'user')); //USER COND $user_cond_arr=projectfunc::getUserAssessmentCond($parent); $user_cond=" AND ".@implode(' AND ',$user_cond_arr); $status_arr=array(); //NEW ROLE CONDITION $user_cond.=($parent->current_user_role>7 && $parent->current_user_role<14)?" AND a.user_type=0 ":" AND a.user_type=1 "; if($parent->current_user_role>7 && $parent->current_user_role<14) { $user_cond.=" AND (a.segment='0' OR a.segment='".$parent->current_user_data->segment."')"; } //$assessment_str = "SELECT a.*,au.attemptslimit,au.publisheddate,au.enddate FROM ".TABLE_ASSESSMENT_USER." as au JOIN ".TABLE_ASSESSMENT." as a ON au.assessmentid=a.assessmentid WHERE a.status='1' AND a.assettypeid='2' AND au.status='1' AND au.userid='".$parent->current_user_id."' AND a.lvl_id='".$lvl_id."' AND au.publisheddate<='".NOW."'".$user_cond; $assessment_str = "SELECT a.* FROM ".TABLE_ASSESSMENT." as a WHERE a.status='1' AND a.assettypeid='2' AND a.schedule_id ='' AND a.publisheddate<='".NOW."' ".$user_cond; $assessment_arr=$parent->getQueryValue($assessment_str); if(count($assessment_arr)>0) { //GET ALL STATUS $status_str = "SELECT * FROM ".TABLE_STATUS; $status_res_arr=$parent->getQueryValue($status_str); //print_r($status_res_arr); if(count($status_res_arr)>0) { foreach($status_res_arr as $res) { $obj_key=$res->statusid; $status_arr[$obj_key]=$res->status; } } /* * 1 Active //2 Inactive 3 Completed //4 In Progress //5 Published //6 Closed 7 Not started 8 Expired * */ //S3 OBJECT $s3=awsfileserver::connectS3(); //ADD EXTRA FIELDS foreach($assessment_arr as $key=>$res_assessment) { $assessment_arr[$key]->publisheddate_str=date('Y-M-d',strtotime($res_assessment->publisheddate)); //SURVEY IMAGE $assessment_arr[$key]->assessmentimage_url=SURVEYIMAGE_URL; if($res_assessment->assessmentimage!='') { $assessment_arr[$key]->assessmentimage_url=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_ASSESSMENT_URL.$res_assessment->assessmentimage); } $assessment_arr[$key]->is_expired ='0'; //CHECK ALREADY ATTENDTED $assessment_result_str = "SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$res_assessment->assessmentid."' AND userid='".$parent->current_user_id."' ORDER BY arid DESC"; $assessment_result_arr=$parent->getQueryValue($assessment_result_str); if(count($assessment_result_arr)>0) { // 3-Completed , 4 - In Progress $assessment_arr[$key]->status =($assessment_result_arr[0]->status=='1')?'3':'1'; $res_assessment->status = $assessment_arr[$key]->status; } else { $assessment_arr[$key]->status ='7'; $res_assessment->status = $assessment_arr[$key]->status; } //EXPIRED if(strtotime($res_assessment->enddate)is_expired='1'; $assessment_arr[$key]->status = '8'; $res_assessment->status = '8'; } //STATUS STRING $assessment_arr[$key]->statusname=(isset($status_arr[$res_assessment->status]))?$status_arr[$res_assessment->status]:""; //ATTEMPT TIME $attempt_time_str = "SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$res_assessment->assessmentid."' AND userid='".$parent->current_user_id."' ORDER by attempt_time DESC"; $attempt_time_arr=$parent->getQueryValue($attempt_time_str); $assessment_arr[$key]->attempt_time=(count($attempt_time_arr)>0)?$attempt_time_arr[0]->attempt_time:0; //IS ATTENDED $assessment_arr[$key]->is_attended='0'; $assessment_arr[$key]->result_id=''; //HIGHSCORE $assessment_arr[$key]->highscore='0'; if(count($attempt_time_arr)>0) { $user_assessment_score_arr=array_column($attempt_time_arr,'percentage_score'); rsort( $user_assessment_score_arr); $assessment_arr[$key]->highscore=(string)$user_assessment_score_arr[0]; $assessment_arr[$key]->is_attended='1'; //FOR SURVEY RESULT VIEW $assessment_arr[$key]->result_id=$attempt_time_arr[0]->arid; } } } //LOG $logstr='SURVEY LIST'; globalfunc::insertUserLog($parent,$logstr); $parent->response(array('response'=>'success', 'data'=>$assessment_arr,'message'=>$this->page_data['success1']),200); break; case "POST": //ASSESSMENT SUBMIT globalfunc::checkParamCount($parent,1); globalfunc::checkAuthrozation($parent,array('type'=>'user')); $userid=$parent->current_user_id; $assessmentid = escape_str($parent->params['0']); //USER ASSESSMENT CHECK $assessment_user_str = "SELECT * FROM ".TABLE_ASSESSMENT_USER." WHERE assessmentid='".$assessmentid."' AND userid='".$parent->current_user_id."' LIMIT 1"; $assessment_user_arr=$parent->getQueryValue($assessment_user_str); //VALIDATE ASSESSMENT projectfunc::userSurveyValid($parent,$parent->current_user_id,$assessmentid); //ASSESSMENT VALIDATION $assessment_str = "SELECT * FROM ".TABLE_ASSESSMENT." WHERE assessmentid='".$assessmentid."' AND status='1' AND assettypeid='2' LIMIT 1"; $assessment_arr=$parent->getQueryValue($assessment_str); if(count($assessment_arr)!=1) $parent->response(array('response'=>'failed','message'=>$this->page_data["error2"]),406); //FIELDS VALIDATION $REQUEST_KEYS=array('ans_arr'=>'string','startdatetime'=>'date|Y-m-d H:i:s','enddatetime'=>'date|Y-m-d H:i:s'); globalfunc::mandatoryKey($parent,$REQUEST_KEYS); //CHECK ANS ARRAY $ans_arr = json_decode($parent->_request["ans_arr"]); if(count($ans_arr)==0) { $parent->response(array('response'=>'failed','message'=>$this->page_data["error5"]), 406); } $startdatetime = isset($parent->_request["startdatetime"])?$parent->_request["startdatetime"]:NOW; $enddatetime = isset($parent->_request["enddatetime"])?$parent->_request["enddatetime"]:NOW; $attempt_time=1; $remarks = escape_str($parent->_request["remarks"]); //CHECK USER ATTEMPT LIMIT $get_userresult_str="SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$assessmentid."' AND userid='".$parent->current_user_id."' AND status=0 ORDER BY arid DESC"; $userresult_arr=$parent->getQueryValue($get_userresult_str); //if(!(count($userresult_arr)>0)) $parent->response(array('response'=>'failed','message'=>$this->page_data["error8"]), 406); if(count($userresult_arr)>0 &&$userresult_arr[0]->status=='0') { //RESULT ALREADY STARTED NEED TO RESET $parent->executeQuery("UPDATE ".TABLE_ASSESSMENTRESULT." SET `remarks`= '".$remarks."', `assessmentdate`='".NOW."', `startdatetime`='".NOW."', `modified_on`='".NOW."' WHERE arid='".$userresult_arr[0]->arid."'"); }else { $get_userresult_str="SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$assessmentid."' AND userid='".$parent->current_user_id."' ORDER BY arid DESC"; $userresult_arr=$parent->getQueryValue($get_userresult_str); $attempt_time=count($userresult_arr)+1; if($assessment_arr[0]->attemptslimit<=count($userresult_arr)) { $parent->response(array('response'=>'failed','message'=>$this->page_data["error6"]), 406); } //RESULT INSERT $parent->executeQuery("INSERT INTO ".TABLE_ASSESSMENTRESULT." (`remarks`, `assessmentid`, `attempt_time`, `userid`, `assettypeid`, `assessmenttype`,`assessmentdate` , `startdatetime`,`status`, `created_on`, `modified_on`)VALUES('".$remarks."','".$assessmentid."','".$attempt_time."','".$parent->current_user_id."','".$assessment_arr[0]->assettypeid."','".$assessment_arr[0]->assessmenttype."', '".NOW."','".NOW."','0','".NOW."','".NOW."')"); $get_userresult_str="SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$assessmentid."' AND userid='".$parent->current_user_id."' ORDER BY arid DESC"; $userresult_arr=$parent->getQueryValue($get_userresult_str); } //ASSESSMENT SCORE $ques_arr=array(); $assessment_ques_arr=array(); if(count($ans_arr)>0) { //GET QUESTION ARRAY foreach($ans_arr as $res) { //print_r($res); $question_arr[]=$res->qid; $assessment_ques_arr[]=$res->aqid; } } //CHECK QUESTION COUNT if(!(count($question_arr)>0) || !(count($assessment_ques_arr)>0)) { $parent->response(array('response'=>'failed','message'=>$this->page_data["error7"]), 406); } //VALIDATE QUESTION $validate_assessment_ques_str =" SELECT * FROM ".TABLE_ASSESSMENT_QUESTION." WHERE assessmentid='".$assessmentid."' AND aqid IN (".@implode(',',$assessment_ques_arr).") AND qid IN (".@implode(',',$question_arr).") "; $validate_assessment_ques_arr=$parent->getQueryValue($validate_assessment_ques_str); if(!(count($validate_assessment_ques_arr)>0)) $parent->response(array('response'=>'failed','message'=>$this->page_data["error9"]), 406); //if(!(count($validate_assessment_ques_arr)==count($assessment_ques_arr))) $parent->response(array('response'=>'failed','message'=>$this->page_data["error9"]), 406); //INSERT OPTIONS $insert_result_arr=array(); for($mid = 0; $mid < count($ans_arr);$mid++) { $aqid = $ans_arr[$mid]->aqid; $qid = $ans_arr[$mid]->qid; $survey_rating = (isset($ans_arr[$mid]->survey_rating))?$ans_arr[$mid]->survey_rating:0; $survey_text=(isset($ans_arr[$mid]->survey_text) && is_string($ans_arr[$mid]->survey_text))?$ans_arr[$mid]->survey_text:''; $options_arr =(isset($ans_arr[$mid]->options))?$ans_arr[$mid]->options:array(); //print_r($options_arr); if(is_array($options_arr) && count($options_arr)>0) { for($nid = 0; $nid < count($options_arr);$nid++) { $option_id = $options_arr[$nid]; $insert_result_arr[] = " ('".$userresult_arr[0]->arid."','".$assessmentid."','".$parent->current_user_id."','".$aqid."','".$qid."','".$survey_rating."','".$survey_text."','".$option_id."','".NOW."','".NOW."')"; } } else { $insert_result_arr[] = " ('".$userresult_arr[0]->arid."','".$assessmentid."','".$parent->current_user_id."','".$aqid."','".$qid."','".$survey_rating."','".$survey_text."','','".NOW."','".NOW."')"; } } //DELETE USER RESULT $parent->executeQuery("DELETE FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE arid='".$userresult_arr[0]->arid."' AND userid='".$parent->current_user_id."' AND assessmentid='".$assessmentid."'"); if(count($insert_result_arr)>0) { //print "INSERT INTO ".TABLE_ASSESSMENT_USERRESULT." (arid,assessmentid,userid,aqid,qid,survey_rating,survey_text,choiseid,created_on,modified_on)VALUES ".@implode(',',$insert_result_arr).""; $parent->executeQuery("INSERT INTO ".TABLE_ASSESSMENT_USERRESULT." (arid,assessmentid,userid,aqid,qid,survey_rating,survey_text,choiseid,created_on,modified_on)VALUES ".@implode(',',$insert_result_arr).""); } $exam_time_diff=strtotime($enddatetime)-strtotime($startdatetime); //ASSESSMENT RESULT $update = $parent->executeQuery("UPDATE ".TABLE_ASSESSMENTRESULT." SET `remarks`= '".$remarks."', `startdatetime`='".$startdatetime."',`enddatetime`='".$enddatetime."',time_taken='".$exam_time_diff."', `status`='1', `modified_on`='".NOW."' WHERE arid='".$userresult_arr[0]->arid."'"); $highscore=0; $highscorearid=$userresult_arr[0]->arid; if(count($assessment_user_arr)>0) { $parent->executeQuery("UPDATE ".TABLE_ASSESSMENT_USER." SET highscore='".$highscore."',highscorearid='".$highscorearid."',modified_on='".NOW."' WHERE id='".$assessment_user_arr[0]->id."' AND userid='".$parent->current_user_id."'"); }else { $parent->executeQuery("INSERT INTO `".TABLE_ASSESSMENT_USER."`( `assessmentid`, `userid`, `highscore`, `highscorearid`, `status`, `created_on`, `modified_on`) VALUES ('".$assessmentid."','".$parent->current_user_id."','".$highscore."','".$highscorearid."','1','".NOW."','".NOW."')"); } //LOG $logstr='SURVEY SUBMIT'; globalfunc::insertUserLog($parent,$logstr,$assessmentid); $parent->response(array('response'=>'success', 'data'=>array('result_id'=>$userresult_arr[0]->arid),'message'=>$this->page_data['success1']),200); break; } } /* //////////////////////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////// ASSESSMENT STATUS //////////////////////////////////////////////// */ private function survey_status($parent){ globalfunc::checkMethodType($parent,array('GET')); globalfunc::checkAuthrozation($parent,array('type'=>'user')); globalfunc::checkParamCount($parent,2); $assessmentid = escape_str($parent->params['1']); //USER COND $user_cond_arr=projectfunc::getUserAssessmentCond($parent); $user_cond=" AND ".@implode(' AND ',$user_cond_arr); if($parent->current_user_role>7 && $parent->current_user_role<14) { $user_cond.=" AND (a.segment='0' OR a.segment='".$parent->current_user_data->segment."')"; } $assessment_str = "SELECT a.* FROM ".TABLE_ASSESSMENT." as a WHERE a.status='1' AND a.assettypeid='2' AND a.schedule_id ='' AND a.assessmentid='".$assessmentid."' AND a.publisheddate<='".NOW."' ".$user_cond." LIMIT 1"; $assessment_arr=$parent->getQueryValue($assessment_str); if(count($assessment_arr)>0) { //GET ALL STATUS $status_str = "SELECT * FROM ".TABLE_STATUS; $status_res_arr=$parent->getQueryValue($status_str); //print_r($status_res_arr); if(count($status_res_arr)>0) { foreach($status_res_arr as $res) { $obj_key=$res->statusid; $status_arr[$obj_key]=$res->status; } } /* * 1 Active //2 Inactive 3 Completed //4 In Progress //5 Published //6 Closed 7 Not started 8 Expired * */ //S3 OBJECT $s3=awsfileserver::connectS3(); //ADD EXTRA FIELDS foreach($assessment_arr as $key=>$res_assessment) { //SURVEY IMAGE $assessment_arr[$key]->assessmentimage_url=SURVEYIMAGE_URL; if($res_assessment->assessmentimage!='') { $assessment_arr[$key]->assessmentimage_url=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_ASSESSMENT_URL.$res_assessment->assessmentimage); } $assessment_arr[$key]->is_expired ='0'; //CHECK ALREADY ATTENDTED $assessment_result_str = "SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$res_assessment->assessmentid."' AND userid='".$parent->current_user_id."' ORDER BY arid DESC"; $assessment_result_arr=$parent->getQueryValue($assessment_result_str); if(count($assessment_result_arr)>0) { // 3-Completed , 4 - In Progress $assessment_arr[$key]->status =($assessment_result_arr[0]->status=='1')?'3':'1'; $res_assessment->status = $assessment_arr[$key]->status; } else { $assessment_arr[$key]->status ='7'; $res_assessment->status = $assessment_arr[$key]->status; } //EXPIRED if(strtotime($res_assessment->enddate)is_expired='1'; $assessment_arr[$key]->status = '8'; $res_assessment->status = '8'; } //STATUS STRING $assessment_arr[$key]->statusname=(isset($status_arr[$res_assessment->status]))?$status_arr[$res_assessment->status]:""; //ATTEMPT TIME $attempt_time_str = "SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$res_assessment->assessmentid."' AND userid='".$parent->current_user_id."' ORDER by attempt_time DESC"; $attempt_time_arr=$parent->getQueryValue($attempt_time_str); $assessment_arr[$key]->attempt_time=(count($attempt_time_arr)>0)?$attempt_time_arr[0]->attempt_time:0; //IS ATTENDED $assessment_arr[$key]->is_attended='0'; $assessment_arr[$key]->result_id=''; //HIGHSCORE $assessment_arr[$key]->highscore='0'; if(count($attempt_time_arr)>0) { $user_assessment_score_arr=array_column($attempt_time_arr,'percentage_score'); rsort( $user_assessment_score_arr); $assessment_arr[$key]->highscore=(string)$user_assessment_score_arr[0]; $assessment_arr[$key]->is_attended='1'; //FOR SURVEY RESULT VIEW $assessment_arr[$key]->result_id=$attempt_time_arr[0]->arid; } } }else { $parent->response(array('response'=>'failed', 'message'=>$this->page_data['error2']),406); } //LOG $logstr='SURVEY STATUS'; globalfunc::insertUserLog($parent,$logstr,$assessmentid); $parent->response(array('response'=>'success', 'data'=>$assessment_arr[0],'message'=>$this->page_data['success1']),200); } /* //////////////////////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////// QUESTION //////////////////////////////////////// */ private function question($parent){ globalfunc::checkMethodType($parent,array('GET')); globalfunc::checkParamCount($parent,2); globalfunc::checkAuthrozation($parent,array('type'=>'user')); $assessmentid = escape_str($parent->params['1']); //VALIDATE ASSESSMENT projectfunc::userSurveyValid($parent,$parent->current_user_id,$assessmentid); //ASSESSMENT VALIDATION $assessment_str = "SELECT * FROM ".TABLE_ASSESSMENT." WHERE assessmentid='".$assessmentid."' AND status='1' AND assettypeid='2' LIMIT 1"; $assessment_arr=$parent->getQueryValue($assessment_str); if(count($assessment_arr)!=1) $parent->response(array('response'=>'failed','message'=>$this->page_data["error2"]),406); //S3 OBJECT $s3=awsfileserver::connectS3(); if($assessment_arr[0]->randomcond=='1' ) { $econd=" ORDER BY RAND() "; }else { $econd=" ORDER BY aq.aqid ASC"; } //GET RATINGS IS COMMON $survey_str = "SELECT * FROM ".TABLE_SURVEY_RATING." ORDER BY id ASC"; $survey_arr=$parent->getQueryValue($survey_str); $limit_str=" LIMIT 0,".$assessment_arr[0]->total_question." "; $ques_str ="SELECT aq.aqid,aq.is_mandatory,q.id as qid, q.`questiontypeid`, q.`questiontext`, q.`qimage`, q.`qvideo` FROM ".TABLE_QUESTION." as q JOIN (SELECT * FROM ".TABLE_ASSESSMENT_QUESTION." WHERE assessmentid='".$assessmentid."' )as aq ON q.id=aq.qid WHERE 1=1 ".$econd.$limit_str; $ques_arr=$parent->getQueryValue($ques_str); if(count($ques_arr)>0) { //CONNECT S3 $s3=awsfileserver::connectS3(); $this->rating_rid=1; foreach($ques_arr as $key=>$res_ques) { $res_ques->rating_options=array(); //QUESTION IMAGE $res_ques->qimage_url=''; if($res_ques->qimage!='') { $res_ques->qimage_url=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_QUESTION_URL.$res_ques->qimage); } //QUESTION VIDEO $res_ques->qvideo_url=''; if($res_ques->qvideo!='') { $res_ques->qvideo_url=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_QUESTION_URL.$res_ques->qvideo); } //RATING QUESTION $res_ques->rating_options=array(); $res_ques->options=array(); if($res_ques->questiontypeid=='3') { $res_ques->rating_options=$survey_arr; }else if($res_ques->questiontypeid=='5'||$res_ques->questiontypeid=='6') { //CHOICE $chocie_arr=array(); //WEB NEED selected $wed_cond=($parent->device_type=='web')?" ,'0' as selected ":''; $quesoption_str = "SELECT optid,opttext ".$wed_cond." FROM ".TABLE_QUESTIONOPTION." WHERE qid='".$res_ques->qid."'"; $quesoption_arr=$parent->getQueryValue($quesoption_str); $res_ques->options = $quesoption_arr; } $question_arr[]=$res_ques; } } //LOG $logstr='SURVEY QUESTION'; globalfunc::insertUserLog($parent,$logstr,$assessmentid); $parent->response(array('response'=>'success', 'data'=>$question_arr,'message'=>$this->page_data['success1']),200); } /* //////////////////////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////// START SURVEY //////////////////////////////////////// */ private function startsurvey($parent){ globalfunc::checkMethodType($parent,array('GET')); globalfunc::checkAuthrozation($parent,array('type'=>'user')); globalfunc::checkParamCount($parent,2); //GET ASSESSMENTID $assessmentid = escape_str($parent->params[1]); //VALIDATE ASSESSMENT projectfunc::userSurveyValid($parent,$parent->current_user_id,$assessmentid); //ASSESSMENT VALIDATION $assessment_str = "SELECT * FROM ".TABLE_ASSESSMENT." WHERE assessmentid='".$assessmentid."' AND status='1' AND assettypeid='2' LIMIT 1"; $assessment_arr=$parent->getQueryValue($assessment_str); if(count($assessment_arr)!=1) $parent->response(array('response'=>'failed','message'=>$this->page_data["error2"]),406); $attempt_time=1; //CHECK USER ATTEMPT LIMIT $get_userresult_str="SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$assessmentid."' AND userid='".$parent->current_user_id."' ORDER BY arid DESC"; $userresult_arr=$parent->getQueryValue($get_userresult_str); if($assessment_user_arr[0]->attemptslimit<=count($userresult_arr)) { $parent->response(array('response'=>'failed','message'=>$this->page_data["error6"]), 406); } else { $attempt_time=count($userresult_arr)+1; } //CHECK IN PROGRESS EXAM EXIST if($userresult_arr[0]->status=='0') { //RESULT ALREADY STARTED NEED TO RESET $parent->executeQuery("UPDATE ".TABLE_ASSESSMENTRESULT." SET `assessmentdate`='".NOW."', `startdatetime`='".NOW."', `modified_on`='".NOW."' WHERE arid='".$userresult_arr[0]->arid."'"); }else { //RESULT INSERT $parent->executeQuery("INSERT INTO ".TABLE_ASSESSMENTRESULT." (`assessmentid`, `attempt_time`, `userid`, `assettypeid`, `assessmenttype`,`assessmentdate` , `startdatetime`,`status`, `created_on`, `modified_on`)VALUES('".$assessmentid."','".$attempt_time."','".$parent->current_user_id."','".$assessment_arr[0]->assettypeid."','".$assessment_arr[0]->assessmenttype."', '".NOW."','".NOW."','0','".NOW."','".NOW."')"); } //LOG $logstr='START SURVEY'; globalfunc::insertUserLog($parent,$logstr,$assessmentid); $parent->response(array('response'=>'success','message'=>$this->page_data['success1']),200); } /* //////////////////////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////// REVIEW //////////////////////////////////////// */ private function review($parent){ globalfunc::checkMethodType($parent,array('GET')); globalfunc::checkAuthrozation($parent,array('type'=>'user')); globalfunc::checkParamCount($parent,2); //GET RESULTID $arid = escape_str($parent->params[1]); $get_user_assessmentresult_str="SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE userid='".$parent->current_user_id."' AND arid='".$arid."'"; $user_assessmentresult_arr=$parent->getQueryValue($get_user_assessmentresult_str); if(!(count($user_assessmentresult_arr)>0)) { $parent->response(array('response'=>'failed','message'=>$this->page_data["error2"]), 406); } //CONNECT S3 $s3=awsfileserver::connectS3(); $result_arr=array(); //GET ASSESSMENT RESULT $get_user_ques_result_str="SELECT * FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE userid='".$parent->current_user_id."' AND arid='".$arid."' GROUP BY aqid ORDER BY userresultid ASC"; $user_ques_result_arr=$parent->getQueryValue($get_user_ques_result_str); if(count($user_ques_result_arr)>0) { //RATING $survey_str = "SELECT * FROM ".TABLE_SURVEY_RATING." ORDER BY id ASC"; $survey_arr=$parent->getQueryValue($survey_str); foreach($user_ques_result_arr as $res_value) { $ques_str ="SELECT q.id as qid, q.`questiontypeid`, q.`questiontext`, q.`qimage`, q.`qvideo` FROM ".TABLE_QUESTION." as q WHERE id='".$res_value->qid."' LIMIT 1"; $ques_arr=$parent->getQueryValue($ques_str); if(count($ques_arr)>0) { //QUESTION IMAGE $ques_arr[0]->qimage_url=''; if($ques_arr[0]->qimage!='') { $ques_arr[0]->qimage_url=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_QUESTION_URL.$ques_arr[0]->qimage); } //QUESTION VIDEO $ques_arr[0]->qvideo_url=''; if($ques_arr[0]->qvideo!='') { $ques_arr[0]->qvideo_url=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_QUESTION_URL.$ques_arr[0]->qvideo); } //GET USER ANSWERED OPTIONS $user_answer_str ="SELECT * FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE userid='".$parent->current_user_id."' AND arid='".$arid."' AND aqid='".$res_value->aqid."'"; $user_answer_arr=$parent->getQueryValue($user_answer_str); //GET RATING $ques_arr[0]->rating_options=array(); $ques_arr[0]->survey_text=''; $ques_arr[0]->options=array(); if($ques_arr[0]->questiontypeid=='3') { if(count($survey_arr)>0) { foreach($survey_arr as $skey=>$res_survey) { $survey_arr[$skey]->selected=(count($user_answer_arr)>0 && $user_answer_arr[0]->survey_rating==$res_survey->score)?'1':'0'; } } $ques_arr[0]->rating_options=$survey_arr; }elseif($ques_arr[0]->questiontypeid=='5' ||$ques_arr[0]->questiontypeid=='6') { $choise_arr=array(); if(count($user_answer_arr)>0) { $choise_arr=array_column($user_answer_arr,'choiseid'); } //GET ALL QUESTION OPTIONS $ques_option_str ="SELECT op.optid,op.opttext,'0' as selected FROM ".TABLE_QUESTIONOPTION." as op WHERE op.qid='".$res_value->qid."'"; $ques_option_arr=$parent->getQueryValue($ques_option_str); if(count($ques_option_arr)>0) { foreach($ques_option_arr as $mkey=>$res_opt) { if(count($user_answer_arr)>0) { $ques_option_arr[$mkey]->selected=(in_array($res_opt->optid,$choise_arr))?'1':'0'; } } } $ques_arr[0]->options=$ques_option_arr; } else{ $ques_arr[0]->survey_text=(count($user_answer_arr)>0 && $user_answer_arr[0]->survey_text!='')?$user_answer_arr[0]->survey_text:''; } $result_arr[]=$ques_arr[0]; } } } //LOG $logstr='SURVEY REVIEW'; globalfunc::insertUserLog($parent,$logstr,$arid); $parent->response(array('response'=>'success','data'=>$result_arr,'message'=>$this->page_data['success1']),200); } /* //////////////////////////////////////////////////////////////////////////////////////////// */ } ?>