survey.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. <?php
  2. include "Connection.php";
  3. $conn = new Connection();
  4. if(isset($_REQUEST["funName"])) {
  5. $db = $conn->getConnection();
  6. $fun = $_REQUEST["funName"];
  7. switch($fun) {
  8. case "surveylist":
  9. case "addsurvey":
  10. case "editsurvey":
  11. case "surveydetails":
  12. case "deletesurvey":
  13. case "surveypushnotificationbackend":
  14. $fun();
  15. break;
  16. default:
  17. $conn->message(false,"PAGE NOT FOUND");exit;
  18. break;
  19. }
  20. }else
  21. {
  22. $conn->message(false,"PAGE NOT FOUND");exit;
  23. }
  24. //Getting SURVEY LIST
  25. function surveylist () {
  26. global $conn;
  27. try {
  28. $lang = (isset($_REQUEST["lang"]))?$_REQUEST["lang"]:'en_us';
  29. $pn = escape_str($_REQUEST["pn"]);
  30. $nr = escape_str($_REQUEST["nr"]);
  31. $key = escape_str($_REQUEST["key"]);
  32. $cateid = escape_str($_REQUEST['cateid']);
  33. //$trainingid = escape_str ($_REQUEST["trainingid"]);
  34. if(isset($_SESSION["userid"])) {
  35. $excond='';
  36. if ($key!='') {
  37. $excond .= " AND a.assessmentname like '%".$key."%' ";
  38. }
  39. //PAGINATION
  40. if (!empty($pn) and !empty($nr)) {
  41. // Navigation
  42. $limitcond = " limit ".(($pn - 1) * $nr).", " . $nr;
  43. }
  44. $query_str = "SELECT `id`, `rolename` FROM ".TABLE_ROLE." WHERE status=1 ".$cond;
  45. $role_arr = $conn->getQueryValue($query_str);
  46. if(count($role_arr)>0)
  47. {
  48. foreach($role_arr as $res)
  49. {
  50. $data_role[$res->id]=$res;
  51. }
  52. }
  53. $query_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` FROM ".TABLE_ASSESSMENT." a WHERE a.assettypeid='2' AND a.status='1' ".$excond." ORDER BY a.assessmentid DESC ".$limitcond;
  54. $query = $conn->query($query_str);
  55. // Total records
  56. $rows_query = $conn->query("SELECT FOUND_ROWS() as total_records");
  57. $rows_result = $rows_query->fetchAll(PDO::FETCH_OBJ);
  58. $total_records = $rows_result[0]->total_records;
  59. $assessment_arr= $query->fetchAll(PDO::FETCH_OBJ);
  60. if(count($assessment_arr)>0)
  61. {
  62. foreach($assessment_arr as $akey=>$res_assess)
  63. {
  64. $assessment_arr[$akey]->publishedtime=date('H:i',strtotime($res_assess->publisheddate));
  65. $assessment_arr[$akey]->endtime=date('H:i',strtotime($res_assess->endtime));
  66. $assessment_arr[$akey]->publisheddate=date('Y-m-d',strtotime($res_assess->publisheddate));
  67. $assessment_arr[$akey]->enddate=date('Y-m-d',strtotime($res_assess->enddate));
  68. //EDITABLE CHECK
  69. $check_result_str = "SELECT id FROM `".TABLE_ASSESSMENT_USER."` WHERE assessmentid='".$assessmentid."' LIMIT 1";
  70. $check_result_arr=$conn->getQueryValue($check_result_str);
  71. $assessment_arr[$akey]->is_edit=(count($check_result_arr)>0)?"0":"1";
  72. $assessment_arr[$akey]->filter_role=($res_assess->filter_role!='')?@explode(',',$res_assess->filter_role):array();
  73. $assessment_arr[$akey]->filter_role_name=array();
  74. $role_data=array();
  75. if(count($assessment_arr[$akey]->filter_role)>0)
  76. {
  77. foreach($assessment_arr[$akey]->filter_role as $data)
  78. {
  79. $role_data[]=$data_role[$data];
  80. }
  81. $assessment_arr[$akey]->filter_role_name=$role_data;
  82. }
  83. $filter_zone_arr=array();
  84. $assessment_arr[$akey]->filter_zone=($res_assess->filter_zone!='')?@explode(',',$res_assess->filter_zone):array();
  85. if(count($assessment_arr[$akey]->filter_zone)>0)
  86. {
  87. foreach($assessment_arr[$akey]->filter_zone as $res_zone)
  88. {
  89. $filter_zone_arr[]=array('zone'=>$res_zone);
  90. }
  91. $assessment_arr[$akey]->filter_zone=$filter_zone_arr;
  92. }
  93. $filter_region_arr=array();
  94. $assessment_arr[$akey]->filter_region=($res_assess->filter_region!='')?@explode(',',$res_assess->filter_region):array();
  95. if(count($assessment_arr[$akey]->filter_region)>0)
  96. {
  97. foreach($assessment_arr[$akey]->filter_region as $res_region)
  98. {
  99. $filter_region_arr[]=array('city'=>$res_region);
  100. }
  101. $assessment_arr[$akey]->filter_region=$filter_region_arr;
  102. }
  103. $filter_dealer_arr=array();
  104. $assessment_arr[$akey]->filter_dealer=($res_assess->filter_dealer!='')?@explode(',',$res_assess->filter_dealer):array();
  105. if(count($assessment_arr[$akey]->filter_dealer)>0)
  106. {
  107. $dealer_quotes = array_map("quotes_array", $assessment_arr[$akey]->filter_dealer);
  108. $query_str = "SELECT `dealer_code`, `dealer_name` FROM ".DMS_DEALER." WHERE status='1' AND is_deleted='0' AND dealer_code IN (".@implode(',',$dealer_quotes).") GROUP BY dealer_code ";
  109. $query = $conn->query($query_str);
  110. $deal_arr = $query->fetchAll(PDO::FETCH_OBJ);
  111. $assessment_arr[$akey]->filter_dealer=$deal_arr;
  112. }
  113. }
  114. }
  115. if (!empty($pn) and !empty($nr)){
  116. $arr['total_records'] = $total_records;
  117. }
  118. $arr['survey'] = $assessment_arr;
  119. if(count($arr) != 0){
  120. $conn->message(true,$conn->getMessage($lang,'survey','success1'), $arr);
  121. }else{
  122. $conn->message(false,$conn->getMessage($lang,'survey','error2'));
  123. }
  124. }
  125. else{
  126. $conn->message(false,$conn->getMessage($lang,'survey','error1'));
  127. }
  128. }
  129. catch(PDOException $e){
  130. $conn->message(false,$conn->getMessage($lang,'survey','error4'));
  131. }
  132. }
  133. //ADD SURVEY
  134. function addsurvey () {
  135. global $conn;
  136. try {
  137. //print_r($_REQUEST);
  138. $lang = (isset($_REQUEST["lang"]))?$_REQUEST["lang"]:'en_us';
  139. if(isset($_SESSION["userid"]))
  140. {
  141. $assessmentname = escape_str($_REQUEST["assessmentname"]);
  142. //$assessmenttype = escape_str($_REQUEST["assessmenttype"]);
  143. $assessmenttype = 1;
  144. $assessmenttimetype = escape_str($_REQUEST["assessmenttimetype"]);
  145. $assessmenttime =($assessmenttimetype=='1')? escape_str($_REQUEST["assessmenttime"]):'0';
  146. $randomcond=escape_str($_REQUEST["randomcond"]);
  147. $assessmentnotification=escape_str($_REQUEST["assessmentnotification"]); //COMMA SEPERATE
  148. if($assessmentnotification!='')
  149. {
  150. $assessmentnotification_arr=@explode(',',$assessmentnotification);
  151. foreach($assessmentnotification_arr as $days)
  152. {
  153. if($days!='')
  154. {
  155. if(!is_numeric($days)){ $conn->message(false,$conn->getMessage($lang,'survey','error9')); }
  156. }
  157. }
  158. }
  159. $total_question=escape_str($_REQUEST["total_question"]);
  160. $atype=0;
  161. $attemptslimit= 1;
  162. //$attemptslimit= escape_str($_REQUEST["attemptslimit"]);
  163. $publisheddate= escape_str($_REQUEST["publisheddate"]);
  164. $enddate=escape_str($_REQUEST["enddate"]);
  165. $publishedtime=escape_str($_REQUEST["publishedtime"]);
  166. $endtime=escape_str($_REQUEST["endtime"]);
  167. if($publishedtime!='' && $endtime!='')
  168. {
  169. $publisheddate.=" ".$publishedtime;
  170. $enddate.=" ".$endtime;
  171. }else
  172. {
  173. $publisheddate.=" 00:00:00";
  174. $enddate.=" 23:59:59";
  175. }
  176. $user_type =(isset($_REQUEST["user_type"]))?escape_str($_REQUEST["user_type"]):0;
  177. $filter_role=(is_string ($_REQUEST["filter_role"]))?escape_str($_REQUEST["filter_role"]):'';
  178. //$filter_role=@implode(',',$_REQUEST["filter_role"]);
  179. $filter_zone=(is_string ($_REQUEST["filter_zone"]))?escape_str($_REQUEST["filter_zone"]):'';
  180. //$filter_zone=@implode(',',$_REQUEST["filter_zone"]);
  181. $filter_region=(is_string ($_REQUEST["filter_region"]))?escape_str($_REQUEST["filter_region"]):'';
  182. //$filter_region=@implode(',',$_REQUEST["filter_region"]);
  183. $filter_dealer=(is_string ($_REQUEST["filter_dealer"]))?escape_str($_REQUEST["filter_dealer"]):'';
  184. //assessmenttime validation
  185. $filter_options=array('options' => array( 'min_range' => 0));
  186. if(!( filter_var( $assessmenttime, FILTER_VALIDATE_INT, $filter_options ) !== FALSE)) { echo $conn->message(false,'Assessment Time should be integer and above 0');exit; }
  187. $question_arr=json_decode($_REQUEST["question_json"]); //question_json [{ "qid":10,"is_mandatory":1},{ "qid":12,"is_mandatory":1}]
  188. //VALIDATION CHECK
  189. if(!( $assessmentname!='' && $assessmenttype!='' && $randomcond!='' && $assessmentnotification!='' && $_REQUEST["question_json"]!='' && $attemptslimit!='' && $publisheddate!='' && $enddate!='' && $attemptslimit!='' && count($question_arr)>0 && $total_question!='' && $total_question>0))
  190. {
  191. $conn->message(false,$conn->getMessage($lang,'survey','error5'));
  192. }
  193. //VALIDATE QUESTION COUNT
  194. if(count($question_arr)<$total_question) $conn->message(false,$conn->getMessage($lang,'survey','error6'));
  195. //INSERT ASSESSMENT
  196. $insert_qry = "INSERT INTO ".TABLE_ASSESSMENT ." ( `atype`,`user_type`, `assessmentname`, `description`, `assessmenttype`, `assettypeid`, `assessmenttimetype` , `assessmenttime`, `attemptslimit`, `publisheddate`, `enddate`, `randomcond`, `filter_role`, `filter_zone`, `filter_region`, `filter_dealer`,`assessmentnotification`,`total_question` ,`status`, `creatorid`, `created_on`, `modified_on`) VALUES ( '".$atype."','".$user_type."','".$assessmentname."', '".$description."','".$assessmenttype."', '2','".$assessmenttimetype."','".$assessmenttime."','".$attemptslimit."','".$publisheddate."', '".$enddate."','".$randomcond."','".$filter_role."','".$filter_zone."','".$filter_region."','".$filter_dealer."','".$assessmentnotification."','".$total_question."','1','".$_SESSION["userid"]."', '".NOW."', '".NOW."')";
  197. $conn->query($insert_qry);
  198. $assessmentid = $conn->lastinsetid();
  199. //INSERT ASSESSMENT QUESTION
  200. if(count($question_arr)>0)
  201. {
  202. $insert_question_arr=array();
  203. foreach($question_arr as $res_ques)
  204. {
  205. $insert_ques_arr[]="('".$assessmentid."', '".$res_ques->qid."', '".$res_ques->is_mandatory."','".$_SESSION["userid"]."', '".NOW."', '".NOW."')";
  206. }
  207. $insert_ques_qry = "INSERT INTO `".TABLE_ASSESSMENT_QUESTION."`( `assessmentid`, `qid`, `is_mandatory`, `creatorid`, `created_on`, `modified_on`) VALUES ".@implode(',',$insert_ques_arr);
  208. $conn->query($insert_ques_qry);
  209. }
  210. sendAssessmentNotification($assessmentid);
  211. $conn->message(true,$conn->getMessage($lang,'survey','success1'),getAssessment($assessmentid));
  212. }else{
  213. $conn->message(false,$conn->getMessage($lang,'survey','error1'));
  214. }
  215. }
  216. catch(PDOException $e) {
  217. $conn->message(false,$conn->getMessage($lang,'survey','error4'));
  218. }
  219. }
  220. //EDIT SURVEY
  221. function editsurvey () {
  222. global $conn;
  223. try {
  224. //print_r($_REQUEST);
  225. $lang = (isset($_REQUEST["lang"]))?$_REQUEST["lang"]:'en_us';
  226. if(isset($_SESSION["userid"]))
  227. {
  228. $assessmentid = escape_str($_REQUEST["assessmentid"]);
  229. $assessmentname = escape_str($_REQUEST["assessmentname"]);
  230. $assessmenttype = 1;
  231. $assessmenttimetype = escape_str($_REQUEST["assessmenttimetype"]);
  232. $assessmenttime =($assessmenttimetype=='1')? escape_str($_REQUEST["assessmenttime"]):'0';
  233. $randomcond=escape_str($_REQUEST["randomcond"]);
  234. $assessmentnotification=escape_str($_REQUEST["assessmentnotification"]); //COMMA SEPERATE
  235. if($assessmentnotification!='')
  236. {
  237. $assessmentnotification_arr=@explode(',',$assessmentnotification);
  238. foreach($assessmentnotification_arr as $days)
  239. {
  240. if($days!='')
  241. {
  242. if(!is_numeric($days)){ $conn->message(false,$conn->getMessage($lang,'survey','error9')); }
  243. }
  244. }
  245. }
  246. $total_question=escape_str($_REQUEST["total_question"]);
  247. $question_arr=json_decode($_REQUEST["question_json"]); //question_json [{ "qid":10,"is_mandatory":1},{ "qid":12,"is_mandatory":1}]
  248. $attemptslimit= 1;
  249. $publisheddate= escape_str($_REQUEST["publisheddate"]);
  250. $enddate=escape_str($_REQUEST["enddate"]);
  251. $publishedtime=escape_str($_REQUEST["publishedtime"]);
  252. $endtime=escape_str($_REQUEST["endtime"]);
  253. if($publishedtime!='' && $endtime!='')
  254. {
  255. $publisheddate.=" ".$publishedtime;
  256. $enddate.=" ".$endtime;
  257. }else
  258. {
  259. $publisheddate.=" 00:00:00";
  260. $enddate.=" 23:59:59";
  261. }
  262. $filter_role=(is_string ($_REQUEST["filter_role"]))?escape_str($_REQUEST["filter_role"]):'';
  263. //$filter_role=@implode(',',$_REQUEST["filter_role"]);
  264. $filter_zone=(is_string ($_REQUEST["filter_zone"]))?escape_str($_REQUEST["filter_zone"]):'';
  265. //$filter_zone=@implode(',',$_REQUEST["filter_zone"]);
  266. $filter_region=(is_string ($_REQUEST["filter_region"]))?escape_str($_REQUEST["filter_region"]):'';
  267. //$filter_region=@implode(',',$_REQUEST["filter_region"]);
  268. $filter_dealer=(is_string ($_REQUEST["filter_dealer"]))?escape_str($_REQUEST["filter_dealer"]):'';
  269. //VALIDATION CHECK
  270. if(!($assessmentid!='' && $assessmentname!='' && $assessmenttype!='' && $randomcond!='' && $assessmentnotification!='' && $attemptslimit!='' && $publisheddate!='' && $enddate!='' && $_REQUEST["question_json"]!='' && count($question_arr)>0 && $total_question!='' && $total_question>0))
  271. {
  272. $conn->message(false,$conn->getMessage($lang,'survey','error5'));
  273. }
  274. //assessmenttime validation
  275. $filter_options=array('options' => array( 'min_range' => 0));
  276. if(!( filter_var( $assessmenttime, FILTER_VALIDATE_INT, $filter_options ) !== FALSE)) { echo $conn->message(false,'Assessment Time should be integer and above 0');exit; }
  277. //VALIDATE QUESTION COUNT
  278. if(count($question_arr)<$total_question) $conn->message(false,$conn->getMessage($lang,'survey','error6'));
  279. //CHECK ASSESSMENT USER ALREADY ADDED
  280. $check_result_str = "SELECT id FROM `".TABLE_ASSESSMENT_USER."` WHERE assessmentid='".$assessmentid."' LIMIT 1";
  281. $check_result_arr=$conn->getQueryValue($check_result_str);
  282. if(count($check_result_arr)>0)
  283. {
  284. $conn->message(false,$conn->getMessage($lang,'survey','error7'));
  285. }
  286. //UPDATE ASSESSMENT
  287. $update_qry = "UPDATE ".TABLE_ASSESSMENT." SET `assessmentname`='".$assessmentname."' , `description`='".$description."',assessmenttimetype='".$assessmenttimetype."', `assessmenttime`='".$assessmenttime."' ,attemptslimit='".$attemptslimit."',`publisheddate`='".$publisheddate."', `enddate`='".$enddate."', `randomcond`='".$randomcond."',`filter_role`='".$filter_role."', `filter_zone`='".$filter_zone."', `filter_region`='".$filter_region."', `filter_dealer`='".$filter_dealer."', `assessmentnotification`='".$assessmentnotification."',total_question='".$total_question."', `modified_on`='".NOW."' WHERE assessmentid='".$assessmentid."'";
  288. $conn->query($update_qry);
  289. //INSERT ASSESSMENT QUESTION
  290. if(count($question_arr)>0)
  291. {
  292. //DELETE OLD SUPPLIER DATA
  293. $delete_ques_qry = "DELETE FROM ".TABLE_ASSESSMENT_QUESTION." WHERE assessmentid='".$assessmentid."'";
  294. $conn->query($delete_ques_qry);
  295. $insert_question_arr=array();
  296. foreach($question_arr as $res_ques)
  297. {
  298. $insert_ques_arr[]=" ('".$assessmentid."','".$res_ques->qid."', '".$res_ques->is_mandatory."','".$_SESSION["userid"]."', '".NOW."', '".NOW."')";
  299. }
  300. $insert_ques_qry = "INSERT INTO `".TABLE_ASSESSMENT_QUESTION."`( `assessmentid`, `qid`, `is_mandatory`, `creatorid`, `created_on`, `modified_on`) VALUES ".@implode(',',$insert_ques_arr);
  301. $conn->query($insert_ques_qry);
  302. }
  303. $conn->message(true,$conn->getMessage($lang,'survey','success1'),getAssessment($assessmentid));
  304. }else{
  305. $conn->message(false,$conn->getMessage($lang,'survey','error1'));
  306. }
  307. }
  308. catch(PDOException $e) {
  309. $conn->message(false,$conn->getMessage($lang,'survey','error4'));
  310. }
  311. }
  312. // DELETE SURVEY
  313. function deletesurvey () {
  314. global $conn;
  315. try {
  316. //print_r($_REQUEST);
  317. $lang = (isset($_REQUEST["lang"]))?$_REQUEST["lang"]:'en_us';
  318. if(isset($_SESSION["userid"]))
  319. {
  320. $assessmentid = escape_str($_REQUEST["assessmentid"]);
  321. //VALIDATION CHECK
  322. if(!($assessmentid!='' )) $conn->message(false,$conn->getMessage($lang,'survey','error5'));
  323. //CHECK ASSESSMENT USER ALREADY ADDED
  324. $check_result_str = "SELECT id FROM `".TABLE_ASSESSMENT_USER."` WHERE assessmentid='".$assessmentid."' LIMIT 1";
  325. $check_result_arr=$conn->getQueryValue($check_result_str);
  326. if(count($check_result_arr)>0) $conn->message(false,$conn->getMessage($lang,'survey','error8'));
  327. //DELETE TABLE_ASSESSMENT
  328. $update_qry = "UPDATE ".TABLE_ASSESSMENT." SET `status`='0' WHERE assessmentid='".$assessmentid."'";
  329. $conn->query($update_qry);
  330. $conn->message(true,$conn->getMessage($lang,'survey','success1'));
  331. }else{
  332. $conn->message(false,$conn->getMessage($lang,'survey','error1'));
  333. }
  334. }
  335. catch(PDOException $e) {
  336. $conn->message(false,$conn->getMessage($lang,'survey','error4'));
  337. }
  338. }
  339. function sendAssessmentNotification ( $assessmentid )
  340. {
  341. global $conn;
  342. $assessment_str = "SELECT * FROM `".TABLE_ASSESSMENT."` WHERE assessmentid='".$assessmentid."' AND assettypeid='2' LIMIT 1";
  343. $assessment_arr=$conn->getQueryValue($assessment_str);
  344. if(count($assessment_arr)>0)
  345. {
  346. $obj=new stdClass();
  347. $obj->id=$assessment_arr[0]->assessmentid;
  348. $obj->assessmentid=$assessment_arr[0]->assessmentid;
  349. $notificationdata= json_encode($obj);
  350. $notificationtype='3';
  351. $publisheddate=$assessment_arr[0]->publisheddate;
  352. $enddate=$assessment_arr[0]->enddate;
  353. $notificationtext="New Feedback - `".$assessment_arr[0]->assessmentname."` assigned for date : ".date('dS M h:i A',strtotime($assessment_arr[0]->publisheddate))." - ".date('dS M h:i A',strtotime($enddate));
  354. //ROLE
  355. if($assessment_arr[0]->filter_role!='')
  356. {
  357. $role_arr=@explode(',',$assessment_arr[0]->filter_role);
  358. if(count($role_arr)>0)
  359. {
  360. $user_cond.=" AND role IN (".$assessment_arr[0]->filter_role.")";
  361. }
  362. }
  363. //ZONE
  364. if($assessment_arr[0]->filter_zone!='')
  365. {
  366. $zone_arr=@explode(',',$assessment_arr[0]->filter_zone);
  367. if(count($zone_arr)>0)
  368. {
  369. $zone_quotes = array_map("quotes_array", $zone_arr);
  370. $user_cond.=" AND dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE zone IN (".@implode(',',$zone_quotes)."))";
  371. }
  372. }
  373. //REGION
  374. if($assessment_arr[0]->filter_region!='')
  375. {
  376. $region_arr=@explode(',',$assessment_arr[0]->filter_region);
  377. if(count($region_arr)>0)
  378. {
  379. $region_quotes = array_map("quotes_array", $region_arr);
  380. $user_cond.=" AND dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE city IN (".@implode(',',$region_quotes)."))";
  381. }
  382. }
  383. //DEALER
  384. if($assessment_arr[0]->filter_dealer!='')
  385. {
  386. $dealer_arr=@explode(',',$assessment_arr[0]->filter_dealer);
  387. if(count($dealer_arr)>0)
  388. {
  389. $dealer_quotes = array_map("quotes_array", $dealer_arr);
  390. $user_cond.=" AND dealer_code IN (".@implode(',',$dealer_quotes).")";
  391. }
  392. }
  393. $user_cond.=($assessment_arr[0]->user_type=='0')?" AND role>7 AND role<14":" AND role=15";
  394. switch($assessment_arr[0]->segment)
  395. {
  396. case '1':$user_cond.=' AND (segment=0 OR segment=1)';
  397. break;
  398. case '2':$user_cond.=' AND (segment=0 OR segment=2)';
  399. break;
  400. default: //$user_cond.=' AND segment=0';
  401. break;
  402. }
  403. //CHECK USER EXIST FOR NOTIFICATION
  404. $check_user_str = " SELECT userid FROM ".TABLE_USER." WHERE status='1' AND is_deleted='0' ".$user_cond;
  405. $check_user_arr = $conn->getQueryValue($check_user_str);
  406. $user_arr=array();
  407. if(count($check_user_arr)>0)
  408. {
  409. foreach ($check_user_arr as $res_user)
  410. {
  411. $user_arr[]=$res_user->userid;
  412. }
  413. //INSERT NOTITFICATION
  414. $conn->executeQuery("INSERT INTO `".TABLE_NOTIFICATION."` ( `notificationtitle`, `notificationtext`, `notificationdata`, `notificationtype`, `status`, `publisheddate`, `created_on`, `modified_on`) VALUES ('".escape_str($assessment_arr[0]->assessmentname)."','".escape_str($notificationtext)."','".$notificationdata."','".$notificationtype."' ,'1','".NOW."','".NOW."','".NOW."')");
  415. $notificationid=$conn->lastinsetid();
  416. $data=array('notification_id'=>$notificationid,'title'=>$assessment_arr[0]->assessmentname,'message'=>$notificationtext,'notificationtype'=>$notificationtype,'notificationdata'=>$notificationdata,'created_date'=>NOW);
  417. if(count($user_arr)>0)
  418. {
  419. $ins_arr=array();
  420. foreach($user_arr as $res)
  421. {
  422. $ins_arr[]=" ('".$notificationid."', '".$res."', '0', '".NOW."')";
  423. }
  424. $insert_chunk=array_chunk($ins_arr, 1000);
  425. foreach($insert_chunk as $chunk_ins)
  426. {
  427. $conn->executeQuery("INSERT INTO ".TABLE_NOTIFICATION_USER."(`notificationid`, `userid`, `status`, `created_on`) VALUES ".@implode(',',$chunk_ins)." ON DUPLICATE KEY UPDATE `status` =0");
  428. }
  429. $usertokenarr['ios']=array();
  430. $usertokenarr['android']=array();
  431. $user_device_str = "SELECT ud.devicetype,ud.token FROM `".TABLE_USER_DEVICES."` as ud JOIN (SELECT userid FROM ".TABLE_NOTIFICATION_USER." WHERE notificationid='".$notificationid."') as u ON ud.userid=u.userid WHERE ud.is_deleted='0' AND (devicetype='ios' OR devicetype='android') AND token!=''";
  432. $user_device_arr = $conn->getQueryValue($user_device_str);
  433. if(count($user_device_arr)>0)
  434. {
  435. foreach($user_device_arr as $res_user)
  436. {
  437. if(strtolower($res_user->devicetype)=='ios')
  438. {
  439. $usertokenarr['ios'][]=$res_user->token;
  440. }else if(strtolower($res_user->devicetype)=='android')
  441. {
  442. $usertokenarr['android'][]=$res_user->token;
  443. }
  444. }
  445. // $conn->sendUserNotification($data,$usertokenarr);
  446. }
  447. }
  448. }
  449. }
  450. }
  451. // GET ASSESSMENT
  452. function getAssessment($assessmentid)
  453. {
  454. global $conn;
  455. $data_arr=array();
  456. if($assessmentid!='')
  457. {
  458. $query_str = "SELECT `id`, `rolename` FROM ".TABLE_ROLE." WHERE status=1 ";
  459. $role_arr = $conn->getQueryValue($query_str);
  460. if(count($role_arr)>0)
  461. {
  462. foreach($role_arr as $res)
  463. {
  464. $data_role[$res->id]=$res;
  465. }
  466. }
  467. $data_arr=$conn->getQueryValue( "SELECT a.`assessmentid`, a.`assessmentname`,a.`description`,a.`assessmenttype`,a.`assettypeid`,a. `assessmenttimetype` ,a.`assessmenttime`,a.`randomcond`,a.`created_on`,a.publisheddate,a.enddate, a.`filter_role`, a.`filter_zone`, a.`filter_region`, a.`filter_dealer` FROM ".TABLE_ASSESSMENT." a WHERE a.assettypeid='2' AND a.status='1' AND a.assessmentid='".$assessmentid."' LIMIT 1");
  468. if(count($data_arr)>0)
  469. {
  470. $check_result_str = "SELECT id FROM `".TABLE_ASSESSMENT_USER."` WHERE assessmentid='".$assessmentid."' LIMIT 1";
  471. $check_result_arr=$conn->getQueryValue($check_result_str);
  472. $data_arr[0]->is_edit=(count($check_result_arr)>0)?"0":"1";
  473. $data_arr[0]->publishedtime=date('H:i',strtotime($data_arr[0]->publisheddate));
  474. $data_arr[0]->endtime=date('H:i',strtotime($data_arr[0]->enddate));
  475. $data_arr[0]->publisheddate=date('Y-m-d',strtotime($data_arr[0]->publisheddate));
  476. $data_arr[0]->enddate=date('Y-m-d',strtotime($data_arr[0]->enddate));
  477. $data_arr[0]->filter_role=($data_arr[0]->filter_role!='')?@explode(',',$data_arr[0]->filter_role):array();
  478. $data_arr[0]->filter_role_name=array();
  479. $role_data=array();
  480. if(count($data_arr[0]->filter_role)>0)
  481. {
  482. foreach($data_arr[0]->filter_role as $data)
  483. {
  484. $role_data[]=$data_role[$data];
  485. }
  486. $data_arr[0]->filter_role_name=$role_data;
  487. }
  488. $filter_zone_arr=array();
  489. $data_arr[0]->filter_zone=($data_arr[0]->filter_zone!='')?@explode(',',$data_arr[0]->filter_zone):array();
  490. if(count($data_arr[0]->filter_zone)>0)
  491. {
  492. foreach($data_arr[0]->filter_zone as $res_zone)
  493. {
  494. $filter_zone_arr[]=array('zone'=>$res_zone);
  495. }
  496. $data_arr[0]->filter_zone=$filter_zone_arr;
  497. }
  498. $filter_region_arr=array();
  499. $data_arr[0]->filter_region=($data_arr[0]->filter_region!='')?@explode(',',$data_arr[0]->filter_region):array();
  500. if(count($data_arr[0]->filter_region)>0)
  501. {
  502. foreach($data_arr[0]->filter_region as $res_region)
  503. {
  504. $filter_region_arr[]=array('city'=>$res_region);
  505. }
  506. $data_arr[0]->filter_region=$filter_region_arr;
  507. }
  508. $filter_dealer_arr=array();
  509. $data_arr[0]->filter_dealer=($data_arr[0]->filter_dealer!='')?@explode(',',$data_arr[0]->filter_dealer):array();
  510. if(count($data_arr[0]->filter_dealer)>0)
  511. {
  512. $dealer_quotes = array_map("quotes_array", $data_arr[0]->filter_dealer);
  513. $query_str = "SELECT `dealer_code`, `dealer_name` FROM ".DMS_DEALER." WHERE status='1' AND is_deleted='0' AND dealer_code IN (".@implode(',',$dealer_quotes).") GROUP BY dealer_code ";
  514. $query = $conn->query($query_str);
  515. $deal_arr = $query->fetchAll(PDO::FETCH_OBJ);
  516. $data_arr[0]->filter_dealer=$deal_arr;
  517. }
  518. }
  519. $data_arr=(count($data_arr)>0)?$data_arr[0]:array();
  520. }
  521. return $data_arr;
  522. }
  523. function surveydetails (){
  524. global $conn;
  525. try {
  526. //print_r($_REQUEST);
  527. $lang = (isset($_REQUEST["lang"]))?$_REQUEST["lang"]:'en_us';
  528. if(isset($_SESSION["userid"]))
  529. {
  530. $assessmentid = escape_str($_REQUEST["assessmentid"]);
  531. //VALIDATION CHECK
  532. if(!($assessmentid!='' )) $conn->message(false,$conn->getMessage($lang,'survey','error2'));
  533. $query_str = "SELECT `id`, `rolename` FROM ".TABLE_ROLE." WHERE status=1 ";
  534. $role_arr = $conn->getQueryValue($query_str);
  535. if(count($role_arr)>0)
  536. {
  537. foreach($role_arr as $res)
  538. {
  539. $data_role[$res->id]=$res;
  540. }
  541. }
  542. $check_assessment_str = "SELECT * FROM `".TABLE_ASSESSMENT."` WHERE assessmentid='".$assessmentid."' AND status='1' AND assettypeid='2' LIMIT 1";
  543. $check_assessment_arr=$conn->getQueryValue($check_assessment_str);
  544. if(!(count($check_assessment_arr)>0))
  545. {
  546. $conn->message(false,$conn->getMessage($lang,'survey','error3'));
  547. }
  548. $check_assessment_arr[0]->publishedtime=date('H:i',strtotime($check_assessment_arr[0]->publisheddate));
  549. $check_assessment_arr[0]->endtime=date('H:i',strtotime($check_assessment_arr[0]->enddate));
  550. $check_assessment_arr[0]->publisheddate=date('Y-m-d',strtotime($check_assessment_arr[0]->publisheddate));
  551. $check_assessment_arr[0]->enddate=date('Y-m-d',strtotime($check_assessment_arr[0]->enddate));
  552. $check_assessment_arr[0]->question_arr=array();
  553. $assessment_ques_str = "SELECT `assessmentid`, `qid`, `is_mandatory` FROM `".TABLE_ASSESSMENT_QUESTION."` WHERE assessmentid='".$assessmentid."' ";
  554. $assessment_ques_arr=$conn->getQueryValue($assessment_ques_str);
  555. $check_assessment_arr[0]->question_arr=(count($assessment_ques_arr)>0)?$assessment_ques_arr:array();
  556. $check_assessment_arr[0]->questionList=array();
  557. $check_assessment_arr[0]->is_mandatory=array();
  558. if(count($assessment_ques_arr)>0)
  559. {
  560. foreach($assessment_ques_arr as $res_asses)
  561. {
  562. $qid=$res_asses->qid;
  563. $questionList[$qid]=true;
  564. $is_mandatory[$qid]=$res_asses->is_mandatory;
  565. }
  566. $check_assessment_arr[0]->questionList=$questionList;
  567. $check_assessment_arr[0]->is_mandatory=$is_mandatory;
  568. }
  569. $check_assessment_arr[0]->filter_role=($check_assessment_arr[0]->filter_role!='')?@explode(',',$check_assessment_arr[0]->filter_role):array();
  570. $check_assessment_arr[0]->filter_role_name=array();
  571. $role_data=array();
  572. if(count($check_assessment_arr[0]->filter_role)>0)
  573. {
  574. foreach($check_assessment_arr[0]->filter_role as $data)
  575. {
  576. $role_data[]=$data_role[$data];
  577. }
  578. $check_assessment_arr[0]->filter_role_name=$role_data;
  579. }
  580. $filter_zone_arr=array();
  581. $check_assessment_arr[0]->filter_zone=($check_assessment_arr[0]->filter_zone!='')?@explode(',',$check_assessment_arr[0]->filter_zone):array();
  582. if(count($check_assessment_arr[0]->filter_zone)>0)
  583. {
  584. foreach($check_assessment_arr[0]->filter_zone as $res_zone)
  585. {
  586. $filter_zone_arr[]=array('zone'=>$res_zone);
  587. }
  588. $check_assessment_arr[0]->filter_zone=$filter_zone_arr;
  589. }
  590. $filter_region_arr=array();
  591. $check_assessment_arr[0]->filter_region=($check_assessment_arr[0]->filter_region!='')?@explode(',',$check_assessment_arr[0]->filter_region):array();
  592. if(count($check_assessment_arr[0]->filter_region)>0)
  593. {
  594. foreach($check_assessment_arr[0]->filter_region as $res_region)
  595. {
  596. $filter_region_arr[]=array('city'=>$res_region);
  597. }
  598. $check_assessment_arr[0]->filter_region=$filter_region_arr;
  599. }
  600. $filter_dealer_arr=array();
  601. $check_assessment_arr[0]->filter_dealer=($check_assessment_arr[0]->filter_dealer!='')?@explode(',',$check_assessment_arr[0]->filter_dealer):array();
  602. if(count($check_assessment_arr[0]->filter_dealer)>0)
  603. {
  604. $dealer_quotes = array_map("quotes_array", $check_assessment_arr[0]->filter_dealer);
  605. $query_str = "SELECT `dealer_code`, `dealer_name` FROM ".DMS_DEALER." WHERE status='1' AND is_deleted='0' AND dealer_code IN (".@implode(',',$dealer_quotes).") GROUP BY dealer_code ";
  606. $query = $conn->query($query_str);
  607. $deal_arr = $query->fetchAll(PDO::FETCH_OBJ);
  608. $check_assessment_arr[0]->filter_dealer=$deal_arr;
  609. }
  610. $arr=$check_assessment_arr[0];
  611. $conn->message(true,$conn->getMessage($lang,'survey','success1'),$arr);
  612. }else{
  613. $conn->message(false,$conn->getMessage($lang,'survey','error1'));
  614. }
  615. }
  616. catch(PDOException $e) {
  617. $conn->message(false,$conn->getMessage($lang,'survey','error4'));
  618. }
  619. }
  620. function surveypushnotificationbackend()
  621. {
  622. global $conn;
  623. $assessmentid = escape_str($_REQUEST["assessmentid"]);
  624. $lang='en_us';
  625. sendAssessmentNotification ($assessmentid);
  626. $conn->message(true,$conn->getMessage($lang,'assessment','success1'),array());
  627. }
  628. ?>