report_old.php 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967
  1. <?php
  2. /* * **************************
  3. * File : report.php
  4. * Author : Cygnusa
  5. * @2018
  6. * ************************** */
  7. include "Connection.php";
  8. $conn = new Connection();
  9. if (isset($_REQUEST["funName"])) {
  10. $db = $conn->getConnection();
  11. $fun = $_REQUEST["funName"];
  12. switch ($fun) {
  13. case "user_log":
  14. user_log();
  15. break;
  16. case "user_month_report":
  17. user_month_report();
  18. break;
  19. case "assessmentreport":
  20. assessmentreport();
  21. break;
  22. case "assessmentuserreport":
  23. assessmentuserreport();
  24. break;
  25. case "userwiseassessmentreport":
  26. userwiseassessmentreport();
  27. break;
  28. case "userresultassessmentreport":
  29. userresultassessmentreport();
  30. break;
  31. case "trainingcontentreport":
  32. trainingcontentreport();
  33. break;
  34. case "usersuppliercontentreport":
  35. usersuppliercontentreport();
  36. break;
  37. case "usercontentfilereport":
  38. usercontentfilereport();
  39. break;
  40. }
  41. }
  42. // USER LOG
  43. function user_log() {
  44. global $conn;
  45. try {
  46. $lang = "en_us";
  47. $pageData = $conn->loadJSON($lang);
  48. // $_SESSION["userid"]=1;
  49. if (isset($_SESSION["userid"])) {
  50. $start_date = (isset($_REQUEST['start_date'])) ? date('Y-m-d',strtotime(escape_str($_REQUEST['start_date']))) : '';
  51. $end_date = (isset($_REQUEST['end_date'])) ? date('Y-m-d',strtotime(escape_str($_REQUEST['end_date']))) : '';
  52. $type = (isset($_REQUEST['type'])) ? escape_str($_REQUEST['type']) : '';
  53. $pn = escape_str($_REQUEST["pn"]);
  54. $nr = escape_str($_REQUEST["nr"]);
  55. $key = escape_str($_REQUEST["key"]);
  56. //FILTER
  57. //START DATE
  58. $filtercond .= ($start_date != '') ? " AND l.created_on>='" . escape_str($start_date) . " 00:00:00'" : '';
  59. //END DATE
  60. $filtercond .= ($end_date != '') ? " AND l.created_on<='" . escape_str($end_date) . " 23:59:59'" : '';
  61. //FILTER TYPE
  62. if ($type != '') {
  63. switch ($type) {
  64. case "app":
  65. case "web":
  66. case "admin":
  67. $filtercond .= " AND l.device_type='" . escape_str($type) . "'";
  68. break;
  69. }
  70. }
  71. if (!empty($pn) && !empty($nr)) {
  72. // Pagination
  73. $limit_cond .= " limit " . (($pn - 1) * $nr) . ", " . $nr;
  74. }
  75. //GET LOG
  76. $user_log_str = "SELECT SQL_CALC_FOUND_ROWS u.`userid`, u.`smpin`, u.`emp_code`, u.`fname`, u.`lname`, u.`emailid`, u.`mobileno`,u.`role`,u.`dealer_code`,l.module,l.ip,MAX(l.created_on)as created_on FROM `" . TABLE_USER_LOG . "` as l JOIN " . TABLE_USER . " as u ON u.userid=l.userid WHERE l.module='SIGNIN' " . $filtercond . " GROUP BY u.userid ORDER BY l.created_on desc" . $limit_cond;
  77. $data_arr = $conn->getQueryValue($user_log_str);
  78. $total_records_arr = $conn->getQueryValue("select FOUND_ROWS() as total_records");
  79. $total_records = $total_records_arr[0]->total_records;
  80. if (!empty($pn) && !empty($nr)) {
  81. $arr['total_records'] = $total_records;
  82. }
  83. //LOG
  84. $conn->insertUserLog($conn, 'REPORT LOG');
  85. if (!count($data_arr) > 0) {
  86. $arr['total_records']='0';
  87. $arr['report'] = array();
  88. }else
  89. {
  90. if(count($data_arr)>0)
  91. {
  92. foreach($data_arr as $mkey=>$user_arr)
  93. {
  94. $data_arr[$mkey]->dealer=array();
  95. $dealer_str = "SELECT * FROM `" . DMS_DEALER . "` WHERE dealer_code='".$user_arr->dealer_code."' LIMIT 1 ";
  96. $dealer_arr = $conn->getQueryValue($dealer_str);
  97. if(count($dealer_arr)>0)
  98. {
  99. $data_arr[$mkey]->dealer=$dealer_arr;
  100. }
  101. }
  102. }
  103. $arr['report'] = $data_arr;
  104. }
  105. $conn->insertUserLog($conn, 'USER LOG REPORT');
  106. $conn->message(true,$conn->getMessage($lang,'report','success1'),$arr );
  107. } else {
  108. $conn->message(false,$conn->getMessage($lang,'report','error1'));
  109. }
  110. } catch (PDOException $e) {
  111. $conn->message(false,$conn->getMessage($lang,'report','error4'));
  112. }
  113. }
  114. // USER MONTH REPORT
  115. function user_month_report() {
  116. global $conn;
  117. try {
  118. $lang = "en_us";
  119. $pageData = $conn->loadJSON($lang);
  120. if (isset($_SESSION["userid"])) {
  121. $month = (isset($_REQUEST['month'])) ? escape_str($_REQUEST['month']) : '';
  122. $year = (isset($_REQUEST['year'])) ? escape_str($_REQUEST['year']) : '';
  123. $type = (isset($_REQUEST['type'])) ? escape_str($_REQUEST['type']) : '';
  124. //FILTER TYPE
  125. if ($type != '') {
  126. switch ($type) {
  127. case "app":
  128. case "web":
  129. case "admin":
  130. $filtercond .= " AND device_type='" . escape_str($type) . "'";
  131. break;
  132. }
  133. }
  134. $date_data_arr = $conn->getMonthDates($month, $year);
  135. $label_arr = $date_data_arr['date'];
  136. $x = 0;
  137. $user_log_str = " select DATE(created_on)as label_date ,count(DISTINCT userid) as user_count FROM " . TABLE_USER_LOG . " WHERE module='SIGNIN' AND created_on>='" . $date_data_arr['start'] . " 00:00:00' AND created_on<='" . $date_data_arr['last'] . " 23:59:59' " . $filtercond . " GROUP BY DATE(created_on) ORDER BY created_on";
  138. $arr = $conn->getQueryValue($user_log_str);
  139. if (count($arr) != count($date_data_arr['month'])) {
  140. foreach ($arr as $val) {
  141. $date_val_arr[$val->label_date] = $val->user_count;
  142. }
  143. foreach ($date_data_arr['month'] as $res_month) {
  144. $nobj = new stdClass();
  145. $nobj->label_date = $res_month;
  146. $res_month_arr=@explode('-',$res_month);
  147. $nobj->label_date_str = $res_month_arr[2];
  148. $nobj->user_count = (isset($date_val_arr[$nobj->label_date])) ? $date_val_arr[$nobj->label_date] : '0';
  149. $rearr[] = $nobj;
  150. }
  151. } else {
  152. $rearr = $arr;
  153. }
  154. //LOG
  155. $conn->insertUserLog($conn, 'USER LOG MONTH REPORT');
  156. //echo $conn->message(true, $pageData->successMsg[0], array('data' => $rearr, 'date' => $label_arr, 'month' => $date_data_arr['month']));
  157. $arr=array('data' => $rearr, 'date' => $label_arr, 'month' => $date_data_arr['month']);
  158. $conn->message(true,$conn->getMessage($lang,'report','success1'),$arr );
  159. } else {
  160. $conn->message(false,$conn->getMessage($lang,'report','error1'));
  161. }
  162. } catch (PDOException $e) {
  163. $conn->message(false,$conn->getMessage($lang,'report','error4'));
  164. }
  165. }
  166. // ASSESSMENT REPORT
  167. function assessmentreport() {
  168. global $conn;
  169. try {
  170. $lang = "en_us";
  171. $pageData = $conn->loadJSON($lang);
  172. //$_SESSION["userid"]=1;
  173. if (isset($_SESSION["userid"])) {
  174. $data_arr = array();
  175. $start_date = (isset($_REQUEST['start_date'])) ? escape_str($_REQUEST['start_date']) : '';
  176. $end_date = (isset($_REQUEST['end_date'])) ? escape_str($_REQUEST['end_date']) : '';
  177. $pn = escape_str($_REQUEST["pn"]);
  178. $nr = escape_str($_REQUEST["nr"]);
  179. $key = escape_str($_REQUEST["key"]);
  180. //print_r($_REQUEST);
  181. $arr = array();
  182. //CONDITIONS
  183. $lcond = '';
  184. $t_cond = '';
  185. $user_cond = '';
  186. $lcond .= ($start_date != '') ? " AND a.publisheddate>='" . $start_date . "'" : '';
  187. $lcond .= ($end_date != '') ? " AND a.publisheddate<='" . $end_date . "'" : '';
  188. //DATE WITH COND
  189. if ($start_date == '' && $end_date == '') {
  190. $lcond = "AND a.publisheddate<='" . NOW . "'";
  191. }
  192. $total_records = 0;
  193. $get_assess_str = "SELECT SQL_CALC_FOUND_ROWS a.`assessmentid`, a.`assessmentname`,a.`description`,a.`assessmenttype`,a.`assettypeid`,a. `assessmenttimetype` ,a.`assessmenttime`,a.`randomcond`,a.`created_on`,a.publisheddate,a.enddate,a.assessmentnotification,a.attemptslimit,a.`filter_role`, a.`filter_zone`, a.`filter_region`, a.`filter_dealer`,a.status FROM ".TABLE_ASSESSMENT." a WHERE a.assettypeid='1' AND a.status='1' ".$lcond." ORDER BY a.assessmentid DESC";
  194. if (!empty($pn) && !empty($nr)) {
  195. // echo "calling here";
  196. // Pagination
  197. $get_assess_str .= " limit " . (($pn - 1) * $nr) . ", " . $nr;
  198. }
  199. $get_assess_arr = $conn->getQueryValue($get_assess_str);
  200. //echo "select FOUND_ROWS() as total_records";
  201. $total_records_arr = $conn->getQueryValue("select FOUND_ROWS() as total_records");
  202. $total_records = $total_records_arr[0]->total_records;
  203. //print_r($total_records_arr);
  204. if (count($get_assess_arr)>0)
  205. {
  206. //GET ALL STATUS
  207. $status_str = "SELECT * FROM ".TABLE_STATUS;
  208. $status_res_arr=$conn->getQueryValue($status_str);
  209. //print_r($status_res_arr);
  210. if(count($status_res_arr)>0)
  211. {
  212. foreach($status_res_arr as $res)
  213. {
  214. $obj_key=$res->statusid;
  215. $status_arr[$obj_key]=$res->status;
  216. }
  217. }
  218. foreach ($get_assess_arr as $akey=>$res_assess)
  219. {
  220. $get_assess_arr[$akey]->publishedtime=date('H:i',strtotime($res_assess->publisheddate));
  221. $get_assess_arr[$akey]->endtime=date('H:i',strtotime($res_assess->endtime));
  222. $get_assess_arr[$akey]->publisheddate=date('Y-m-d',strtotime($res_assess->publisheddate));
  223. $get_assess_arr[$akey]->enddate=date('Y-m-d',strtotime($res_assess->enddate));
  224. //CHECK ALREADY ATTENDTED
  225. $assessment_result_str = "SELECT * FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid='".$res_assess->assessmentid."' ORDER BY arid DESC";
  226. $assessment_result_arr=$conn->getQueryValue($assessment_result_str);
  227. if(count($assessment_result_arr)>0)
  228. {
  229. // 3-Completed , 4 - In Progress
  230. $get_assess_arr[$akey]->status =($res_assess->status=='1')?'3':'1';
  231. //$res_assess->status = $get_assess_arr[$key]->status;
  232. } else {
  233. $get_assess_arr[$akey]->status ='7';
  234. //$res_assess->status = $get_assess_arr[$key]->status;
  235. }
  236. //EXPIRED
  237. if(strtotime($res_assess->enddate)<strtotime(NOW))
  238. {
  239. $get_assess_arr[$akey]->is_expired='1';
  240. $get_assess_arr[$akey]->status = '8';
  241. //$res_assessment->status = '8';
  242. }
  243. //STATUS STRING
  244. $get_assess_arr[$akey]->statusname=(isset($status_arr[$res_assess->status]))?$status_arr[$res_assess->status]:"";
  245. }
  246. $data_arr=$get_assess_arr;
  247. }
  248. if (!empty($pn) && !empty($nr)) {
  249. $arr['total_records'] = $total_records;
  250. }
  251. $arr['report'] = $data_arr;
  252. $conn->message(true,$conn->getMessage($lang,'report','success1'),$arr );
  253. } else {
  254. $conn->message(false,$conn->getMessage($lang,'report','error1'));
  255. }
  256. } catch (PDOException $e) {
  257. $conn->message(false,$conn->getMessage($lang,'report','error4'));
  258. }
  259. }
  260. // ASSESSMENT USER REPORT
  261. function assessmentuserreport() {
  262. global $conn;
  263. try {
  264. $lang = "en_us";
  265. $pageData = $conn->loadJSON($lang);
  266. //$_SESSION["userid"]=1;
  267. if (isset($_SESSION["userid"])) {
  268. $assessmentid = escape_str($_REQUEST["assessmentid"]);
  269. $assessment_user_str = "SELECT au.*,u.fname,u.lname,u.dealer_code FROM ".TABLE_ASSESSMENT_USER." as au JOIN ".TABLE_USER." as u ON au.userid=u.userid LEFT JOIN ".DMS_DEALER." as d ON u.dealer_code=d.dealer_code WHERE au.assessmentid='".$res_assess->assessmentid."' ORDER BY au.id DESC";
  270. $assessment_user_arr=$conn->getQueryValue($assessment_user_str);
  271. $conn->message(true,$conn->getMessage($lang,'report','success1'),$arr );
  272. } else {
  273. $conn->message(false,$conn->getMessage($lang,'report','error1'));
  274. }
  275. } catch (PDOException $e) {
  276. $conn->message(false,$conn->getMessage($lang,'report','error4'));
  277. }
  278. }
  279. function getuserdata($s3, $userid) {
  280. global $conn;
  281. $query_getuser_str = " SELECT userid,`emp_code`, `password`, `fname`, `lname`, `emailid`, `mobileno`, `role`, `dealer_code`, `address_1`, `address_2`, `address_3`, `profile_photo`, `dob`, `country`, `state`, `city`, `language`, `status`, `last_password_change`, `is_first_login` FROM " . TABLE_USER . " WHERE userid='" . $userid . "' LIMIT 1 ";
  282. $query_getuser_arr = $conn->getQueryValue($query_getuser_str);
  283. if (count($query_getuser_arr) > 0) {
  284. if ($query_getuser_arr[0]->profile_photo != '') {
  285. //S3 URL
  286. $obj = new stdClass();
  287. $obj->key_name = S3_PROFILE_IMAGE_URL . $query_getuser_arr[0]->profile_photo;
  288. $url = awsfileserver::getS3Url($s3, S3_BUCKET, $obj);
  289. $query_getuser_arr[0]->profile_photo = $url;
  290. } else {
  291. $query_getuserarr['result'][0]->profile_photo = USER_NOIMAGE_URL;
  292. }
  293. return $query_getuser_arr[0];
  294. } else {
  295. return array();
  296. }
  297. }
  298. //ASSESSMENT USER REPORT LOG
  299. function userwiseassessmentreport() {
  300. global $conn;
  301. try {
  302. $lang = "en_us";
  303. $pageData = $conn->loadJSON($lang);
  304. //$_SESSION["userid"]=1;
  305. if (isset($_SESSION["userid"])) {
  306. $start_date = (isset($_REQUEST['start_date'])) ? escape_str($_REQUEST['start_date']) : '';
  307. $end_date = (isset($_REQUEST['end_date'])) ? escape_str($_REQUEST['end_date']) : '';
  308. $trainingid = (isset($_REQUEST['trainingid'])) ? escape_str($_REQUEST['trainingid']) : '';
  309. $category = (isset($_REQUEST['category'])) ? escape_str($_REQUEST['category']) : '';
  310. $dealer_code = (isset($_REQUEST['dealer_code'])) ? escape_str($_REQUEST['dealer_code']) : '';
  311. $supplier = (isset($_REQUEST['supplier'])) ? escape_str($_REQUEST['supplier']) : '';
  312. $userid = (isset($_REQUEST['userid'])) ? escape_str($_REQUEST['userid']) : '';
  313. //CONDITIONS
  314. $lcond = '';
  315. $t_cond = '';
  316. $user_cond = '';
  317. $lcond .= ($trainingid != '') ? " AND a.trainingid='" . $trainingid . "'" : '';
  318. $lcond .= ($category != '') ? " AND a.cateid='" . $category . "'" : '';
  319. $lcond .= ($start_date != '') ? " AND au.publisheddate>='" . $start_date . "'" : '';
  320. $lcond .= ($end_date != '') ? " AND au.publisheddate<='" . $end_date . "'" : '';
  321. $lcond .= ($userid != '') ? " AND au.userid='" . $userid . "'" : '';
  322. //GET ASSESSMENT
  323. $assessment_str = "SELECT a.assessmentid,a.assessmentname FROM `" . TABLE_ASSESSMENT . "` as a JOIN " . TABLE_ASSESSMENT_USER . " as au ON a.assessmentid=au.assessmentid " . $t_cond . " WHERE a.assettypeid='1' " . $lcond . " GROUP BY a.assessmentid ";
  324. $assessment_arr = $conn->getQueryValue($assessment_str);
  325. if (count($assessment_arr) > 0) {
  326. foreach ($assessment_arr as $res_assess) {
  327. //GET ASSESSMENT HIGHSCORE
  328. $get_score_str = "SELECT au.highscore,au.highscorearid,end_time FROM `" . TABLE_ASSESSMENT_USER . "` as au JOIN (SELECT assessmentid,MAX(enddatetime)as end_time FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid='" . $res_assess->assessmentid . "' AND userid='" . $userid . "' )as ar ON au.assessmentid=au.assessmentid WHERE au.assessmentid='" . $res_assess->assessmentid . "' AND au.userid='" . $userid . "' LIMIT 1";
  329. $get_score_arr = $conn->getQueryValue($get_score_str);
  330. $res_assess->highscore = (count($get_score_arr) > 0 && isset($get_score_arr[0]->highscore) && $get_score_arr[0]->highscore > 0) ? $get_score_arr[0]->highscore : '0';
  331. $res_assess->end_time = (count($get_score_arr) > 0 && isset($get_score_arr[0]->end_time) && $get_score_arr[0]->end_time != '0000-00-00 00:00:00') ? $get_score_arr[0]->end_time : '';
  332. $res_assess->tot_ques_count = '0';
  333. $res_assess->ans_ques_count = '0';
  334. if (count($get_score_arr) > 0) {
  335. //GET ASSESSMENT USER RESULT
  336. //$get_ques_count_str = "SELECT * FROM (SELECT COUNT(DISTINCT aqid) as tot_ques FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE arid='" . $get_score_arr[0]->highscorearid . "' AND userid='" . $userid . "' GROUP BY assessmentid )as a,(SELECT COUNT(DISTINCT aqid) as ans_ques FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE arid='" . $get_score_arr[0]->highscorearid . "' AND userid='" . $userid . "' AND choiseid!=0 GROUP BY assessmentid )as b";
  337. //$get_ques_count_str = "SELECT * FROM (SELECT SUM(total_question) as tot_ques FROM " . TABLE_ASSESSMENT_SUPPLIER . " WHERE assessmentid='" . $res_assess->assessmentid . "' )as a,(SELECT COUNT(DISTINCT aqid) as ans_ques FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE arid='" . $get_score_arr[0]->highscorearid . "' AND userid='" . $userid . "' AND choiseid!=0 GROUP BY assessmentid )as b";
  338. $get_ques_count_str = "SELECT tot_ques,ans_ques FROM (SELECT SUM(total_question) as tot_ques,assessmentid FROM ".TABLE_ASSESSMENT_SUPPLIER." WHERE assessmentid='".$res_assess->assessmentid ."' ) as a LEFT JOIN (SELECT COUNT(DISTINCT aqid) as ans_ques,assessmentid FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE arid='" . $get_score_arr[0]->highscorearid . "' AND userid='" . $userid . "' AND choiseid!=0 GROUP BY assessmentid)as b ON a.assessmentid=b.assessmentid";
  339. $get_ques_count_arr = $conn->getQueryValue($get_ques_count_str);
  340. if (count($get_ques_count_arr) > 0) {
  341. $res_assess->tot_ques_count = $get_ques_count_arr[0]->tot_ques;
  342. $res_assess->ans_ques_count = ($get_ques_count_arr[0]->ans_ques)?$get_ques_count_arr[0]->ans_ques:'0';
  343. }
  344. }
  345. //GET ASSESSMENT SUPPLIER
  346. $get_supplier_str = "SELECT s.suppliername,s.supplierid,asu.total_question as tot_ques_count FROM (SELECT * FROM `" . TABLE_ASSESSMENT_SUPPLIER . "` WHERE assessmentid='" . $res_assess->assessmentid . "') as asu JOIN " . TABLE_SUPPLIER . " as s ON asu.supplierid=s.supplierid WHERE asu.assessmentid='" . $res_assess->assessmentid . "' ";
  347. $get_supplier_arr = $conn->getQueryValue($get_supplier_str);
  348. if (count($get_supplier_arr) > 0) {
  349. foreach ($get_supplier_arr as $nkey => $res_supplier) {
  350. $get_supplier_arr[$nkey]->tot_ques_count = $res_supplier->tot_ques_count;
  351. $get_supplier_arr[$nkey]->ans_ques_count = '0';
  352. $get_supplier_arr[$nkey]->score=getAssessmentSupplierScore($userid,$res_assess->assessmentid,$res_supplier->supplierid,$get_score_arr[0]->highscorearid);
  353. //$get_sques_count_str = "SELECT * FROM (SELECT COUNT(DISTINCT aqid) as tot_ques FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE arid='" . $get_score_arr[0]->highscorearid . "' AND userid='" . $userid . "' AND aqid IN (SELECT aqid FROM " . TABLE_ASSESSMENT_QUESTION . " WHERE asid='" . $res_supplier->supplierid . "') GROUP BY assessmentid )as a,(SELECT COUNT(DISTINCT aqid) as ans_ques FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE arid='" . $get_score_arr[0]->highscorearid . "' AND userid='" . $userid . "' AND choiseid!=0 AND aqid IN (SELECT aqid FROM " . TABLE_ASSESSMENT_QUESTION . " WHERE asid='" . $res_supplier->supplierid . "') GROUP BY assessmentid )as b";
  354. $get_sques_count_str = " SELECT COUNT(DISTINCT aqid) as ans_ques FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE arid='" . $get_score_arr[0]->highscorearid . "' AND userid='" . $userid . "' AND choiseid!=0 AND aqid IN (SELECT aqid FROM " . TABLE_ASSESSMENT_QUESTION . " WHERE asid='" . $res_supplier->supplierid . "') GROUP BY assessmentid ";
  355. $get_sques_count_arr = $conn->getQueryValue($get_sques_count_str);
  356. if (count($get_sques_count_arr) > 0) {
  357. // $get_supplier_arr[$nkey]->tot_ques_count = $get_sques_count_arr[0]->tot_ques;
  358. $get_supplier_arr[$nkey]->ans_ques_count = $get_sques_count_arr[0]->ans_ques;
  359. }
  360. }
  361. $res_assess->supplier = $get_supplier_arr;
  362. }
  363. $data_arr[] = $res_assess;
  364. }
  365. }
  366. echo $conn->message(true, $pageData->successMsg[0], $data_arr);
  367. exit;
  368. } else {
  369. echo $conn->message(false, $pageData->errorMsg[2]);
  370. exit;
  371. }
  372. } catch (PDOException $e) {
  373. echo $e->getMessage();
  374. }
  375. }
  376. //ASSESSMENT USER RESULT REPORT LOG
  377. function userresultassessmentreport() {
  378. global $conn;
  379. try {
  380. $lang = "en_us";
  381. $pageData = $conn->loadJSON($lang);
  382. if (isset($_SESSION["userid"])) {
  383. $supplier = (isset($_REQUEST['supplier'])) ? escape_str($_REQUEST['supplier']) : '';
  384. $userid = (isset($_REQUEST['userid'])) ? escape_str($_REQUEST['userid']) : '';
  385. $assessmentid = (isset($_REQUEST['assessmentid'])) ? escape_str($_REQUEST['assessmentid']) : '';
  386. //CONDITIONS
  387. $lcond = " AND a.assessmentid='" . $assessmentid . "' AND au.userid='" . $userid . "'";
  388. $t_cond = '';
  389. $user_cond = '';
  390. $data_arr=array();
  391. //GET ASSESSMENT
  392. $assessment_str = "SELECT a.assessmentid,a.assessmentname,au.highscorearid FROM `" . TABLE_ASSESSMENT . "` as a JOIN " . TABLE_ASSESSMENT_USER . " as au ON a.assessmentid=au.assessmentid " . $t_cond . " WHERE a.assettypeid='1' " . $lcond . " LIMIT 1";
  393. $assessment_arr = $conn->getQueryValue($assessment_str);
  394. if (count($assessment_arr) > 0) {
  395. if ($supplier != '') {
  396. $sup_cond = " JOIN (SELECT * FROM " . TABLE_ASSESSMENT_QUESTION . " WHERE assessmentid='" . $assessmentid . "' AND asid='" . $supplier . "')as aq ON ur.assessmentid=aq.assessmentid ";
  397. }
  398. $get_question_str = "SELECT ur.* FROM " . TABLE_ASSESSMENT_USERRESULT . " as ur " . $sup_cond . " WHERE ur.userid='" . $userid . "' AND ur.arid='" . $assessment_arr[0]->highscorearid . "' GROUP BY ur.aqid ORDER BY ur.userresultid ASC";
  399. $get_question_arr = $conn->getQueryValue($get_question_str);
  400. if (count($get_question_arr) > 0) {
  401. $arid = $assessment_arr[0]->highscorearid;
  402. $total_ques_score = 0;
  403. $total_ans_score = 0;
  404. foreach ($get_question_arr as $res_value) {
  405. //GET THE QUESTION
  406. $ques_str = "SELECT q.id as qid,q.`supplierid`, q.`questiontypeid`, q.`questiontext`, q.`qimage`, q.`qvideo`,q.score FROM " . TABLE_QUESTION . " as q WHERE id='" . $res_value->qid . "' LIMIT 1";
  407. $ques_arr = $conn->getQueryValue($ques_str);
  408. if (count($ques_arr) > 0) {
  409. //GET ALL QUESTION OPTIONS
  410. $ques_option_str = "SELECT op.optid,op.opttext,op.score,op.iscorrect,'0' as selected FROM " . TABLE_QUESTIONOPTION . " as op WHERE op.qid='" . $res_value->qid . "'";
  411. $ques_option_arr = $conn->getQueryValue($ques_option_str);
  412. //GET USER ANSWERED OPTIONS
  413. $user_answer_str = "SELECT * FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE userid='" . $userid . "' AND arid='" . $arid . "' AND aqid='" . $res_value->aqid . "'";
  414. $user_answer_arr = $conn->getQueryValue($user_answer_str);
  415. $ques_arr[0]->is_correct = '0';
  416. $ques_arr[0]->ans_score = '0';
  417. $correct_ans_arr = array();
  418. $choise_arr = array();
  419. if (count($ques_option_arr) > 0) {
  420. if (count($user_answer_arr) > 0) {
  421. $choise_arr = array_column($user_answer_arr, 'choiseid');
  422. }
  423. $ques_ans = array();
  424. $ques_ans_score = 0;
  425. //print_r( $user_answer_arr);
  426. foreach ($ques_option_arr as $mkey => $res_opt) {
  427. //print_r($ques_option_arr);
  428. if (count($user_answer_arr) > 0) {
  429. $ques_option_arr[$mkey]->selected = (in_array($res_opt->optid, $choise_arr)) ? '1' : '0';
  430. //ANSWERED ANS
  431. if ($ques_option_arr[$mkey]->selected == '1') {
  432. $ques_ans[] = $res_opt;
  433. }
  434. }
  435. //correct ans
  436. if ($res_opt->iscorrect == '1') {
  437. $correct_ans_arr[] = $res_opt->optid;
  438. }
  439. }
  440. $ques_ans_score += $ques_arr[0]->score;
  441. $total_ques_score += $ques_arr[0]->score;
  442. if (count($correct_ans_arr) == count($choise_arr)) {
  443. $result = array_diff($correct_ans_arr, $choise_arr);
  444. $ques_arr[0]->is_correct = (count($result) == 0) ? '1' : '0';
  445. if ($ques_arr[0]->is_correct == '1') {
  446. $ques_arr[0]->ans_score = $ques_ans_score;
  447. $total_ans_score += $ques_ans_score;
  448. }
  449. }
  450. $ques_arr[0]->answer = $ques_ans;
  451. }
  452. }
  453. $data_arr[] = $ques_arr[0];
  454. }
  455. }
  456. $percentage_val = ($total_ques_score > 0) ? round(($total_ans_score / $total_ques_score) * 100) : 0;
  457. }
  458. echo $conn->message(true, $pageData->successMsg[0], array('ques' => $data_arr, 'percentage' => $percentage_val));
  459. exit;
  460. } else {
  461. echo $conn->message(false, $pageData->errorMsg[2]);
  462. exit;
  463. }
  464. } catch (PDOException $e) {
  465. echo $e->getMessage();
  466. }
  467. }
  468. //TRAINING CONTENT REPORT
  469. function trainingcontentreport() {
  470. global $conn;
  471. try {
  472. $lang = "en_us";
  473. $pageData = $conn->loadJSON($lang);
  474. if (isset($_SESSION["userid"])) {
  475. $data_arr = array();
  476. $start_date = (isset($_REQUEST['start_date'])) ? escape_str($_REQUEST['start_date']) : '';
  477. $end_date = (isset($_REQUEST['end_date'])) ? escape_str($_REQUEST['end_date']) : '';
  478. $trainingid = (isset($_REQUEST['trainingid'])) ? escape_str($_REQUEST['trainingid']) : '';
  479. $category = (isset($_REQUEST['category'])) ? escape_str($_REQUEST['category']) : '';
  480. $dealer_code = (isset($_REQUEST['dealer_code'])) ? escape_str($_REQUEST['dealer_code']) : '';
  481. //$supplier = (isset($_REQUEST['supplier'])) ? escape_str($_REQUEST['supplier']) : '';
  482. //CONDITIONS
  483. $lcond = '';
  484. $t_cond = '';
  485. $user_cond = '';
  486. $lcond .= ($trainingid != '') ? " AND a.trainingid='" . $trainingid . "'" : '';
  487. $lcond .= ($category != '') ? " AND a.cateid='" . $category . "'" : '';
  488. $lcond .= ($start_date != '') ? " AND au.publisheddate>='" . $start_date . "'" : '';
  489. $lcond .= ($end_date != '') ? " AND au.publisheddate<='" . $end_date . "'" : '';
  490. $pn = escape_str($_REQUEST["pn"]);
  491. $nr = escape_str($_REQUEST["nr"]);
  492. $key = escape_str($_REQUEST["key"]);
  493. $get_training_user = "SELECT SQL_CALC_FOUND_ROWS u.`userid`, u.`emp_code`, u.`fname`, u.`lname`, u.`emailid`, u.`mobileno`, u.`role`, u.`dealer_code`, u.`address_1`, u.`address_2`, u.`address_3`, u.`profile_photo`, u.`dob`, u.`country`, u.`state`, u.`city`, u.`language`, u.`status`, u.`is_deleted` FROM (SELECT * FROM `" . TABLE_TRAINING_PARTICIPANT . "` WHERE trainingid='" . $trainingid . "') as p JOIN " . TABLE_USER . " as u ON p.empid=u.userid " . $t_cond . " GROUP BY p.empid ";
  494. if (!empty($pn) && !empty($nr)) {
  495. // Pagination
  496. $get_training_user .= " limit " . (($pn - 1) * $nr) . ", " . $nr;
  497. }
  498. $data_arr = $conn->getQueryValue($get_training_user);
  499. $total_records_arr = $conn->getQueryValue("select FOUND_ROWS() as total_records");
  500. $total_records = $total_records_arr[0]->total_records;
  501. if (count($data_arr) > 0) {
  502. foreach ($data_arr as $key => $value) {
  503. $dealer_type=userDealertype($value->userid);
  504. switch(strtoupper($dealer_type))
  505. {
  506. case "P":
  507. case "K":
  508. $user_cond=" AND ( dealer_type='".$dealer_type."' OR dealer_type='O')";
  509. break;
  510. default:
  511. $user_cond=" AND dealer_type IN('O','P','K')";
  512. break;
  513. }
  514. $get_total_topic_content = "SELECT COUNT(tacontentid) as content_count FROM " . VIEW_TRAINING_CONTENT . " WHERE trainingid='" . $trainingid . "'".$user_cond;
  515. $get_total_topic_content_arr = $conn->getQueryValue($get_total_topic_content);
  516. $total_content = (count($get_total_topic_content_arr) > 0) ? $get_total_topic_content_arr[0]->content_count : 0;
  517. $get_user_complete_count_str = "SELECT COUNT(id) as complete_count FROM " . TABLE_USER_COMPLETE_CONTENT . " WHERE userid='" . $value->userid . "' AND trainingid='" . $trainingid . "' AND status='2' GROUP BY status ";
  518. $get_user_complete_content_arr = $conn->getQueryValue($get_user_complete_count_str);
  519. $user_completed_content = (count($get_user_complete_content_arr) > 0) ? $get_user_complete_content_arr[0]->complete_count : 0;
  520. $data_arr[$key]->total_content = $total_content;
  521. $data_arr[$key]->completed_content = $user_completed_content;
  522. $data_arr[$key]->percentage = ($total_content>0 && $user_completed_content>0)? round(($user_completed_content/$total_content)*100):'0';
  523. }
  524. }
  525. $arr['report'] = $data_arr;
  526. if (!empty($pn) && !empty($nr)) {
  527. $arr['total_records'] = $total_records;
  528. }
  529. echo $conn->message(true, $pageData->successMsg[0], $arr);
  530. exit;
  531. } else {
  532. echo $conn->message(false, $pageData->errorMsg[2]);
  533. exit;
  534. }
  535. } catch (PDOException $e) {
  536. echo $e->getMessage();
  537. }
  538. }
  539. //TRAINING SUPPLIER CONTENT REPORT
  540. function usersuppliercontentreport() {
  541. global $conn;
  542. try {
  543. $lang = "en_us";
  544. $pageData = $conn->loadJSON($lang);
  545. if (isset($_SESSION["userid"])) {
  546. $data_arr = array();
  547. $start_date = (isset($_REQUEST['start_date'])) ? date('Y-m-d',strtotime(escape_str($_REQUEST['start_date']))) : '';
  548. $end_date = (isset($_REQUEST['end_date'])) ? date('Y-m-d',strtotime(escape_str($_REQUEST['end_date']))) : '';
  549. $trainingid = (isset($_REQUEST['trainingid'])) ? escape_str($_REQUEST['trainingid']) : '';
  550. $category = (isset($_REQUEST['category'])) ? escape_str($_REQUEST['category']) : '';
  551. $dealer_code = (isset($_REQUEST['dealer_code'])) ? escape_str($_REQUEST['dealer_code']) : '';
  552. $userid = (isset($_REQUEST['userid'])) ? escape_str($_REQUEST['userid']) : '';
  553. // $pn = escape_str($_REQUEST["pn"]);
  554. // $nr = escape_str($_REQUEST["nr"]);
  555. // $key = escape_str($_REQUEST["key"]);
  556. //CONDITIONS
  557. // $lcond='';
  558. // $t_cond='';
  559. // $user_cond='';
  560. // $lcond.=($trainingid!='')?" AND a.trainingid='".$trainingid."'":'';
  561. // $lcond.=($category!='')?" AND a.cateid='".$category."'":'';
  562. // $lcond.=($start_date!='')?" AND au.publisheddate>='".$start_date."'":'';
  563. // $lcond.=($end_date!='')?" AND au.publisheddate<='".$end_date."'":'';
  564. $get_training_user = "SELECT u.`userid`, u.`emp_code`, u.`fname`, u.`lname`, u.`emailid`, u.`mobileno`, u.`role`, u.`dealer_code`, u.`address_1`, u.`address_2`, u.`address_3`, u.`profile_photo`, u.`dob`, u.`country`, u.`state`, u.`city`, u.`language`, u.`status`, u.`is_deleted` FROM (SELECT * FROM `" . TABLE_TRAINING_PARTICIPANT . "` WHERE trainingid='" . $trainingid . "') as p JOIN " . TABLE_USER . " as u ON p.empid=u.userid WHERE u.userid='" . $userid . "' GROUP BY p.empid LIMIT 1 ";
  565. $user_data_arr = $conn->getQueryValue($get_training_user);
  566. $data_arr = array();
  567. if (count($user_data_arr) > 0) {
  568. //GET SUPPLIER
  569. $get_allsupplier_str = "SELECT supplierid FROM " . VIEW_TRAINING_CONTENT . " WHERE trainingid='" . $trainingid . "' GROUP BY supplierid";
  570. $get_allsupplier_arr = $conn->getQueryValue($get_allsupplier_str);
  571. if (count($get_allsupplier_arr) > 0) {
  572. foreach ($get_allsupplier_arr as $res_supplier) {
  573. $get_allsupplier_str = "SELECT suppliername FROM " . TABLE_SUPPLIER . " WHERE supplierid='" . $res_supplier->supplierid . "' LIMIT 1";
  574. $get_allsupplier_arr = $conn->getQueryValue($get_allsupplier_str);
  575. if (count($get_allsupplier_arr) > 0) {
  576. $res_supplier->suppliername = $get_allsupplier_arr[0]->suppliername;
  577. }
  578. $dealer_type=userDealertype($userid);
  579. switch(strtoupper($dealer_type))
  580. {
  581. case "P":
  582. case "K":
  583. $user_cond=" AND ( dealer_type='".$dealer_type."' OR dealer_type='O')";
  584. break;
  585. default:
  586. $user_cond=" AND dealer_type IN('O','P','K')";
  587. break;
  588. }
  589. $get_total_topic_content = "SELECT COUNT(tacontentid) as content_count FROM " . VIEW_TRAINING_CONTENT . " WHERE trainingid='" . $trainingid . "' AND supplierid='" . $res_supplier->supplierid . "' ". $user_cond;
  590. $get_total_topic_content_arr = $conn->getQueryValue($get_total_topic_content);
  591. $total_content = (count($get_total_topic_content_arr) > 0) ? $get_total_topic_content_arr[0]->content_count : 0;
  592. $get_user_complete_count_str = "SELECT COUNT(id) as complete_count FROM " . TABLE_USER_COMPLETE_CONTENT . " WHERE userid='" . $userid . "' AND trainingid='" . $trainingid . "' AND supplierid='" . $res_supplier->supplierid . "' AND status='2' GROUP BY status ";
  593. $get_user_complete_content_arr = $conn->getQueryValue($get_user_complete_count_str);
  594. $user_completed_content = (count($get_user_complete_content_arr) > 0) ? $get_user_complete_content_arr[0]->complete_count : 0;
  595. $res_supplier->total_content = $total_content;
  596. $res_supplier->completed_content = $user_completed_content;
  597. $res_supplier->percentage=($res_supplier->total_content>0 && $res_supplier->completed_content>0)? round(($res_supplier->completed_content/$res_supplier->total_content)*100):'0';
  598. $data_arr[] = $res_supplier;
  599. }
  600. }
  601. }
  602. echo $conn->message(true, $pageData->successMsg[0], $data_arr);
  603. exit;
  604. } else {
  605. echo $conn->message(false, $pageData->errorMsg[2]);
  606. exit;
  607. }
  608. } catch (PDOException $e) {
  609. echo $e->getMessage();
  610. }
  611. }
  612. //TRAINING CONTENT FILE REPORT
  613. function usercontentfilereport() {
  614. global $conn;
  615. try {
  616. $lang = "en_us";
  617. $pageData = $conn->loadJSON($lang);
  618. if (isset($_SESSION["userid"])) {
  619. $data_arr = array();
  620. $start_date = (isset($_REQUEST['start_date'])) ? escape_str($_REQUEST['start_date']) : '';
  621. $end_date = (isset($_REQUEST['end_date'])) ? escape_str($_REQUEST['end_date']) : '';
  622. $trainingid = (isset($_REQUEST['trainingid'])) ? escape_str($_REQUEST['trainingid']) : '';
  623. $category = (isset($_REQUEST['category'])) ? escape_str($_REQUEST['category']) : '';
  624. $dealer_code = (isset($_REQUEST['dealer_code'])) ? escape_str($_REQUEST['dealer_code']) : '';
  625. $userid = (isset($_REQUEST['userid'])) ? escape_str($_REQUEST['userid']) : '';
  626. $supplier = (isset($_REQUEST['supplier'])) ? escape_str($_REQUEST['supplier']) : '';
  627. //CONDITIONS
  628. // $lcond='';
  629. // $t_cond='';
  630. // $user_cond='';
  631. // $lcond.=($trainingid!='')?" AND a.trainingid='".$trainingid."'":'';
  632. // $lcond.=($category!='')?" AND a.cateid='".$category."'":'';
  633. // $lcond.=($start_date!='')?" AND au.publisheddate>='".$start_date."'":'';
  634. // $lcond.=($end_date!='')?" AND au.publisheddate<='".$end_date."'":'';
  635. $get_allsupplier_arr = array();
  636. $get_training_user = "SELECT u.`userid`, u.`emp_code`, u.`fname`, u.`lname`, u.`emailid`, u.`mobileno`, u.`role`, u.`dealer_code`, u.`address_1`, u.`address_2`, u.`address_3`, u.`profile_photo`, u.`dob`, u.`country`, u.`state`, u.`city`, u.`language`, u.`status`, u.`is_deleted` FROM (SELECT * FROM `" . TABLE_TRAINING_PARTICIPANT . "` WHERE trainingid='" . $trainingid . "') as p JOIN " . TABLE_USER . " as u ON p.empid=u.userid WHERE u.userid='" . $userid . "' GROUP BY p.empid LIMIT 1 ";
  637. $user_data_arr = $conn->getQueryValue($get_training_user);
  638. $supplier_name = '';
  639. $data_arr = array();
  640. if (count($user_data_arr) > 0) {
  641. $get_allsupplier_str = "SELECT suppliername FROM " . TABLE_SUPPLIER . " WHERE supplierid='" . $supplier . "' LIMIT 1";
  642. $get_allsupplier_arr = $conn->getQueryValue($get_allsupplier_str);
  643. $supplier_name = (count($get_allsupplier_arr) > 0) ? $get_allsupplier_arr[0]->suppliername : '';
  644. $dealer_type=userDealertype($userid);
  645. switch(strtoupper($dealer_type))
  646. {
  647. case "P":
  648. case "K":
  649. $user_cond=" AND ( dealer_type='".$dealer_type."' OR dealer_type='O')";
  650. break;
  651. default:
  652. $user_cond=" AND dealer_type IN('O','P','K')";
  653. break;
  654. }
  655. //GET CONTENT
  656. $get_all_content_str = "SELECT `contentid`,tacontentid, `assettopicid` FROM " . VIEW_TRAINING_CONTENT . " WHERE trainingid='" . $trainingid . "' AND supplierid='" . $supplier . "' ".$user_cond;
  657. $get_all_content_arr = $conn->getQueryValue($get_all_content_str);
  658. //GET CONTENT
  659. $get_filetype_str = "SELECT * FROM " . TABLE_FILETYPE . " ";
  660. $get_filetype_arr = $conn->getQueryValue($get_filetype_str);
  661. $filetype_arr = array();
  662. if (count($get_filetype_arr) > 0) {
  663. foreach ($get_filetype_arr as $res_file) {
  664. $id = $res_file->id;
  665. $filetype_arr[$id] = $res_file;
  666. }
  667. }
  668. if (count($get_all_content_arr) > 0) {
  669. foreach ($get_all_content_arr as $res_content) {
  670. $get_topic_str = "SELECT a.title,b.topicname,c.filetypeid FROM (SELECT contentid,assettopicid,title FROM " . TABLE_ASSET_CONTENT . " WHERE contentid='" . $res_content->contentid . "') as a JOIN (SELECT assettopicid,topicname FROM " . TABLE_ASSET_TOPIC . " WHERE assettopicid='" . $res_content->assettopicid . "') as b ON a.assettopicid=b.assettopicid LEFT JOIN (SELECT * FROM " . TABLE_ASSET_FILE . " WHERE contentid='" . $res_content->contentid . "' ) as c ON c.contentid=a.contentid LIMIT 1";
  671. $get_topic_arr = $conn->getQueryValue($get_topic_str);
  672. $res_content->title = '';
  673. $res_content->topicname = '';
  674. $res_content->filetypeid = '';
  675. $res_content->filetype = '';
  676. if (count($get_topic_arr) > 0) {
  677. $filetypeid = $get_topic_arr[0]->filetypeid;
  678. $get_topic_arr[0]->filetype = $filetype_arr[$filetypeid]->filetype;
  679. // $res_content->content=$get_topic_arr[0];
  680. //ASSSIGN KEY TO MAIN OBJ
  681. if (count($get_topic_arr[0]) > 0) {
  682. foreach ($get_topic_arr[0] as $ckey => $cvalue) {
  683. $res_content->$ckey = $cvalue;
  684. }
  685. }
  686. }
  687. $get_complete_status_str = "SELECT id,status FROM " . TABLE_USER_COMPLETE_CONTENT . " WHERE userid='" . $userid . "' AND trainingid='" . $trainingid . "' AND supplierid='" . $supplier . "' AND status='2' AND tacontentid='" . $res_content->tacontentid . "' LIMIT 1";
  688. $get_complete_status_arr = $conn->getQueryValue($get_complete_status_str);
  689. $res_content->completed_status = (count($get_user_complete_content_arr) > 0) ? '1' : '0';
  690. $data_arr[] = $res_content;
  691. }
  692. }
  693. }
  694. echo $conn->message(true, $pageData->successMsg[0], array('supplier' => $supplier_name, 'data' => $data_arr));
  695. exit;
  696. } else {
  697. echo $conn->message(false, $pageData->errorMsg[2]);
  698. exit;
  699. }
  700. } catch (PDOException $e) {
  701. echo $e->getMessage();
  702. }
  703. }
  704. function getAssessmentSupplierScore($userid,$assessmentid,$supplierid,$arid)
  705. {
  706. global $conn;
  707. $percentage_score=0;
  708. if($arid>0)
  709. {
  710. //GET ASSESSMENT QUESTION TOTAL SCORE
  711. $assessmentscore_str = "SELECT SUM(op.score) as totalscore FROM (SELECT * FROM ".TABLE_ASSESSMENT_QUESTION." WHERE assessmentid='".$assessmentid."' AND asid='".$supplierid."' ) aq JOIN (SELECT * FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE assessmentid='".$assessmentid."' AND arid='".$arid."' )as ur ON ur.aqid=aq.aqid JOIN (SELECT * FROM ".TABLE_QUESTIONOPTION." )as op ON aq.qid=op.qid WHERE aq.assessmentid='".$assessmentid."' AND op.iscorrect=1 ";
  712. $assessmentscore_arr=$conn->getQueryValue($assessmentscore_str);
  713. $total_score='0';
  714. if(count($assessmentscore_arr)>0)
  715. {
  716. $total_score=($assessmentscore_arr[0]->totalscore)?$assessmentscore_arr[0]->totalscore:'0';
  717. }
  718. $userscore_str = "SELECT SUM(op.score) as totalscore FROM ".TABLE_QUESTIONOPTION." as op JOIN (SELECT * FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE assessmentid='".$assessmentid."' AND arid='".$arid."' )as ar ON ar.choiseid=op.optid JOIN (SELECT * FROM ".TABLE_ASSESSMENT_QUESTION." WHERE assessmentid='".$assessmentid."' AND asid='".$supplierid."' )as aq ON ar.aqid=aq.aqid JOIN ".TABLE_QUESTION." as q ON ar.qid=q.id WHERE ar.assessmentid='".$assessmentid."' AND q.questiontypeid='1' AND op.iscorrect=1 AND ar.arid='".$arid."'";
  719. $userscore_arr=$conn->getQueryValue($userscore_str);
  720. $user_score='0';
  721. if(count($userscore_arr)>0)
  722. {
  723. $user_score=($userscore_arr[0]->totalscore)?$userscore_arr[0]->totalscore:'0';
  724. }
  725. //CHECK MULTI CHOICE
  726. $get_multi_choice_ques_str = "SELECT ar.* FROM (SELECT * FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE assessmentid='".$assessmentid."' AND arid='".$arid."' ) as ar JOIN ".TABLE_QUESTION." as q ON ar.qid=q.id JOIN (SELECT * FROM ".TABLE_ASSESSMENT_QUESTION." WHERE assessmentid='".$assessmentid."' AND asid='".$supplierid."' )as aq ON ar.aqid=aq.aqid WHERE ar.assessmentid='".$assessmentid."' AND q.questiontypeid='2' AND ar.arid='".$arid."' GROUP BY ar.aqid ";
  727. $get_multi_choice_arr=$conn->getQueryValue($get_multi_choice_ques_str);
  728. if(count($userscore_arr)>0)
  729. {
  730. foreach($get_multi_choice_arr as $res_multi)
  731. {
  732. //GET ALL QUESTION OPTIONS
  733. $ques_option_str ="SELECT op.optid,op.opttext,op.score,op.iscorrect FROM ".TABLE_QUESTIONOPTION." as op WHERE op.qid='".$res_multi->qid."'";
  734. $ques_option_arr=$conn->getQueryValue($ques_option_str);
  735. //GET USER ANSWERED OPTIONS
  736. $user_answer_str ="SELECT * FROM ".TABLE_ASSESSMENT_USERRESULT." WHERE userid='".$userid."' AND arid='".$arid."' AND aqid='".$res_multi->aqid."'";
  737. $user_answer_arr=$conn->getQueryValue($user_answer_str);
  738. $correct_ans_arr=array();
  739. $choise_arr=array();
  740. if(count($ques_option_arr)>0)
  741. {
  742. if(count($user_answer_arr)>0)
  743. {
  744. $choise_arr=array_column($user_answer_arr,'choiseid');
  745. }
  746. $ques_score=0;
  747. foreach($ques_option_arr as $mkey=>$res_opt)
  748. {
  749. //correct ans
  750. if($res_opt->iscorrect=='1')
  751. {
  752. $correct_ans_arr[]=$res_opt->optid;
  753. $ques_score+=$res_opt->score;
  754. }
  755. }
  756. }
  757. //MUTIPLE CHOISE CORRECT ANSWER CHECK
  758. if(count($correct_ans_arr)==count($choise_arr))
  759. {
  760. $result=array_diff($correct_ans_arr,$choise_arr);
  761. $is_correct=(count($result)==0)?'1':'0';
  762. if($is_correct=='1'){ $user_score+=$ques_score;}
  763. }
  764. }
  765. }
  766. $percentage_score=($user_score>0 && $total_score>0)?round(($user_score/$total_score)*100):'0';
  767. }
  768. return $percentage_score;
  769. }
  770. function userDealertype($userid)
  771. {
  772. global $conn;
  773. $get_dealer_type_qry="SELECT d.dealer_type FROM ".TABLE_USER." u JOIN ".TABLE_DEALER." d ON u.dealer_code=d.dealercode WHERE u.userid='".$userid."' LIMIT 1";
  774. $get_dealer_type_arr=$conn->getQueryValue($get_dealer_type_qry);
  775. if(count($get_dealer_type_arr)>0)
  776. {
  777. $dealer_type=$get_dealer_type_arr[0]->dealer_type;
  778. }
  779. $dealer_type='';
  780. return $dealer_type;
  781. }
  782. ?>