videotraining.php 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986
  1. <?php
  2. /****************************
  3. * File : videotraining.php
  4. * Author : Cygnusa
  5. * @2020
  6. ****************************/
  7. //SECURITY
  8. if ( ! defined('APPLICATION_PATH')) exit('No direct script access allowed');
  9. //FUNCTION LISTS
  10. class videotraining
  11. {
  12. function __construct($parent)
  13. {
  14. //GET PAGE MESSAGE
  15. $this->page_data=globalfunc::getMessage($parent,$parent->lang,'videotraining');
  16. if(count($parent->params)==0)
  17. {
  18. $this->videotrainingFunc($parent);
  19. }else
  20. {
  21. $qry_params=explode ("?",$parent->params[0]);
  22. $parameter_val=strtolower($qry_params[0]);
  23. switch($parameter_val){
  24. case "traininglist":
  25. case "amtraining": //am list
  26. case "dselist":
  27. case "trainingdse":
  28. case "updatetime":
  29. case "message":
  30. case "scheduleusers":
  31. case "role":
  32. case "getroleuser":
  33. case "rmlist":
  34. case "amlist":
  35. case "dealerlist":
  36. case "scheduletraining"://ho schedule list
  37. case "addtraining"://ho schedule post
  38. $this->$parameter_val($parent );
  39. break;
  40. default:
  41. $this->videotrainingFunc($parent);
  42. break;
  43. }
  44. }
  45. $parent->response(array('response'=>'failed', 'message' => 'PAGE NOT FOUND'), 404);
  46. }
  47. /* /////////////////////////////// COMMON //////////////////////////////////////////////// */
  48. private function videotrainingFunc($parent){
  49. globalfunc::checkMethodType($parent,array('GET','POST','DELETE'));
  50. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  51. switch ($parent->get_request_method())
  52. {
  53. case "GET":
  54. globalfunc::checkParamCount($parent,0);
  55. //PAGINATION SETTINGS
  56. $limit_cond='';
  57. $data_arr=array();
  58. $limit_str=globalfunc::setPageLimit($parent,$parent->funcparams[0]);
  59. $limit_cond=($limit_str)?" LIMIT ".$limit_str:'';
  60. $userid=$parent->current_user_id;
  61. $role=$parent->current_user_role;
  62. if(in_array($role,array(8,9,10,11,12,13))) //DSE
  63. {
  64. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s JOIN ".TABLE_VIDEOSCHEDULEUSER." vu ON s.id=vu.sid JOIN ".TABLE_USER." u ON u.userid=s.organiser " ,"SQL_CALC_FOUND_ROWS s.*,CONCAT(u.fname,' ',u.lname) as organiser_name,u.emp_code"," s.status in(1,2) AND s.is_deleted=0 AND vu.userid='". $userid."' GROUP BY s.id ORDER BY s.fromdate DESC,s.id ASC ".$limit_cond,"");
  65. }else
  66. {
  67. //$organiser_name=trim($parent->current_user_data->fname." ".$parent->current_user_data->lname);
  68. //USER FILTER CONDITION APPLY
  69. $user_cond='';
  70. //$get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE ,"SQL_CALC_FOUND_ROWS *,'".$organiser_name."' as organiser_name"," status in(1,2) AND is_deleted=0 AND `organiser_role`='".$role."' AND `organiser`='".$userid."' ORDER BY fromdate DESC,id ASC ".$limit_cond,"");
  71. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s JOIN ".TABLE_VIDEOSCHEDULEUSER." vu ON s.id=vu.sid JOIN ".TABLE_USER." u ON u.userid=s.organiser " ,"SQL_CALC_FOUND_ROWS s.*,CONCAT(u.fname,' ',u.lname) as organiser_name,u.emp_code"," s.status in(1,2) AND s.is_deleted=0 AND ((vu.userid='". $userid."') OR (s.`organiser_role`='".$role."' AND s.`organiser`='".$userid."')) GROUP BY s.id ORDER BY s.fromdate DESC,s.id ASC ".$limit_cond,"");
  72. }
  73. $tot = $parent->getQueryValue("select FOUND_ROWS() as total_records");
  74. $total=(count($tot)>0)?$tot[0]->total_records:0;
  75. if($get_list_arr['nr']>0 && ($role<8 || $role==14) ) //DSE
  76. {
  77. //CONNECT S3
  78. $s3=awsfileserver::connectS3();
  79. foreach($get_list_arr['result'] as $key=>$res)
  80. {
  81. //NEW STATUS CHECK
  82. if($res->status==1 && strtotime(NOW)>strtotime($res->fromdate) && strtotime(NOW)<strtotime($res->todate))
  83. {
  84. $list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGTIMER ,"*"," sid='".$res->id."' AND userid='".$res->organiser."' ORDER BY id DESC ","1");
  85. if($list_arr['nr']>0)
  86. {
  87. $created_on=$list_arr['result'][0]->modified_on;
  88. $check=date('Y-m-d H:i:s',strtotime('-300 seconds',strtotime(NOW)));
  89. if(strtotime($check)>strtotime($created_on))
  90. {
  91. $update_str = "UPDATE ".TABLE_VIDEOTRAININGSCHEDULE." SET status=2 WHERE id='".$res->id."'";
  92. $parent->executeQuery($update_str);
  93. $get_list_arr['result'][$key]->status="2";
  94. }
  95. }
  96. }
  97. $get_list_arr['result'][$key]->organiser=$res->emp_code;
  98. $get_list_arr['result'][$key]->userlist=array();
  99. $query_str="SELECT u.userid,u.fname,u.lname,u.smpin,u.dealer_code,u.profile_photo,u.role,u.emp_code,CASE WHEN u.role IN (8,9,10,11,12,13) THEN d.dealer_name ELSE '' END as dealer_name,CASE WHEN u.segment=0 THEN 'Student Learner' WHEN u.segment=1 THEN 'Parents/Guardian' WHEN u.segment=2 THEN 'Instructor' END as segment_str FROM ".TABLE_VIDEOSCHEDULEUSER." vu JOIN ".TABLE_USER." u ON vu.userid=u.userid LEFT JOIN ".DMS_DEALER." d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND vu.sid='".$res->id."' ORDER BY u.dealer_code ASC,u.fname ASC,u.userid ASC";
  100. $query_arr=$parent->getQueryValue($query_str);
  101. if(count($query_arr)>0)
  102. {
  103. foreach($query_arr as $ukey=>$user)
  104. {
  105. if(!in_array($user->role,array(8,9,10,11,12,13)))
  106. {
  107. $query_arr[$ukey]->smpin=$user->emp_code;
  108. $query_arr[$ukey]->dealer_name='';
  109. $query_arr[$ukey]->segment_str='';
  110. }
  111. if($user->profile_photo!='')
  112. {
  113. $query_arr[$ukey]->profile=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_PROFILE_IMAGE_URL.$user->profile_photo); }else
  114. {
  115. $query_arr[$ukey]->profile=USER_NOIMAGE_URL;
  116. }
  117. $timer_query_str="SELECT * FROM ".TABLE_VIDEOTRAININGTIMER." WHERE userid='".$user->userid."' AND sid='".$res->id."'";
  118. $time_arr=$parent->getQueryValue($timer_query_str);
  119. $query_arr[$ukey]->timerlist=(count($time_arr)>0)?$time_arr:array();
  120. }
  121. $get_list_arr['result'][$key]->userlist=$query_arr;
  122. }
  123. }
  124. }
  125. $data_arr=($get_list_arr['nr']>0)?$get_list_arr['result']:array();
  126. //LOG
  127. $logstr='VIDEO TRAINING LIST';
  128. globalfunc::insertUserLog($parent,$logstr);
  129. $last_page=($total)?ceil($total/$parent->current_limit)-1:0;
  130. $parent->response(array('response'=>'success', 'data'=>$data_arr,'total'=>$total,'last_page'=>$last_page,'current_page'=>$parent->current_page,'message'=>$this->page_data['success1']),200);
  131. break;
  132. case "POST":
  133. globalfunc::checkParamCount($parent,0);
  134. projectfunc::authorizedRole($parent,array('3','4','5','6','7','14'));
  135. $userid=$parent->current_user_id;
  136. $role=$parent->current_user_role;
  137. $REQUEST_KEYS=array('title'=>'string', 'description'=>'string','fromdate'=>'date|Y-m-d H:i:s','todate'=>'date|Y-m-d H:i:s','channel'=>'string','dse'=>'string');
  138. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  139. $title=escape_str($parent->_request['title']);
  140. $description=escape_str($parent->_request['description']);
  141. $fromdate=escape_str($parent->_request['fromdate']);
  142. $todate=escape_str($parent->_request['todate']);
  143. $dse=$parent->_request['dse'];
  144. $dse=json_decode($dse); //sending as string
  145. $channel=escape_str($parent->_request['channel']);
  146. $typeid=escape_str($parent->_request['typeid']);
  147. //$participant_role=isset($parent->_request['participant_role'])?escape_str($parent->_request['participant_role']):10;
  148. if(strtotime($fromdate)<NOW) $parent->response(array('response'=>'failed','message'=>$this->page_data["error4"]),406);
  149. if(strtotime($todate)<NOW) $parent->response(array('response'=>'failed','message'=>$this->page_data["error4"]),406);
  150. if(strtotime($fromdate)>strtotime($todate)) $parent->response(array('response'=>'failed','message'=>'to datetime should be greater than from datetime'),406);
  151. //UPDATED FOR APP TEAM
  152. $channeltemp = explode("_",$channel);
  153. $gettrname="select emp_code from tbl__user where userid='".$userid."'";
  154. $trname_arr=$parent->getQueryValue($gettrname);
  155. $channel = $trname_arr[0]->emp_code."_".$channeltemp[1]."_".$channeltemp[2];
  156. if(!(is_array($dse) && count($dse)>0)) $parent->response(array('response'=>'failed','message'=>$this->page_data["error2"]),406);
  157. //INSERT
  158. $insert_str = "INSERT INTO ".TABLE_VIDEOTRAININGSCHEDULE."(typeid, `title`, `description`, `fromdate`, `todate`,channel, `status`, `organiser_role`, `organiser`, `created_on`, `modified_on`) VALUES ('".$typeid."','".$title."','".$description."','".$fromdate."','".$todate."','".$channel."','1','".$role."','".$userid."','".NOW."','".NOW."')";
  159. $parent->executeQuery($insert_str);
  160. $trainingid=$parent->lastInsertId();
  161. //INSERT INTO `tbl__videoscheduleuser`(`id`, `sid`, `userid`, `status`, `created_on`, `modified_on`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6])
  162. foreach($dse as $userid)
  163. {
  164. $ins_arr[]="('".$trainingid."', '".$userid."', 1,'".NOW."','".NOW."')";
  165. }
  166. $insert_str = "INSERT INTO ".TABLE_VIDEOSCHEDULEUSER." ( `sid`, `userid`, `status`, `created_on`, `modified_on`) VALUES ".@implode(",", $ins_arr);
  167. $parent->executeQuery($insert_str);
  168. $this->notificationtriggervideotraining($parent,$trainingid);
  169. //LOG
  170. $logstr='VIDEO TRAINING SUBMIT';
  171. globalfunc::insertUserLog($parent,$logstr);
  172. $parent->response(array('response'=>'success','message'=>$this->page_data['success1']),200);
  173. break;
  174. case "DELETE":
  175. globalfunc::checkParamCount($parent,1);
  176. projectfunc::authorizedRole($parent,array('3','4','5','6','7','14'));
  177. $userid=$parent->current_user_id;
  178. $role=$parent->current_user_role;
  179. $deleteid= escape_str($parent->params[0]);
  180. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE ,"id"," (( `organiser_role`='".$role."' AND `organiser`='".$userid."') OR creator_id='".$userid."') AND is_deleted=0 and id='".$deleteid."'","1");
  181. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  182. $parent->executeQuery("UPDATE ".TABLE_VIDEOTRAININGSCHEDULE." SET is_deleted=1 WHERE id='".$get_list_arr['result'][0]->id."'");
  183. //TRIGGER NOTIFICATION
  184. $extobj=new stdClass();
  185. $extobj->type='delete';
  186. $this->notificationtriggervideotraining($parent,$deleteid,$extobj);
  187. //LOG
  188. $logstr='VIDEO TRAINING DELETE';
  189. globalfunc::insertUserLog($parent,$logstr);
  190. $parent->response(array('response'=>'success','message'=>$this->page_data['success1']),200);
  191. break;
  192. }
  193. }
  194. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  195. /* /////////////////////////////// USERLIST //////////////////////////////////////////////// */
  196. private function dselist($parent) //NOT USING
  197. {
  198. globalfunc::checkMethodType($parent,array('GET'));
  199. globalfunc::checkParamCount($parent,1);
  200. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  201. projectfunc::authorizedRole($parent,array('3','4','5','6','7','14'));
  202. $userid=$parent->current_user_id;
  203. $role=$parent->current_user_role;
  204. switch($parent->current_user_role)
  205. {
  206. case '3'://ho
  207. $usercond='';
  208. break;
  209. case '4':
  210. $usercond=" AND d.zm_email='".$parent->current_user_data->emailid."'";
  211. break;
  212. case '5':
  213. $get_trainer_str = "SELECT zone FROM ".DMS_HOUSER." WHERE emp_code='".$parent->current_user_data->emp_code."' LIMIT 1";
  214. $trainer_arr=$parent->getQueryValue($get_trainer_str);
  215. $zone_cond.=(count($trainer_arr)>0)?"zone='".$trainer_arr[0]->zone."'":"zone='0'";
  216. $usercond=" AND d.".$zone_cond;
  217. break;
  218. case '6':
  219. $usercond=" AND d.rm_email='".$parent->current_user_data->emailid."'";
  220. break;
  221. case '7':
  222. $usercond=" AND d.am_email='".$parent->current_user_data->emailid."'";
  223. break;
  224. }
  225. $usercond.=' AND d.status=1 AND d.is_deleted=0';
  226. $filter_arr=globalfunc::getFilterValues($parent,$parent->params[0]);
  227. //segment
  228. if(isset($filter_arr['segment']) && $filter_arr['segment']!='')
  229. {
  230. $usercond.=" AND u.segment='".escape_str($filter_arr['segment'])."' ";
  231. }
  232. //GET DATA
  233. $query_str="SELECT u.userid,u.fname,u.lname,u.smpin,u.dealer_code,d.dealer_name,u.segment,CASE WHEN u.segment=0 THEN 'Student Learner' WHEN u.segment=1 THEN 'Parents/Guardian' WHEN u.segment=2 THEN 'Instructor' END as segment_str FROM ".TABLE_USER." u LEFT JOIN ".DMS_EMPLOYEE." e ON u.smpin=e.smpin LEFT JOIN ".DMS_DEALER." d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND u.role>7 AND u.role<14 ".$usercond." ORDER BY u.dealer_code ASC,u.fname ASC,u.userid ASC";
  234. $query_arr=$parent->getQueryValue($query_str);
  235. $data_arr=(count($query_arr)>0)?$query_arr:array();
  236. //LOG
  237. $logstr='VIDEO TRAINING TRAINER DSE LIST';
  238. globalfunc::insertUserLog($parent,$logstr);
  239. $parent->response(array('response'=>'success', 'data'=>$data_arr,'message'=>$this->page_data['success1']),200);
  240. }
  241. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  242. /* /////////////////////////////// TRAINING DSE //////////////////////////////////////////////// */
  243. private function trainingdse($parent)
  244. {
  245. globalfunc::checkMethodType($parent,array('GET'));
  246. globalfunc::checkParamCount($parent,2);
  247. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  248. projectfunc::authorizedRole($parent,array('3','4','5','6','7','14'));
  249. $id= escape_str($parent->params[1]);
  250. $userid=$parent->current_user_id;
  251. $role=$parent->current_user_role;
  252. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE ,"id,participant_role"," status='1' AND `organiser_role`='".$role."' AND `organiser`='".$userid."' AND is_deleted=0 AND id='".$id."'","1");
  253. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  254. $query_str="SELECT u.userid,u.fname,u.lname,u.smpin,u.dealer_code,u.profile_photo,u.role,u.emp_code,CASE WHEN u.role IN (8,9,10,11,12,13) THEN d.dealer_name ELSE '' END as dealer_name,CASE WHEN u.segment=0 THEN 'Student Learner' WHEN u.segment=1 THEN 'Parents/Guardian' WHEN u.segment=2 THEN 'Instructor' END as segment_str FROM ".TABLE_VIDEOSCHEDULEUSER." vu JOIN ".TABLE_USER." u ON vu.userid=u.userid LEFT JOIN ".DMS_DEALER." d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND vu.sid='".$id."' ORDER BY u.dealer_code ASC,u.fname ASC,u.userid ASC";
  255. //LEFT JOIN ".DMS_EMPLOYEE." e ON u.smpin=e.smpin LEFT JOIN ".DMS_DEALER." d ON u.dealer_code=d.dealer_code
  256. //,d.dealer_name,u.segment,CASE WHEN u.segment=0 THEN 'Student Learner' WHEN u.segment=1 THEN 'Parents/Guardian' WHEN u.segment=2 THEN 'Instructor' END as segment_str
  257. $query_arr=$parent->getQueryValue($query_str);
  258. if(count($query_arr)>0)
  259. {
  260. //CONNECT S3
  261. $s3=awsfileserver::connectS3();
  262. foreach($query_arr as $ukey=>$user)
  263. {
  264. if(!in_array($user->role,array(8,9,10,11,12,13)))
  265. {
  266. $query_arr[$ukey]->smpin=$user->emp_code;
  267. $query_arr[$ukey]->dealer_name='';
  268. $query_arr[$ukey]->segment_str='';
  269. }
  270. if($user->profile_photo!='')
  271. {
  272. $query_arr[$ukey]->profile=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_PROFILE_IMAGE_URL.$user->profile_photo); }else
  273. {
  274. $query_arr[$ukey]->profile=USER_NOIMAGE_URL;
  275. }
  276. $timer_query_str="SELECT * FROM ".TABLE_VIDEOTRAININGTIMER." WHERE userid='".$user->userid."' AND sid='".$id."'";
  277. $time_arr=$parent->getQueryValue($timer_query_str);
  278. $query_arr[$ukey]->timerlist=(count($time_arr)>0)?$time_arr:array();
  279. }
  280. }
  281. $data_arr=(count($query_arr)>0)?$query_arr:array();
  282. //LOG
  283. $logstr='VIDEO TRAINING DSE LIST';
  284. globalfunc::insertUserLog($parent,$logstr);
  285. $parent->response(array('response'=>'success', 'data'=>$data_arr,'message'=>$this->page_data['success1']),200);
  286. }
  287. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  288. /* /////////////////////////////// TRAINING LIST //////////////////////////////////////////////// */
  289. private function traininglist($parent)
  290. {
  291. globalfunc::checkMethodType($parent,array('GET'));
  292. globalfunc::checkParamCount($parent,1);
  293. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  294. //$arr=array(["id"=>"base","title"=>"Base"],["id"=>"bronze","title"=>"Bronze"],["id"=>"silverlevel1","title"=>"Silver level 1"],["id"=>"silverlevel2","title"=>"Silver level 2"],["id"=>"goldlevel1","title"=>"Gold level 1"],["id"=>"goldlevel2","title"=>"Gold level 2"]);
  295. $training_str = "SELECT type_id as id,title FROM ".TABLE_VIDEOTRAININGTITLE." ORDER BY id ASC";
  296. $trainer_arr=$parent->getQueryValue($training_str);
  297. $arr=(count($trainer_arr)>0)?$trainer_arr:array();
  298. //LOG
  299. $logstr='VIDEO TRAINING TYPE LIST';
  300. globalfunc::insertUserLog($parent,$logstr);
  301. $parent->response(array('response'=>'success', 'data'=>$arr,'message'=>$this->page_data['success1']),200);
  302. }
  303. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  304. /* /////////////////////////////// UPDATE TIME //////////////////////////////////////////////// */
  305. private function updatetime($parent)
  306. {
  307. globalfunc::checkMethodType($parent,array('POST'));
  308. globalfunc::checkParamCount($parent,1);
  309. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  310. $REQUEST_KEYS=array('timetaken'=>'number','sid'=>'number','fromtime'=>'date|Y-m-d H:i:s','totime'=>'date|Y-m-d H:i:s');
  311. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  312. $sid=escape_str($parent->_request['sid']);
  313. $timetaken=escape_str($parent->_request['timetaken']);
  314. $userid=$parent->current_user_id;
  315. $role=$parent->current_user_role;
  316. $fromtime=escape_str($parent->_request['fromtime']);
  317. $totime=escape_str($parent->_request['totime']);
  318. $id=escape_str($parent->_request['id']);
  319. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s JOIN ".TABLE_VIDEOSCHEDULEUSER." u ON s.id=u.sid" ,"s.id,s.organiser,s.fromdate"," s.status IN (1,2) AND s.is_deleted=0 AND s.id='".$sid."' AND (s.`organiser`='".$userid."' OR u.userid='".$userid."')","1");
  320. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  321. // $check_arr=$parent->selectQuery(TABLE_VIDEOTRAININGTIMER,"id","sid='".$sid."' AND userid='".$userid."'","1");
  322. // if($check_arr['nr']>0)
  323. // {
  324. // $update_str="UPDATE ".TABLE_VIDEOTRAININGTIMER." SET `timetaken`='".$timetaken."' WHERE id='".$check_arr['result'][0]->id."'";
  325. // $parent->executeQuery($update_str);
  326. // }else
  327. // {
  328. // $insert_str = "INSERT INTO ".TABLE_VIDEOTRAININGTIMER."( `sid`, `userid`, `role`, `timetaken`, `created_on`) VALUES ('".$sid."','".$userid."','".$role."','".$timetaken."','".NOW."')";
  329. // $parent->executeQuery($insert_str);
  330. // }
  331. if($id!='')
  332. {
  333. $update_str = "UPDATE ".TABLE_VIDEOTRAININGTIMER." SET `timetaken`='".$timetaken."',`totime`='".$totime."',modified_on='".NOW."' WHERE id='".$id."'";
  334. $parent->executeQuery($update_str);
  335. }else
  336. {
  337. $insert_str = "INSERT INTO ".TABLE_VIDEOTRAININGTIMER."( `sid`, `userid`, `role`, `timetaken`,`fromtime`, `totime`, `created_on`,modified_on) VALUES ('".$sid."','".$userid."','".$role."','".$timetaken."','".$fromtime."','".$totime."','".NOW."','".NOW."')";
  338. $parent->executeQuery($insert_str);
  339. $id=$parent->lastInsertId();
  340. }
  341. //time check
  342. $list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGTIMER ,"*"," sid='".$sid."' AND userid='".$get_list_arr['result'][0]->organiser."' ORDER BY id DESC ","1");
  343. if($list_arr['nr']>0)
  344. {
  345. $created_on=$list_arr['result'][0]->modified_on;
  346. $check=date('Y-m-d H:i:s',strtotime('-300 seconds',strtotime(NOW)));
  347. if(strtotime($check)>strtotime($created_on))
  348. {
  349. $update_str = "UPDATE ".TABLE_VIDEOTRAININGSCHEDULE." SET status=2 WHERE id='".$sid."'";
  350. $parent->executeQuery($update_str);
  351. $parent->response(array('response'=>'failed','data'=>$id, 'message'=>'failed'),200);
  352. }
  353. }
  354. //LOG
  355. $logstr='VIDEO TRAINING TIMER UPDATE';
  356. globalfunc::insertUserLog($parent,$logstr);
  357. $parent->response(array('response'=>'success','data'=>$id, 'message'=>$this->page_data['success1']),200);
  358. }
  359. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  360. /* /////////////////////////////// MESSAGE //////////////////////////////////////////////// */
  361. private function message($parent)
  362. {
  363. globalfunc::checkMethodType($parent,array('GET','POST','DELETE'));
  364. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  365. switch ($parent->get_request_method())
  366. {
  367. case "GET":
  368. globalfunc::checkParamCount($parent,2);
  369. $userid=$parent->current_user_id;
  370. $role=$parent->current_user_role;
  371. //PAGINATION SETTINGS
  372. $limit_cond='';
  373. $data_arr=array();
  374. // $limit_str=globalfunc::setPageLimit($parent,$parent->params[1]);
  375. // $limit_cond=($limit_str)?" LIMIT ".$limit_str:'';
  376. $sid_str= escape_str($parent->params[1]);
  377. $sid_arr=@explode('?', $sid_str);
  378. $sid=escape_str($sid_arr[0]);
  379. //VALIDATION
  380. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s JOIN ".TABLE_VIDEOSCHEDULEUSER." u ON s.id=u.sid" ,"s.id,s.organiser"," s.status='1' AND s.is_deleted=0 AND s.id='".$sid."' AND (s.`organiser`='".$userid."' OR u.userid='".$userid."')","1");
  381. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  382. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGMSG." m JOIN ".TABLE_USER." u ON m.userid=u.userid" ,"SQL_CALC_FOUND_ROWS m.`sid`, m. `userid`, m.`role`, m.`msg` as message , m.`created_on` ,u.smpin,u.emp_code,CONCAT(u.fname,u.lname) as name,u.role,u.profile_photo"," m.sid='".$sid."' GROUP BY m.id ORDER BY m.id ASC ".$limit_cond,"");
  383. $tot = $parent->getQueryValue("select FOUND_ROWS() as total_records");
  384. $total=(count($tot)>0)?$tot[0]->total_records:0;
  385. if($get_list_arr['nr']>0)
  386. {
  387. //CONNECT S3
  388. $s3=awsfileserver::connectS3();
  389. foreach($get_list_arr['result'] as $key=>$res)
  390. {
  391. $get_list_arr['result'][$key]->id=($res->role<=7)?$res->emp_code:$res->smpin;
  392. if($res->profile_photo!='')
  393. {
  394. $get_list_arr['result'][$key]->profile=awsfileserver::getS3FileUrl($s3,S3_BUCKET,S3_PROFILE_IMAGE_URL.$res->profile_photo); }else
  395. {
  396. $get_list_arr['result'][$key]->profile=USER_NOIMAGE_URL;
  397. }
  398. }
  399. }
  400. $data_arr=($get_list_arr['nr']>0)?$get_list_arr['result']:array();
  401. //LOG
  402. $logstr='VIDEO TRAINING MSG LIST';
  403. globalfunc::insertUserLog($parent,$logstr);
  404. $parent->response(array('response'=>'success', 'data'=>$data_arr ,'message'=>$this->page_data['success1']),200);
  405. break;
  406. case "POST": //INSERT
  407. globalfunc::checkParamCount($parent,1);
  408. $REQUEST_KEYS=array('sid'=>'number','msg'=>'string');
  409. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  410. $sid=escape_str($parent->_request['sid']);
  411. $msg=escape_str($parent->_request['msg']);
  412. $userid=$parent->current_user_id;
  413. $role=$parent->current_user_role;
  414. //VALIDATION
  415. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s JOIN ".TABLE_VIDEOSCHEDULEUSER." u ON s.id=u.sid" ,"s.id"," s.status='1' AND s.is_deleted=0 AND s.id='".$sid."' AND (s.`organiser`='".$userid."' OR u.userid='".$userid."')","1");
  416. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  417. $insert_msg= "INSERT INTO ".TABLE_VIDEOTRAININGMSG ." (`sid`, `userid`, `role`, `msg`, `created_on`) VALUES ('".$sid."','".$userid."','".$role."','".$msg."','".NOW."')";
  418. $parent->executeQuery($insert_msg);
  419. //LOG
  420. $logstr='VIDEO TRAINING MSG INSERT';
  421. globalfunc::insertUserLog($parent,$logstr);
  422. $parent->response(array('response'=>'success', 'message'=>$this->page_data['success1']),200);
  423. break;
  424. case "DELETE"://DELETE
  425. globalfunc::checkParamCount($parent,2);
  426. $deleteid= escape_str($parent->params[1]);
  427. $userid=$parent->current_user_id;
  428. $role=$parent->current_user_role;
  429. //VALIDATION
  430. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s JOIN ".TABLE_VIDEOSCHEDULEUSER." u ON s.id=u.sid" ,"s.id"," s.status='1' AND s.is_deleted=0 AND s.id='".$sid."' AND (s.`organiser`='".$userid."' OR u.userid='".$userid."')","1");
  431. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  432. $delete_msg= "DELETE FROM ".TABLE_VIDEOTRAININGMSG ." WHERE id='".$deleteid."'";
  433. $parent->executeQuery($delete_msg);
  434. //LOG
  435. $logstr='VIDEO TRAINING MSG DELETE';
  436. globalfunc::insertUserLog($parent,$logstr);
  437. $parent->response(array('response'=>'success', 'message'=>$this->page_data['success1']),200);
  438. break;
  439. }
  440. }
  441. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  442. /* /////////////////////////////// NOTIFICATION TRIGGER //////////////////////////////////////////////// */
  443. private function notificationtriggervideotraining($parent,$trainingid,$extobj=NULL)
  444. {
  445. $schedule_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE ,"*","id='".$trainingid."'","1");
  446. if($extobj!=NULL)
  447. {
  448. if(isset($extobj->userid)&& is_array($extobj->userid))
  449. {
  450. $excond=" AND u.userid IN(".implode(',',$extobj->userid).")";
  451. }
  452. }
  453. $ntype=($extobj!=NULL && isset($extobj->type))?$extobj->type:"";
  454. if($ntype=='removed')
  455. {
  456. $get_list_arr=$parent->selectQuery(TABLE_USER." u " ,"u.userid "," u.is_deleted=0 ".$excond." ORDER BY u.userid ","");
  457. }else
  458. {
  459. $get_list_arr=$parent->selectQuery("(SELECT * FROM ".TABLE_VIDEOSCHEDULEUSER." WHERE sid='".$trainingid."' )sv JOIN ".TABLE_USER." u ON sv.userid=u.userid " ,"u.userid "," u.is_deleted=0 ".$excond." ORDER BY u.userid ","");
  460. }
  461. if($schedule_arr['nr']>0 && $get_list_arr['nr']>0)
  462. {
  463. if($schedule_arr['nr']>0)
  464. {
  465. $obj=new stdClass();
  466. $obj->id=$trainingid;
  467. $notificationdata= json_encode($obj);
  468. $notificationtype='9';
  469. switch($ntype)
  470. {
  471. case 'removed':
  472. $notificationtitle="i-Learn - ".$schedule_arr['result'][0]->title ." cancelled for you";
  473. $notificationtext="i-Learn - ".$schedule_arr['result'][0]->title." schdeuled on ".date('d-M-Y h:i A', strtotime($schedule_arr['result'][0]->fromdate))." is cancelled for you.";
  474. break;
  475. case 'delete':
  476. $notificationtitle="i-Learn - ".$schedule_arr['result'][0]->title ." cancelled";
  477. $notificationtext="i-Learn - ".$schedule_arr['result'][0]->title." schdeuled on ".date('d-M-Y h:i A', strtotime($schedule_arr['result'][0]->fromdate))." is cancelled.";
  478. break;
  479. default:
  480. $notificationtitle="New i-Learn - ".$schedule_arr['result'][0]->title;
  481. $notificationtext="New i-Learn - ".$schedule_arr['result'][0]->title." schdeuled on ".date('d-M-Y h:i A', strtotime($schedule_arr['result'][0]->fromdate)).".";
  482. break;
  483. }
  484. $parent->executeQuery("INSERT INTO `".TABLE_NOTIFICATION."` ( `notificationtitle`, `notificationtext`, `notificationdata`, `notificationtype`, `status`, `publisheddate`, `created_on`, `modified_on`) VALUES ('".escape_str($notificationtitle)."','".escape_str($notificationtext)."','".$notificationdata."','".$notificationtype."' ,'1','".NOW."','".NOW."','".NOW."')");
  485. $notificationid=$parent->lastInsertId();
  486. $data=array('notification_id'=>$notificationid,'title'=>$notificationtitle,'message'=> $notificationtext,'notificationtype'=>$notificationtype,'notificationdata'=>$notificationdata,'created_date'=>NOW);
  487. $ins_arr=array();
  488. foreach($get_list_arr['result'] as $res)
  489. {
  490. $ins_arr[]=" ('".$notificationid."', '".$res->userid."', '0', '".NOW."')";
  491. }
  492. $insert_chunk=array_chunk($ins_arr, 1000);
  493. foreach($insert_chunk as $chunk_ins)
  494. {
  495. $parent->executeQuery("INSERT INTO ".TABLE_NOTIFICATION_USER."(`notificationid`, `userid`, `status`, `created_on`) VALUES ".@implode(',',$chunk_ins)." ON DUPLICATE KEY UPDATE `status` =0");
  496. }
  497. $usertokenarr['ios']=array();
  498. $usertokenarr['android']=array();
  499. $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!=''";
  500. $user_device_arr = $parent->getQueryValue($user_device_str);
  501. if(count($user_device_arr)>0)
  502. {
  503. foreach($user_device_arr as $res_user)
  504. {
  505. if(strtolower($res_user->devicetype)=='ios')
  506. {
  507. $usertokenarr['ios'][]=$res_user->token;
  508. }else if(strtolower($res_user->devicetype)=='android')
  509. {
  510. $usertokenarr['android'][]=$res_user->token;
  511. }
  512. }
  513. // globalfunc::sendUserNotification($data,$usertokenarr);
  514. }
  515. }
  516. }
  517. }
  518. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  519. /* /////////////////////////////// SCHEDULE USERS //////////////////////////////////////////////// */
  520. private function scheduleusers($parent)
  521. {
  522. globalfunc::checkMethodType($parent,array( 'POST','DELETE'));
  523. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  524. switch ($parent->get_request_method())
  525. {
  526. case "POST": //INSERT
  527. globalfunc::checkParamCount($parent,1);
  528. projectfunc::authorizedRole($parent,array('3','4','5','6','7','14'));
  529. $REQUEST_KEYS=array('userid'=>'string','trainingid'=>'number');
  530. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  531. $userids= json_decode($parent->_request['userid']);
  532. $trainingid=escape_str($parent->_request['trainingid']);
  533. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s " ,"s.id"," s.status='1' AND s.is_deleted=0 AND s.id='".$trainingid."' AND s.`organiser`='".$parent->current_user_id."' ","1");
  534. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  535. if(is_array($userids) && count($userids)>0)
  536. {
  537. $ins_arr=array();
  538. $uids=array();
  539. foreach($userids as $userid)
  540. {
  541. $ins_arr[]=" ('".$trainingid."','".$userid."','1','".NOW."','".NOW."')";
  542. $uids[]=$userid;
  543. }
  544. //check already exist
  545. $check_arr=$parent->selectQuery(TABLE_VIDEOSCHEDULEUSER ,"id"," sid='".$trainingid."' AND userid IN (".@implode(",",$uids).")","1");
  546. if($check_arr['nr']>0 )$parent->response(array('response'=>'failed','message'=>$this->page_data["error3"]),406);
  547. $insert_usr= "INSERT INTO ".TABLE_VIDEOSCHEDULEUSER ." (`sid`, `userid`, `status`, `created_on`, `modified_on`) VALUES ".@implode(',',$ins_arr);
  548. $parent->executeQuery($insert_usr);
  549. //TRIGGER NOTIFICATION
  550. $extobj=new stdClass();
  551. $extobj->userid=$uids;
  552. $this->notificationtriggervideotraining($parent,$trainingid,$extobj);
  553. }else
  554. {
  555. $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  556. }
  557. //LOG
  558. $logstr='VIDEO TRAINING USER INSERT';
  559. globalfunc::insertUserLog($parent,$logstr);
  560. $parent->response(array('response'=>'success', 'message'=>$this->page_data['success1']),200);
  561. break;
  562. case "DELETE"://DELETE
  563. globalfunc::checkParamCount($parent,3);
  564. projectfunc::authorizedRole($parent,array('3','4','5','6','7','14'));
  565. $trainingid=escape_str($parent->params[1]);
  566. $userid= escape_str($parent->params[2]);
  567. $get_list_arr=$parent->selectQuery(TABLE_VIDEOTRAININGSCHEDULE." s " ,"s.id"," s.status='1' AND s.is_deleted=0 AND s.id='".$trainingid."' AND s.`organiser`='".$parent->current_user_id."' ","1");
  568. if(!$get_list_arr['nr']>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error1"]),406);
  569. $delete_msg= "DELETE FROM ".TABLE_VIDEOSCHEDULEUSER ." WHERE sid='".$trainingid."' and userid='".$userid."'";
  570. $parent->executeQuery($delete_msg);
  571. //TRIGGER NOTIFICATION
  572. $extobj=new stdClass();
  573. $extobj->userid=array($userid);
  574. $extobj->type='removed';
  575. $this->notificationtriggervideotraining($parent,$trainingid,$extobj);
  576. //LOG
  577. $logstr='VIDEO TRAINING USER DELETE';
  578. globalfunc::insertUserLog($parent,$logstr);
  579. $parent->response(array('response'=>'success', 'message'=>$this->page_data['success1']),200);
  580. break;
  581. }
  582. }
  583. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  584. /* /////////////////////////////// ROLE LIST //////////////////////////////////////////////// */
  585. private function role($parent)
  586. {
  587. globalfunc::checkMethodType($parent,array('GET'));
  588. globalfunc::checkParamCount($parent,1);
  589. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  590. $role_str = "SELECT `id`, `rolename` FROM ".TABLE_ROLE." WHERE status=1 AND ( id=14 OR (id>3 AND id<8)) ORDER BY id ASC";
  591. $role_arr=$parent->getQueryValue($role_str);
  592. $arr=(count($role_arr)>0)?$role_arr:array();
  593. //LOG
  594. $logstr='VIDEO TRAINING ROLE LIST';
  595. globalfunc::insertUserLog($parent,$logstr);
  596. $parent->response(array('response'=>'success', 'data'=>$arr,'message'=>$this->page_data['success1']),200);
  597. }
  598. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  599. /* /////////////////////////////// ROLE USER //////////////////////////////////////////////// */
  600. private function getroleuser($parent)
  601. {
  602. globalfunc::checkMethodType($parent,array('POST'));
  603. globalfunc::checkParamCount($parent,1);
  604. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  605. $REQUEST_KEYS=array('role'=>'number' );
  606. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  607. $role= escape_str($parent->_request['role']);
  608. $value= escape_str($parent->_request['value']);
  609. switch($role)
  610. {
  611. case "4"://ZM
  612. $query_str = "SELECT userid,emp_code,fname,lname,dealer_code, emailid as value FROM ".TABLE_USER." WHERE is_deleted=0 AND status='1' AND role='".$role."' ORDER BY fname ASC,userid ASC ";
  613. break;
  614. case "5"://TRAINER
  615. $query_str = "SELECT userid,emp_code,fname,lname,dealer_code,emp_code as value FROM ".TABLE_USER." WHERE is_deleted=0 AND status='1' AND role='".$role."' ORDER BY fname ASC,userid ASC ";
  616. break;
  617. case "6"://RM
  618. if($value!='')$cond=" AND d.zm_email='".$value."'";
  619. $query_str = "SELECT u.userid,u.emp_code,u.fname,u.lname,u.dealer_code, u.emailid as value FROM ".TABLE_USER." u JOIN ".DMS_DEALER." d ON u.emailid=d.rm_email WHERE d.is_deleted=0 AND u.is_deleted=0 AND u.status='1' AND u.role='".$role."' ".$cond." GROUP BY u.userid ORDER BY u.fname ASC,u.userid ASC ";
  620. break;
  621. case "7"://AM
  622. if($value!='')$cond=" AND d.rm_email='".$value."'";
  623. $query_str = "SELECT u.userid,u.emp_code,u.fname,u.lname,u.dealer_code, u.emailid as value FROM ".TABLE_USER." u JOIN ".DMS_DEALER." d ON u.emailid=d.am_email WHERE d.is_deleted=0 AND u.is_deleted=0 AND u.status='1' AND u.role='".$role."' ".$cond." GROUP BY u.userid ORDER BY u.fname ASC,u.userid ASC ";
  624. break;
  625. case "14"://DEALER
  626. if($value!='')$cond=" AND d.am_email='".$value."'";
  627. $query_str = "SELECT u.userid,u.emp_code,u.fname,u.lname,u.dealer_code, u.dealer_code as value FROM ".TABLE_USER." u JOIN ".DMS_DEALER." d ON d.dealer_code=u.dealer_code WHERE d.is_deleted=0 AND u.is_deleted=0 AND u.status='1' AND u.role='".$role."' ".$cond." GROUP BY u.userid ORDER BY u.fname ASC,u.userid ASC ";
  628. break;
  629. }
  630. $user_arr=$parent->getQueryValue($query_str);
  631. $arr=(count($user_arr)>0)?$user_arr:array();
  632. //LOG
  633. $logstr='VIDEO TRAINING ROLE USER';
  634. globalfunc::insertUserLog($parent,$logstr);
  635. $parent->response(array('response'=>'success', 'data'=>$arr,'message'=>$this->page_data['success1']),200);
  636. }
  637. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  638. /* /////////////////////////////// RM LIST //////////////////////////////////////////////// */
  639. private function rmlist($parent)
  640. {
  641. globalfunc::checkMethodType($parent,array('POST'));
  642. globalfunc::checkParamCount($parent,1);
  643. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  644. $REQUEST_KEYS=array('role'=>'number','value'=>'string');
  645. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  646. $role= escape_str($parent->_request['role']);
  647. $value=json_decode($parent->_request['value']);
  648. if(!is_array($value)&& count($value)>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error5"]),406);
  649. if($role=='5')
  650. {
  651. $empcode_quotes = array_map("quotes_array", $value);
  652. $cond=" AND emp_code IN (".@implode(",",$empcode_quotes).")";
  653. $get_trainer_str = "SELECT zone FROM ".DMS_HOUSER." WHERE status='1' ".$cond." LIMIT 1";
  654. $trainer_arr=$parent->getQueryValue($get_trainer_str);
  655. $dcond=(count($trainer_arr)>0)?" AND zone='".$trainer_arr[0]->zone."'":" AND zone=''";
  656. }else
  657. {
  658. $email_quotes = array_map("quotes_array", $value);
  659. $dcond=" AND zm_email IN (".@implode(",",$email_quotes).")";
  660. }
  661. $query_str = "SELECT rm_name as name,rm_email as value FROM ".DMS_DEALER." WHERE status='1' AND is_deleted='0' ".$dcond." GROUP BY rm_email ";
  662. $user_arr=$parent->getQueryValue($query_str);
  663. $arr=(count($user_arr)>0)?$user_arr:array();
  664. //LOG
  665. $logstr='VIDEO TRAINING RM LIST';
  666. globalfunc::insertUserLog($parent,$logstr);
  667. $parent->response(array('response'=>'success', 'data'=>$arr,'message'=>$this->page_data['success1']),200);
  668. }
  669. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  670. /* /////////////////////////////// AM LIST //////////////////////////////////////////////// */
  671. private function amlist($parent)
  672. {
  673. globalfunc::checkMethodType($parent,array('POST'));
  674. globalfunc::checkParamCount($parent,1);
  675. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  676. $REQUEST_KEYS=array('role'=>'number','value'=>'string');
  677. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  678. $role= escape_str($parent->_request['role']);
  679. $value=json_decode($parent->_request['value']);
  680. if(!is_array($value)&& count($value)>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error5"]),406);
  681. $email_quotes = array_map("quotes_array", $value);
  682. $dcond=" AND rm_email IN (".@implode(",",$email_quotes).")";
  683. $query_str = "SELECT am_name as name,am_email as value FROM ".DMS_DEALER." WHERE status='1' AND is_deleted='0' ".$dcond." GROUP BY am_email ";
  684. $user_arr=$parent->getQueryValue($query_str);
  685. $arr=(count($user_arr)>0)?$user_arr:array();
  686. //LOG
  687. $logstr='VIDEO TRAINING AM LIST';
  688. globalfunc::insertUserLog($parent,$logstr);
  689. $parent->response(array('response'=>'success', 'data'=>$arr,'message'=>$this->page_data['success1']),200);
  690. }
  691. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  692. /* /////////////////////////////// DEALER LIST //////////////////////////////////////////////// */
  693. private function dealerlist($parent)
  694. {
  695. globalfunc::checkMethodType($parent,array('POST'));
  696. globalfunc::checkParamCount($parent,1);
  697. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  698. $REQUEST_KEYS=array('role'=>'number','value'=>'string');
  699. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  700. $role= escape_str($parent->_request['role']);
  701. $value=json_decode($parent->_request['value']);
  702. if(!is_array($value)&& count($value)>0) $parent->response(array('response'=>'failed','message'=>$this->page_data["error5"]),406);
  703. $email_quotes = array_map("quotes_array", $value);
  704. $dcond=" AND am_email IN (".@implode(",",$email_quotes).")";
  705. $query_str = "SELECT dealer_name as name,dealer_code as value FROM ".DMS_DEALER." WHERE status='1' AND is_deleted='0' ".$dcond."";
  706. $user_arr=$parent->getQueryValue($query_str);
  707. $arr=(count($user_arr)>0)?$user_arr:array();
  708. //LOG
  709. $logstr='VIDEO TRAINING DEALER LIST';
  710. globalfunc::insertUserLog($parent,$logstr);
  711. $parent->response(array('response'=>'success', 'data'=>$arr,'message'=>$this->page_data['success1']),200);
  712. }
  713. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  714. /* /////////////////////////////// SCHEDULETRAINING LIST //////////////////////////////////////////////// */
  715. private function scheduletraining($parent)
  716. {
  717. globalfunc::checkMethodType($parent,array('GET' ));
  718. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  719. globalfunc::checkParamCount($parent,1);
  720. projectfunc::authorizedRole($parent,array('3'));
  721. $userid=$parent->current_user_id;
  722. $role=$parent->current_user_role;
  723. //PAGINATION SETTINGS
  724. $limit_cond='';
  725. $data_arr=array();
  726. $limit_str=globalfunc::setPageLimit($parent,$parent->params[0]);
  727. $limit_cond=($limit_str)?" LIMIT ".$limit_str:'';
  728. $query_str = "SELECT SQL_CALC_FOUND_ROWS s.*,CONCAT(u.fname,' ',u.lname) as organiser_name,u.emp_code FROM ".TABLE_VIDEOTRAININGSCHEDULE." s JOIN ".TABLE_USER." u ON u.userid=s.organiser WHERE s.is_deleted='0' AND s.status=1 AND s.creator_id='".$userid."' ORDER BY s.fromdate DESC,s.id DESC ".$limit_cond;
  729. $get_list_arr = $parent->getQueryValue($query_str);
  730. // if(count($get_list_arr)>0)
  731. // {
  732. // foreach($get_list_arr as $key=>$res)
  733. // {
  734. //
  735. // $get_list_arr[$key]->organiser_name='';
  736. // }
  737. // }
  738. // Total records
  739. $rows_result = $parent->getQueryValue("SELECT FOUND_ROWS() as total_records");
  740. $total_records = (count($rows_result)>0)?$rows_result[0]->total_records:0;
  741. $data_arr=(count($get_list_arr)>0)?$get_list_arr:array();
  742. //LOG
  743. $logstr='VIDEO SCHEDULED LIST';
  744. globalfunc::insertUserLog($parent,$logstr);
  745. $last_page=($total_records)?ceil($total_records/$parent->current_limit)-1:0;
  746. $parent->response(array('response'=>'success', 'data'=>$data_arr,'total'=>$total_records,'last_page'=>$last_page,'current_page'=>$parent->current_page,'message'=>$this->page_data['success1']),200);
  747. }
  748. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  749. /* /////////////////////////////// SCHEDULETRAINING LIST //////////////////////////////////////////////// */
  750. private function addtraining($parent)
  751. {
  752. globalfunc::checkMethodType($parent,array('POST' ));
  753. globalfunc::checkAuthrozation($parent,array('type'=>'user'));
  754. globalfunc::checkParamCount($parent,1);
  755. projectfunc::authorizedRole($parent,array('3'));
  756. $REQUEST_KEYS=array('userid'=>'number','role'=>'number','title'=>'string','description'=>'string','fromdate'=>'date|Y-m-d H:i:s','todate'=>'date|Y-m-d H:i:s');
  757. globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  758. $userid= escape_str($parent->_request['userid']);
  759. $role=escape_str($parent->_request['role']);
  760. $title=escape_str($parent->_request['title']);
  761. $description=escape_str($parent->_request['description']);
  762. $fromdate=escape_str($parent->_request['fromdate']);
  763. $todate=escape_str($parent->_request['todate']);
  764. // $participant_role=isset($parent->_request['participant_role'])?escape_str($parent->_request['participant_role']):10;
  765. if(strtotime($fromdate)<NOW) $parent->response(array('response'=>'failed','message'=>$this->page_data["error4"]),406);
  766. if(strtotime($todate)<NOW) $parent->response(array('response'=>'failed','message'=>$this->page_data["error4"]),406);
  767. if(strtotime($fromdate)>strtotime($todate)) $parent->response(array('response'=>'failed','message'=>'from date should be greater than to date'),406);
  768. $dse=$parent->_request['dse'];
  769. $dse=json_decode($dse); //sending as string
  770. $channel=escape_str($parent->_request['channel']);
  771. $typeid=escape_str($parent->_request['typeid']);
  772. if(!(is_array($dse) && count($dse)>0)) $parent->response(array('response'=>'failed','message'=>$this->page_data["error2"]),406);
  773. //UPDATED FOR APP TEAM
  774. $channeltemp = explode("_",$channel);
  775. $gettrname="select emp_code from tbl__user where userid='".$userid."'";
  776. $trname_arr=$parent->getQueryValue($gettrname);
  777. $channel = $trname_arr[0]->emp_code."_".$channeltemp[1]."_".$channeltemp[2];
  778. //INSERT
  779. $insert_str = "INSERT INTO ".TABLE_VIDEOTRAININGSCHEDULE."(typeid, `title`, `description`, `fromdate`, `todate`,channel, `status`, `organiser_role`, `organiser`, creator_id,`created_on`, `modified_on`) VALUES ('".$typeid."','".$title."','".$description."','".$fromdate."','".$todate."','".$channel."','1','".$role."','".$userid."','".$parent->current_user_id."','".NOW."','".NOW."')";
  780. $parent->executeQuery($insert_str);
  781. $trainingid=$parent->lastInsertId();
  782. foreach($dse as $userid)
  783. {
  784. $ins_arr[]="('".$trainingid."', '".$userid."', 1,'".NOW."','".NOW."')";
  785. }
  786. $insert_str = "INSERT INTO ".TABLE_VIDEOSCHEDULEUSER." ( `sid`, `userid`, `status`, `created_on`, `modified_on`) VALUES ".@implode(",", $ins_arr);
  787. $parent->executeQuery($insert_str);
  788. $this->notificationtriggervideotraining($parent,$trainingid);
  789. //LOG
  790. $logstr='VIDEO TRAINING SCHEDULE';
  791. globalfunc::insertUserLog($parent,$logstr);
  792. $parent->response(array('response'=>'success','message'=>$this->page_data['success1']),200);
  793. }
  794. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  795. }
  796. ?>