| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702 |
- <?php
- /****************************
- * File : survey.php
- * Author : Cygnusa
- * @2018
- ****************************/
- //SECURITY
- if ( ! defined('APPLICATION_PATH')) exit('No direct script access allowed');
- //FUNCTION LISTS
- class survey
- {
- function __construct($parent)
- {
- //GET PAGE MESSAGE
- $this->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)<strtotime(NOW))
- {
- $assessment_arr[$key]->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)<strtotime(NOW))
- {
- $assessment_arr[$key]->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);
- }
- /* //////////////////////////////////////////////////////////////////////////////////////////// */
- }
- ?>
|