managerenquiry.php 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984
  1. <?php
  2. /****************************
  3. * File : managerenquiry.php
  4. * Author : Cygnusa
  5. * @2020
  6. ****************************/
  7. //SECURITY
  8. if (!defined('APPLICATION_PATH')) {
  9. exit('No direct script access allowed');
  10. }
  11. //FUNCTION LISTS
  12. function comparator($object1, $object2)
  13. {
  14. return $object1->order > $object2->order;
  15. }
  16. class managerenquiry
  17. {
  18. private $smpin = '';
  19. public function __construct($parent)
  20. {
  21. //GET PAGE MESSAGE
  22. $this->page_data = globalfunc::getMessage($parent, $parent->lang, 'enquiry'); //ERROR MSG FROM ENQUIRY
  23. if (count($parent->params) == 0) {
  24. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  25. } else {
  26. $qry_params = explode("?", $parent->params[0]);
  27. $parameter_val = strtolower($qry_params[0]);
  28. switch ($parameter_val) {
  29. case 'getzmlist':
  30. case 'getrmlist':
  31. case 'getamlist':
  32. case 'getdealerlist':
  33. case 'getdselist':
  34. case 'dashboard':
  35. case 'enquirysales':
  36. case 'listdata':
  37. case 'plannerlist':
  38. $this->$parameter_val($parent);
  39. break;
  40. default:
  41. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  42. break;
  43. }
  44. }
  45. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  46. }
  47. /* /////////////////////////////// ZONE MANAGER LIST //////////////////////////////////////////////// */
  48. private function getzmlist($parent)
  49. {
  50. globalfunc::checkMethodType($parent, array('POST'));
  51. globalfunc::checkParamCount($parent, 1);
  52. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  53. projectfunc::authorizedRole($parent, array('3'));
  54. $query_str = "SELECT zm_name as name,zm_email as value FROM " . DMS_DEALER . " WHERE status='1' AND is_deleted='0' GROUP BY zm_email ORDER BY zm_name ASC";
  55. $data_arr = $parent->getQueryValue($query_str);
  56. //LOG
  57. $logstr = 'ENQUIRY ZM LIST';
  58. globalfunc::insertUserLog($parent, $logstr);
  59. $parent->response(array('response' => 'success', 'data' => $data_arr, 'message' => $this->page_data['success1']), 200);
  60. }
  61. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  62. /* /////////////////////////////// REGIONAL MANAGER LIST //////////////////////////////////////////////// */
  63. private function getrmlist($parent)
  64. {
  65. globalfunc::checkMethodType($parent, array('POST'));
  66. globalfunc::checkParamCount($parent, 1);
  67. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  68. projectfunc::authorizedRole($parent, array('3', '4', '5'));
  69. //USER WISE CONDITION
  70. if ($parent->current_user_role == '3') //HO
  71. {
  72. $REQUEST_KEYS = array('zmemail' => 'string');
  73. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  74. $zmemail = escape_str($parent->_request["zmemail"]);
  75. $dcond = " AND zm_email='" . $zmemail . "'";
  76. } else if ($parent->current_user_role == '4') //ZM
  77. {
  78. $dcond = " and zm_email='" . $parent->current_user_data->emailid . "'";
  79. } else if ($parent->current_user_role == '5') //TRAINER
  80. {
  81. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  82. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  83. $dcond = (count($trainer_arr) > 0) ? " AND zone='" . $trainer_arr[0]->zone . "'" : ' AND id=0';
  84. }
  85. $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 ORDER BY rm_name ASC ";
  86. $data_arr = $parent->getQueryValue($query_str);
  87. //LOG
  88. $logstr = 'ENQUIRY RM LIST';
  89. globalfunc::insertUserLog($parent, $logstr);
  90. $parent->response(array('response' => 'success', 'data' => $data_arr, 'message' => $this->page_data['success1']), 200);
  91. }
  92. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  93. /* /////////////////////////////// AREA MANAGER LIST //////////////////////////////////////////////// */
  94. private function getamlist($parent)
  95. {
  96. globalfunc::checkMethodType($parent, array('POST'));
  97. globalfunc::checkParamCount($parent, 1);
  98. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  99. projectfunc::authorizedRole($parent, array('3', '4', '5', '6'));
  100. //USER WISE CONDITION
  101. if ($parent->current_user_role == '3') //HO
  102. {
  103. $REQUEST_KEYS = array('zmemail' => 'string', 'rmemail' => 'string');
  104. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  105. } else if ($parent->current_user_role == '4') //ZM
  106. {
  107. $dcond = " and zm_email='" . $parent->current_user_data->emailid . "'";
  108. $REQUEST_KEYS = array('rmemail' => 'string');
  109. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  110. } else if ($parent->current_user_role == '5') //TRAINER
  111. {
  112. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  113. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  114. $dcond = (count($trainer_arr) > 0) ? " AND zone='" . $trainer_arr[0]->zone . "'" : ' AND id=0';
  115. $REQUEST_KEYS = array('rmemail' => 'string');
  116. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  117. } else if ($parent->current_user_role == '6') //RM
  118. {
  119. $dcond = " and rm_email='" . $parent->current_user_data->emailid . "'";
  120. }
  121. $zmemail = escape_str($parent->_request["zmemail"]);
  122. $dcond .= ($zmemail != 'all' && $zmemail != '') ? " AND zm_email='" . $zmemail . "'" : '';
  123. $rmemail = escape_str($parent->_request["rmemail"]);
  124. $dcond .= ($rmemail != 'all' && $rmemail != '') ? " AND rm_email='" . $rmemail . "'" : '';
  125. $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 ORDER BY am_name ASC";
  126. $data_arr = $parent->getQueryValue($query_str);
  127. //LOG
  128. $logstr = 'ENQUIRY AM LIST';
  129. globalfunc::insertUserLog($parent, $logstr);
  130. $parent->response(array('response' => 'success', 'data' => $data_arr, 'q' => $query_str, 'message' => $this->page_data['success1']), 200);
  131. }
  132. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  133. /* /////////////////////////////// DEALER MANAGER LIST //////////////////////////////////////////////// */
  134. private function getdealerlist($parent)
  135. {
  136. globalfunc::checkMethodType($parent, array('POST'));
  137. globalfunc::checkParamCount($parent, 1);
  138. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  139. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7'));
  140. //USER WISE CONDITION
  141. if ($parent->current_user_role == '3') //HO
  142. {
  143. $REQUEST_KEYS = array('zmemail' => 'string', 'rmemail' => 'string', 'amemail' => 'string');
  144. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  145. } else if ($parent->current_user_role == '4') //ZM
  146. {
  147. $dcond = " and zm_email='" . $parent->current_user_data->emailid . "'";
  148. $REQUEST_KEYS = array('rmemail' => 'string', 'amemail' => 'string');
  149. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  150. } else if ($parent->current_user_role == '5') //TRAINER
  151. {
  152. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  153. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  154. $dcond = (count($trainer_arr) > 0) ? " AND zone='" . $trainer_arr[0]->zone . "'" : ' AND id=0';
  155. $REQUEST_KEYS = array('rmemail' => 'string', 'amemail' => 'string');
  156. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  157. } else if ($parent->current_user_role == '6') //RM
  158. {
  159. $dcond = " and rm_email='" . $parent->current_user_data->emailid . "'";
  160. $REQUEST_KEYS = array('amemail' => 'string');
  161. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  162. } else if ($parent->current_user_role == '7') //AM
  163. {
  164. $dcond = " and am_email='" . $parent->current_user_data->emailid . "'";
  165. }
  166. $zmemail = escape_str($parent->_request["zmemail"]);
  167. $dcond .= ($zmemail != 'all' && $zmemail != '') ? " AND zm_email='" . $zmemail . "'" : '';
  168. $rmemail = escape_str($parent->_request["rmemail"]);
  169. $dcond .= ($rmemail != 'all' && $rmemail != '') ? " AND rm_email='" . $rmemail . "'" : '';
  170. $amemail = escape_str($parent->_request["amemail"]);
  171. $dcond .= ($amemail != 'all' && $amemail != '') ? " AND am_email='" . $amemail . "'" : '';
  172. $query_str = "SELECT dealer_name as name,dealer_code as value FROM " . DMS_DEALER . " WHERE status='1' AND is_deleted='0' " . $dcond . " ORDER BY dealer_name ASC ";
  173. $data_arr = $parent->getQueryValue($query_str);
  174. //LOG
  175. $logstr = 'ENQUIRY DEALER LIST';
  176. globalfunc::insertUserLog($parent, $logstr);
  177. $parent->response(array('response' => 'success', 'data' => $data_arr, 'message' => $this->page_data['success1']), 200);
  178. }
  179. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  180. /* /////////////////////////////// DSE LIST //////////////////////////////////////////////// */
  181. private function getdselist($parent)
  182. {
  183. globalfunc::checkMethodType($parent, array('POST'));
  184. globalfunc::checkParamCount($parent, 1);
  185. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  186. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7'));
  187. //USER WISE CONDITION
  188. if ($parent->current_user_role == '3') //HO
  189. {
  190. $REQUEST_KEYS = array('zmemail' => 'string', 'rmemail' => 'string', 'amemail' => 'string');
  191. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  192. } else if ($parent->current_user_role == '4') //ZM
  193. {
  194. $dcond = " and d.zm_email='" . $parent->current_user_data->emailid . "'";
  195. $REQUEST_KEYS = array('rmemail' => 'string', 'amemail' => 'string');
  196. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  197. } else if ($parent->current_user_role == '5') //TRAINER
  198. {
  199. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  200. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  201. $dcond = (count($trainer_arr) > 0) ? " AND d.zone='" . $trainer_arr[0]->zone . "'" : ' AND id=0';
  202. $REQUEST_KEYS = array('rmemail' => 'string', 'amemail' => 'string');
  203. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  204. } else if ($parent->current_user_role == '6') //RM
  205. {
  206. $dcond = " and d.rm_email='" . $parent->current_user_data->emailid . "'";
  207. $REQUEST_KEYS = array('amemail' => 'string');
  208. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  209. } else if ($parent->current_user_role == '7') //AM
  210. {
  211. $dcond = " and d.am_email='" . $parent->current_user_data->emailid . "'";
  212. }
  213. $zmemail = escape_str($parent->_request["zmemail"]);
  214. $dcond .= ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  215. $rmemail = escape_str($parent->_request["rmemail"]);
  216. $dcond .= ($rmemail != 'all' && $rmemail != '') ? " AND d.rm_email='" . $rmemail . "'" : '';
  217. $amemail = escape_str($parent->_request["amemail"]);
  218. $dcond .= ($amemail != 'all' && $amemail != '') ? " AND d.am_email='" . $amemail . "'" : '';
  219. $dealer_code = escape_str($parent->_request["dealer_code"]);
  220. $dcond .= ($dealer_code != 'all' && $dealer_code != '') ? " AND d.dealer_code='" . $dealer_code . "'" : '';
  221. $segment = escape_str($parent->_request["segment"]);
  222. $history = escape_str($parent->_request["history"]);
  223. $segment_cond = $user_cond = "";
  224. switch ($segment) {
  225. case '1':$user_cond .= " AND e.segment='1'";
  226. break;
  227. case '2':$user_cond .= " AND e.segment='2'";
  228. break;
  229. }
  230. $user_cond .= ($history == '1') ? " AND u.status='1' AND u.is_deleted=0" : " AND e.is_current='1'";
  231. $query_str = "SELECT e.smpin,e.fname,e.lname,e.mobile,CASE WHEN u.userid is NULL THEN '0' WHEN u.userid is NOT NULL AND u.status=1 THEN '1' ELSE '2' END as userstatus ,CASE WHEN u.userid is NULL THEN '3' WHEN u.userid is NOT NULL AND u.status=1 THEN '1' ELSE '2' END as userorder,COALESCE(u.profile_photo,'') as profile_photo FROM " . DMS_EMPLOYEE . " e JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code LEFT JOIN " . TABLE_USER . " u ON u.smpin=e.smpin WHERE e.status=1 " . $dcond . $segment_cond . $user_cond . " ORDER BY userorder ASC,e.fname ASC";
  232. $data_arr = $parent->getQueryValue($query_str);
  233. //LOG
  234. $logstr = 'ENQUIRY DSE LIST';
  235. globalfunc::insertUserLog($parent, $logstr);
  236. $parent->response(array('response' => 'success', 'data' => $data_arr, 'message' => $this->page_data['success1']), 200);
  237. }
  238. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  239. /* /////////////////////////////// DASHBOARD //////////////////////////////////////////////// */
  240. private function dashboard($parent)
  241. {
  242. globalfunc::checkMethodType($parent, array('POST'));
  243. globalfunc::checkParamCount($parent, 1);
  244. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  245. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7'));
  246. //USER CONDITION
  247. if ($parent->current_user_role == '3') //HO
  248. {
  249. //ALL INDIA
  250. } else if ($parent->current_user_role == '4') //ZM
  251. {
  252. $dcond = " and d.zm_email='" . $parent->current_user_data->emailid . "'";
  253. } else if ($parent->current_user_role == '5') //TRAINER
  254. {
  255. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  256. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  257. $dcond = (count($trainer_arr) > 0) ? " AND d.zone='" . $trainer_arr[0]->zone . "'" : ' AND id=0';
  258. } else if ($parent->current_user_role == '6') //RM
  259. {
  260. $dcond = " and d.rm_email='" . $parent->current_user_data->emailid . "'";
  261. } else if ($parent->current_user_role == '7') //AM
  262. {
  263. $dcond = " and d.am_email='" . $parent->current_user_data->emailid . "'";
  264. }
  265. $zmemail = escape_str($parent->_request["zmemail"]);
  266. $dcond .= ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  267. $rmemail = escape_str($parent->_request["rmemail"]);
  268. $dcond .= ($rmemail != 'all' && $rmemail != '') ? " AND d.rm_email='" . $rmemail . "'" : '';
  269. $amemail = escape_str($parent->_request["amemail"]);
  270. $dcond .= ($amemail != 'all' && $amemail != '') ? " AND d.am_email='" . $amemail . "'" : '';
  271. $dealer_code = escape_str($parent->_request["dealer_code"]);
  272. $dcond .= ($dealer_code != 'all' && $dealer_code != '') ? " AND d.dealer_code='" . $dealer_code . "'" : '';
  273. $smpin = escape_str($parent->_request["smpin"]);
  274. if ($smpin != '') //FOR DSE
  275. {
  276. $today_visit_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND DATE(newvechicledatatime)= '" . CUR_DATE . "' AND modeofcontact IN ('S','V') AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  277. //TESTRIDE
  278. $today_testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND DATE(newvechicledatatime)= '" . CUR_DATE . "' AND enquiry_stage='T' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  279. //CALL
  280. $today_call_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND DATE(newvechicledatatime)= '" . CUR_DATE . "' AND modeofcontact IN ('E','F','O','T') AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  281. //pending task last 10 days only
  282. $last_ten_date = date('Y-m-d', strtotime('-10 day', strtotime(NOW)));
  283. //PENDING ENQUIRY MASTER
  284. $pending_visit_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND newvechicledatatime<'" . CUR_DATE . " 00:00:00' AND newvechicledatatime>'" . $last_ten_date . " 00:00:00' AND modeofcontact IN ('S','V') AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  285. $pending_testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND newvechicledatatime<'" . CUR_DATE . " 00:00:00' AND newvechicledatatime>'" . $last_ten_date . " 00:00:00' AND enquiry_stage='T' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  286. $pending_call_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND newvechicledatatime<'" . CUR_DATE . " 00:00:00' AND newvechicledatatime>'" . $last_ten_date . " 00:00:00' AND modeofcontact IN ('E','F','O','T') AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  287. //TOMORROW ENQUIRY MASTER
  288. $tomorrow_date = date('Y-m-d', strtotime('+1 day', strtotime(NOW)));
  289. $tomorrow_visit_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND DATE(newvechicledatatime)= '" . $tomorrow_date . "' AND modeofcontact IN ('S','V') AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  290. //TESTRIDE
  291. $tomorrow_testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND DATE(newvechicledatatime)= '" . $tomorrow_date . "' AND enquiry_stage='T' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  292. //CALL
  293. $tomorrow_call_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND DATE(newvechicledatatime)= '" . $tomorrow_date . "' AND modeofcontact IN ('E','F','O','T') AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  294. } else {
  295. $join_table = " JOIN " . TABLE_USER . " u ON e.smpin=u.smpin ";
  296. $dcond .= " AND u.status='1' AND u.is_deleted = 0";
  297. //VISIT
  298. $today_visit_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " DATE(e.newvechicledatatime)= '" . CUR_DATE . "' AND e.modeofcontact IN ('S','V') AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  299. //TESTRIDE
  300. $today_testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " DATE(e.newvechicledatatime)= '" . CUR_DATE . "' AND enquiry_stage='T' AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  301. //CALL
  302. $today_call_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " DATE(e.newvechicledatatime)= '" . CUR_DATE . "' AND modeofcontact IN ('E','F','O','T') AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  303. //pending task last 10 days only
  304. $last_ten_date = date('Y-m-d', strtotime('-10 day', strtotime(NOW)));
  305. //PENDING ENQUIRY MASTER
  306. $pending_visit_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " e.newvechicledatatime<'" . CUR_DATE . " 00:00:00' AND e.newvechicledatatime>'" . $last_ten_date . " 00:00:00' AND e.modeofcontact IN ('S','V') AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  307. $pending_testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " newvechicledatatime<'" . CUR_DATE . " 00:00:00' AND newvechicledatatime>'" . $last_ten_date . " 00:00:00' AND enquiry_stage='T' AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  308. $pending_call_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " newvechicledatatime<'" . CUR_DATE . " 00:00:00' AND newvechicledatatime>'" . $last_ten_date . " 00:00:00' AND modeofcontact IN ('E','F','O','T') AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  309. //TOMORROW ENQUIRY MASTER
  310. //VISIT
  311. $tomorrow_visit_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " DATE(e.newvechicledatatime)= '" . CUR_DATE . "' AND e.modeofcontact IN ('S','V') AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  312. //TESTRIDE
  313. $tomorrow_testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " DATE(e.newvechicledatatime)= '" . CUR_DATE . "' AND enquiry_stage='T' AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  314. //CALL
  315. $tomorrow_call_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table, "COUNT(e.id) data_count", " DATE(e.newvechicledatatime)= '" . CUR_DATE . "' AND modeofcontact IN ('E','F','O','T') AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  316. }
  317. $today_visit = $today_visit_arr['result'][0]->data_count;
  318. $today_testride = $today_testride_arr['result'][0]->data_count;
  319. $today_call = $today_call_arr['result'][0]->data_count;
  320. $tomorrow_visit = $tomorrow_visit_arr['result'][0]->data_count;
  321. $tomorrow_testride = $tomorrow_testride_arr['result'][0]->data_count;
  322. $tomorrow_call = $tomorrow_call_arr['result'][0]->data_count;
  323. $pending_visit = $pending_visit_arr['result'][0]->data_count;
  324. $pending_testride = $pending_testride_arr['result'][0]->data_count;
  325. $pending_call = $pending_call_arr['result'][0]->data_count;
  326. $today = array('visit' => $today_visit, 'testride' => $today_testride, 'call' => $today_call);
  327. $pending = array('visit' => $pending_visit, 'testride' => $pending_testride, 'call' => $pending_call);
  328. $tomorrow = array('visit' => $tomorrow_visit, 'testride' => $tomorrow_testride, 'call' => $tomorrow_call);
  329. $data = array('today' => $today, 'pending' => $pending, 'tomorrow' => $tomorrow);
  330. //LOG
  331. $logstr = 'MANAGER ENQUIRY DASHBOARD';
  332. globalfunc::insertUserLog($parent, $logstr);
  333. $parent->response(array('response' => 'success', 'data' => $data, 'message' => $this->page_data['success1']), 200);
  334. }
  335. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  336. /* /////////////////////////////// DASHBOARD SALES //////////////////////////////////////////////// */
  337. private function enquirysales($parent)
  338. {
  339. //sales/2018/2
  340. globalfunc::checkMethodType($parent, array('POST'));
  341. globalfunc::checkParamCount($parent, 3);
  342. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  343. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7'));
  344. $year_data = escape_str($parent->params[1]);
  345. $last_data = escape_str($parent->params[2]);
  346. $last_data_arr = explode('?', $last_data);
  347. $month_data = escape_str(trim($last_data_arr[0]));
  348. $zmemailid = (isset($parent->_request["zmemail"]) && $parent->_request["zmemail"] != '') ? escape_str($parent->_request["zmemail"]) : 'all';
  349. $rmemailid = (isset($parent->_request["rmemail"]) && $parent->_request["rmemail"] != '') ? escape_str($parent->_request["rmemail"]) : 'all';
  350. $amemailid = (isset($parent->_request["amemail"]) && $parent->_request["amemail"] != '') ? escape_str($parent->_request["amemail"]) : 'all';
  351. //USER CONDITION
  352. if ($parent->current_user_role == '3') //HO
  353. {
  354. //ALL INDIA
  355. if ($amemailid != 'all') {
  356. $get_role = '7';
  357. $manageremail = $amemailid;
  358. } else if ($rmemailid != 'all') {
  359. $get_role = '6';
  360. $manageremail = $rmemailid;
  361. } else if ($zmemailid != 'all') {
  362. $get_role = '4';
  363. $manageremail = $zmemailid;
  364. } else {
  365. $get_role = '3';
  366. $manageremail = '';
  367. }
  368. } else if ($parent->current_user_role == '4') //ZM
  369. {
  370. if ($amemailid != 'all') {
  371. $get_role = '7';
  372. $manageremail = $amemailid;
  373. } else if ($rmemailid != 'all') {
  374. $get_role = '6';
  375. $manageremail = $rmemailid;
  376. } else {
  377. $get_role = '4';
  378. $manageremail = $parent->current_user_data->emailid;
  379. }
  380. $dcond = " and d.zm_email='" . $parent->current_user_data->emailid . "'";
  381. } else if ($parent->current_user_role == '5') //TRAINER
  382. {
  383. if ($amemailid != 'all') {
  384. $get_role = '7';
  385. $manageremail = $amemailid;
  386. } else if ($rmemailid != 'all') {
  387. $get_role = '6';
  388. $manageremail = $rmemailid;
  389. } else {
  390. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  391. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  392. $get_role = '5';
  393. $manageremail = $trainer_arr[0]->emailid;
  394. }
  395. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  396. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  397. $dcond = (count($trainer_arr) > 0) ? " AND d.zone='" . $trainer_arr[0]->zone . "'" : ' AND id=0';
  398. } else if ($parent->current_user_role == '6') //RM
  399. {
  400. //$vkvtest = escape_str($parent->_request["vkvtest"]);
  401. if ($amemailid != 'all') {
  402. $get_role = '7';
  403. $manageremail = $amemailid;
  404. } else if ($rmemailid != 'all') {
  405. $get_role = '6';
  406. $manageremail = $rmemailid;
  407. } else {
  408. $get_role = '6';
  409. $manageremail = $parent->current_user_data->emailid;
  410. }
  411. $dcond = " and d.rm_email='" . $parent->current_user_data->emailid . "'";
  412. } else if ($parent->current_user_role == '7') //AM
  413. {
  414. if ($amemailid != 'all') {
  415. $get_role = '7';
  416. $manageremail = $amemailid;
  417. } else {
  418. $get_role = '7';
  419. $manageremail = $parent->current_user_data->emailid;
  420. }
  421. $dcond = " and d.am_email='" . $parent->current_user_data->emailid . "'";
  422. }
  423. $zmemail = escape_str($parent->_request["zmemail"]);
  424. $dcond .= ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  425. $rmemail = escape_str($parent->_request["rmemail"]);
  426. $dcond .= ($rmemail != 'all' && $rmemail != '') ? " AND d.rm_email='" . $rmemail . "'" : '';
  427. $amemail = escape_str($parent->_request["amemail"]);
  428. $dcond .= ($amemail != 'all' && $amemail != '') ? " AND d.am_email='" . $amemail . "'" : '';
  429. $dealer_code = escape_str($parent->_request["dealer_code"]);
  430. $dcond .= ($dealer_code != 'all' && $dealer_code != '') ? " AND d.dealer_code='" . $dealer_code . "'" : '';
  431. $smpin = escape_str($parent->_request["smpin"]);
  432. if ($smpin != '') {
  433. //*****************SALES****************
  434. //TARGET
  435. $user_target = projectfunc::userSmpinSalesTarget($parent, $smpin, '', $year_data, $month_data);
  436. //ACHIEVED
  437. $user_achieved = projectfunc::userSmpinSalesAchieved($parent, $smpin, '', $year_data, $month_data);
  438. $sales = array('target' => $user_target, 'achieved' => $user_achieved, 'month' => date('M', strtotime('2018-' . $month_data . "-01")), 'year' => $year_data);
  439. //****************ENQUIRY****************
  440. $achieved_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND is_dms=1 AND is_deleted=0", "1");
  441. //TARGET
  442. //$enquiry_target = (string) ($user_target * 3); //SALES TARGET multiple by 3
  443. $emp_arr = $parent->selectQuery(DMS_EMPLOYEE, "segment", "smpin='" . $smpin . "'", "1");
  444. $segment = ($emp_arr['nr'] > 0) ? $emp_arr['result'][0]->segment : 0;
  445. switch ($segment) {
  446. case '1': //TARGET
  447. $enquiry_target = (string) ($user_target * 5); //SALES TARGET multiple by 5
  448. break;
  449. case '2': //TARGET
  450. $enquiry_target = (string) ($user_target * 3); //SALES TARGET multiple by 3
  451. break;
  452. default:
  453. $enquiry_target = (string) ($user_target * 3); //SALES TARGET multiple by 3
  454. break;
  455. }
  456. //ACHIEVED
  457. $enquiry_achieved = $achieved_arr['result'][0]->data_count;
  458. $enquiry = array('target' => $enquiry_target, 'achieved' => $enquiry_achieved, 'month' => date('M', strtotime('2018-' . $month_data . "-01")), 'year' => $year_data);
  459. //*****************STATUS
  460. $hot_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND status='H' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  461. $warm_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND status='W' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  462. $cold_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND status='P' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  463. $hot = $hot_arr['result'][0]->data_count;
  464. $warm = $warm_arr['result'][0]->data_count;
  465. $cold = $cold_arr['result'][0]->data_count;
  466. $status_arr = array("hot" => $hot, "warm" => $warm, "cold" => $cold);
  467. //*****************STAGE
  468. $testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND enquiry_stage='T' AND is_dms=1 AND is_deleted=0 ", "1");
  469. $booked_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND enquiry_stage='O' AND is_dms=1 AND is_deleted=0 ", "1");
  470. $invoiced_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND enquiry_stage IN('Z','P') AND is_dms=1 AND is_deleted=0 ", "1");
  471. $lost_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND status='L' AND is_dms=1 AND is_deleted=0 ", "1");
  472. $postponed_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND status='E' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V') ", "1");
  473. $delivered_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND enquiry_stage IN ('O','V') AND is_dms=1 AND is_deleted=0 ", "1");
  474. } else {
  475. //*****************SALES****************
  476. //TARGET
  477. //$user_target= projectfunc::userSmpinSalesTarget($parent,$smpin,'',$year_data,$month_data);
  478. $sales_arr = projectfunc::managersalesEnquiryDashboard($parent, $get_role, $year_data, $month_data, $manageremail); // BASED ON YEAR OR MONTH
  479. $user_target = $sales_arr['target'];
  480. $join_table = " JOIN " . TABLE_USER . " u ON e.smpin=u.smpin ";
  481. $dcond .= " AND u.status='1' AND u.is_deleted = 0";
  482. //ACHIEVED
  483. //$user_achieved= projectfunc::userSmpinSalesAchieved($parent,$smpin,'',$year_data,$month_data);
  484. $user_achieved = $sales_arr['achieved'];
  485. $sales = array('target' => $user_target, 'achieved' => $user_achieved, 'month' => date('M', strtotime('2018-' . $month_data . "-01")), 'year' => $year_data);
  486. //****************ENQUIRY****************
  487. $achieved_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.is_dms=1 AND e.is_deleted=0 AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  488. //TARGET
  489. $enqtarget_arr = projectfunc::managerEnquiryTarget($parent, $get_role, $year_data, $month_data, $manageremail); // BASED ON YEAR OR MONTH
  490. $enquiry_target = $enqtarget_arr['target'];
  491. //$enquiry_target = (string) ($user_target * 3); //SALES TARGET multiple by 3
  492. //ACHIEVED
  493. $enquiry_achieved = $achieved_arr['result'][0]->data_count;
  494. $enquiry = array('target' => $enquiry_target, 'achieved' => $enquiry_achieved, 'month' => date('M', strtotime('2018-' . $month_data . "-01")), 'year' => $year_data);
  495. //*****************STATUS
  496. $hot_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.status='H' AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  497. $warm_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.status='W' AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  498. $cold_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.status='P' AND e.is_dms=1 AND e.is_deleted=0 AND e.enquiry_stage NOT IN ('Z','O','P','V') AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  499. $hot = $hot_arr['result'][0]->data_count;
  500. $warm = $warm_arr['result'][0]->data_count;
  501. $cold = $cold_arr['result'][0]->data_count;
  502. $status_arr = array("hot" => $hot, "warm" => $warm, "cold" => $cold);
  503. //*****************STAGE
  504. $testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.enquiry_stage='T' AND e.is_dms=1 AND e.is_deleted=0 AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  505. $booked_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.enquiry_stage='O' AND e.is_dms=1 AND e.is_deleted=0 AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  506. $invoiced_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.enquiry_stage IN('Z','P') AND e.is_dms=1 AND e.is_deleted=0 ", "1");
  507. $lost_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.status='L' AND e.is_dms=1 AND e.is_deleted=0 AND p.status=1 AND p.is_current=1 " . $dcond, "1");
  508. $postponed_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.status='E' AND e.is_dms=1 AND e.is_deleted=0 AND p.status=1 AND p.is_current=1 AND e.enquiry_stage NOT IN ('Z','O','P','V') " . $dcond, "1");
  509. $delivered_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e JOIN " . DMS_EMPLOYEE . " p ON e.smpin=p.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=p.dealer_code " . $join_table . " ", "COUNT(e.id) data_count", " e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND e.enquiry_stage IN ('O','V') AND e.is_dms=1 AND e.is_deleted=0 " . $dcond, "1");
  510. }
  511. $testride = $testride_arr['result'][0]->data_count;
  512. $booked = $booked_arr['result'][0]->data_count;
  513. $invoiced = $invoiced_arr['result'][0]->data_count;
  514. $lost = $lost_arr['result'][0]->data_count;
  515. $postponed = $postponed_arr['result'][0]->data_count;
  516. $delivered = $delivered_arr['result'][0]->data_count;
  517. $stage_arr = array("testride" => $testride, 'booked' => $booked, 'invoiced' => $invoiced, 'lost' => $lost, 'postponed' => $postponed, 'delivered' => $delivered);
  518. $data = array('enquiry' => $enquiry, 'sales' => $sales, 'status' => $status_arr, 'stage' => $stage_arr);
  519. //LOG
  520. $logstr = 'MANAGER SALES DASHBOARD';
  521. globalfunc::insertUserLog($parent, $logstr);
  522. $parent->response(array('response' => 'success', 'data' => $data, 'message' => $this->page_data['success1']), 200);
  523. }
  524. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  525. /* /////////////////////////////// GET DSE DATA //////////////////////////////////////////////// */
  526. private function getdsedetails($parent, $smpin)
  527. {
  528. $data = $parent->selectQuery(DMS_EMPLOYEE, "*", "smpin='" . $smpin . "' AND status=1 AND is_current=1", "1");
  529. if (!$data['nr'] > 0) {
  530. $parent->response(array('response' => 'failed', 'message' => $this->page_data['error1']), 406);
  531. }
  532. return $data['result'][0];
  533. }
  534. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  535. /* /////////////////////////////// LIST DATA //////////////////////////////////////////////// */
  536. private function listdata($parent)
  537. {
  538. //sales/2018/2
  539. globalfunc::checkMethodType($parent, array('POST'));
  540. globalfunc::checkParamCount($parent, 2);
  541. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  542. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7'));
  543. $smpin_str = @explode('?', escape_str($parent->params[1]));
  544. $smpin = $smpin_str[0];
  545. $dse_details = $this->getdsedetails($parent, $smpin);
  546. //$smpin = $parent->current_user_data->smpin;
  547. try {
  548. //PAGINATION SETTINGS
  549. $limit_cond = '';
  550. $data_arr = array();
  551. $limit_str = globalfunc::setPageLimit($parent, $parent->params[1]);
  552. $limit_cond = ($limit_str) ? " LIMIT " . $limit_str : '';
  553. $REQUEST_KEYS = array('listtype' => 'string');
  554. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  555. $listtype = escape_str($parent->_request['listtype']);
  556. $cond = '';
  557. switch ($listtype) {
  558. case 'today':
  559. $todaytype = escape_str($parent->_request['todaytype']);
  560. if (strtolower($todaytype) == 'visit') {
  561. $cond = " AND e.modeofcontact IN ('S','V')";
  562. } else if (strtolower($todaytype) == 'test drive') {
  563. $cond = " AND e.enquiry_stage='T'";
  564. } else if (strtolower($todaytype) == 'call') {
  565. $cond = " AND e.modeofcontact IN ('E','F','O','T')";
  566. }
  567. $cond .= " AND enquiry_stage NOT IN ('Z','O','P','V') AND DATE(e.newvechicledatatime)= '" . CUR_DATE . "'";
  568. break;
  569. case 'tomorrow':
  570. $todaytype = escape_str($parent->_request['todaytype']);
  571. if (strtolower($todaytype) == 'visit') {
  572. $cond = " AND e.modeofcontact IN ('S','V')";
  573. } else if (strtolower($todaytype) == 'test drive') {
  574. $cond = " AND e.enquiry_stage='T'";
  575. } else if (strtolower($todaytype) == 'call') {
  576. $cond = " AND e.modeofcontact IN ('E','F','O','T')";
  577. }
  578. $tomorrow_date = date('Y-m-d', strtotime('+1 day', strtotime(NOW)));
  579. $cond .= " AND enquiry_stage NOT IN ('Z','O','P','V') AND DATE(e.newvechicledatatime)= '" . $tomorrow_date . "'";
  580. break;
  581. case 'date':
  582. $REQUEST_KEYS = array('date' => 'date|Y-m-d');
  583. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  584. $date = escape_str($parent->_request['date']);
  585. $todaytype = escape_str($parent->_request['todaytype']);
  586. if (strtolower($todaytype) == 'visit') {
  587. $cond = " AND e.modeofcontact IN ('S','V')";
  588. } else if (strtolower($todaytype) == 'test drive') {
  589. $cond = " AND e.enquiry_stage='T'";
  590. } else if (strtolower($todaytype) == 'call') {
  591. $cond = " AND e.modeofcontact IN ('E','F','O','T')";
  592. }
  593. $cond .= " AND enquiry_stage NOT IN ('Z','O','P','V') AND DATE(newvechicledatatime)= '" . $date . "'";
  594. break;
  595. case 'pending':
  596. $REQUEST_KEYS = array('pendingtype' => 'string');
  597. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  598. $pendingtype = escape_str($parent->_request['pendingtype']);
  599. if (strtolower($pendingtype) == 'visit') {
  600. $cond = " AND e.modeofcontact IN ('S','V')";
  601. } else if (strtolower($pendingtype) == 'test drive') {
  602. $cond = "AND e.enquiry_stage='T'";
  603. } else if (strtolower($pendingtype) == 'call') {
  604. $cond = " AND e.modeofcontact IN ('E','F','O','T')";
  605. }
  606. $last_ten_date = date('Y-m-d', strtotime('-10 day', strtotime(NOW)));
  607. $cond .= " AND enquiry_stage NOT IN ('Z','O','P','V') AND e.newvechicledatatime<'" . CUR_DATE . " 00:00:00' AND newvechicledatatime>'" . $last_ten_date . " 00:00:00'";
  608. //$cond.=(in_array(strtolower($pendingtype),array("visit","test drive","call")))?" AND enquiry_stage='".$pendingtype."'":$parent->response(array('response'=>'failed', 'message' => $this->page_data['error5']), 406);
  609. //$cond.= " AND enquiry_stage='".$pendingtype."'";
  610. //$cond.= " AND enquiry_stage='".$pendingtype."'";
  611. break;
  612. case 'hot':
  613. case 'warm':
  614. case 'cold':
  615. case 'testride':
  616. case 'booked':
  617. case 'invoiced':
  618. case 'lost':
  619. case 'postponed':
  620. $REQUEST_KEYS = array('month' => 'string', 'year' => 'string');
  621. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  622. $month_data = escape_str($parent->_request['month']);
  623. $year_data = escape_str($parent->_request['year']);
  624. if (in_array($listtype, array("hot", "warm", "cold", 'lost', 'postponed'))) {
  625. switch ($listtype) {
  626. case 'hot':$listtype_str = 'H';
  627. break;
  628. case 'warm':$listtype_str = 'W';
  629. break;
  630. case 'cold':$listtype_str = 'P';
  631. break;
  632. case 'lost':$listtype_str = 'L';
  633. break;
  634. case 'postponed':$listtype_str = 'E';
  635. break;
  636. }
  637. if ($listtype != 'lost') {
  638. $cond .= " AND enquiry_stage NOT IN ('Z','O','P','V')";
  639. }
  640. $cond .= " AND e.status='" . $listtype_str . "'";
  641. } else {
  642. // $str=($listtype=='testride')?"T":$listtype;
  643. switch ($listtype) {
  644. case 'testride':$str = 'T';
  645. break;
  646. case 'booked':$str = 'O';
  647. break;
  648. case 'invoiced':$str = 'Z';
  649. break;
  650. }
  651. $cond = " AND e.enquiry_stage='" . $str . "'";
  652. }
  653. $cond .= "AND e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%'";
  654. break;
  655. case 'model':
  656. $REQUEST_KEYS = array('month' => 'string', 'year' => 'number', 'model' => 'string');
  657. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  658. $month_data = escape_str($parent->_request['month']);
  659. $year_data = escape_str($parent->_request['year']);
  660. $model = escape_str($parent->_request['model']);
  661. switch ($model) {
  662. case 'INTRUDER':$cond .= " AND e.model1='GL'";
  663. break;
  664. case 'BURGMAN':$cond .= " AND e.model1='UB125'";
  665. break;
  666. case 'ACCESS 125':$cond .= " AND e.model1 IN ('AC','ACZ')";
  667. break;
  668. case 'GIXXER 250':$cond .= " AND e.model1 IN ('GSX','GSXSF') AND e.variant1 IN (SELECT variant_code FROM " . DMS_ENQUIRY_MODEL . " WHERE title_code IN ('GSX','GSXSF') AND variant LIKE '%250%')";
  669. break;
  670. case 'GIXXER':$cond .= " AND e.model1 IN ('GSX','GSXSF') AND e.variant1 IN (SELECT variant_code FROM " . DMS_ENQUIRY_MODEL . " WHERE title_code IN ('GSX','GSXSF') AND variant NOT LIKE '%250%')";
  671. break;
  672. case 'OTHERS':$cond .= " AND e.model1 NOT IN ('GSX','GSXSF','GL','UB125','AC','ACZ')";
  673. break;
  674. default:$parent->response(array('response' => 'failed', 'message' => $this->page_data['error6']), 406);
  675. }
  676. $cond .= " AND e.created_on LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%'";
  677. break;
  678. default:$parent->response(array('response' => 'failed', 'message' => $this->page_data['error6']), 406);
  679. break;
  680. }
  681. //SEARCH
  682. $model_cond = '';
  683. $search = escape_str($parent->_request['search']);
  684. if ($search != '') {
  685. $model = $parent->getQueryValue("SELECT title_code FROM " . DMS_ENQUIRY_MODEL . " WHERE title LIKE '%" . $search . "%'");
  686. if (count($model) > 0) {
  687. $model_arr = array_column($model, 'title_code');
  688. $model_quotes = array_map("quotes_array", $model_arr);
  689. $model_cond = (count($model_quotes) > 0) ? " OR e.model1 IN (" . @implode(',', $model_quotes) . ")" : '';
  690. }
  691. $cond = " AND (e.enq_num LIKE '%" . $search . "%' OR e.first_name LIKE '%" . $search . "%' OR e.mobile LIKE '%" . $search . "%' " . $model_cond . ") ";
  692. }
  693. //$pending_testride_arr=$parent->selectQuery(DMS_ENQUIRY_MASTER,"COUNT(id) data_count"," smpin='".$smpin."' AND newvechicledatatime<'".CUR_DATE." 00:00:00' AND enquiry_stage='T' AND is_dms=1 AND is_deleted=0 AND enquiry_stage NOT IN ('Z','O','P','V')","1");
  694. //echo "smpin='".$smpin."' ".$cond." ORDER BY newvechicledatatime ASC, id DESC ".$limit_cond; exit;
  695. $data_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " e ", "SQL_CALC_FOUND_ROWS e.*", "e.smpin='" . $smpin . "' AND e.is_dms=1 AND e.is_deleted=0 " . $cond . " ORDER BY e.newvechicledatatime ASC, id DESC " . $limit_cond, "");
  696. $total_arr = $parent->getQueryValue("SELECT FOUND_ROWS() as total_record");
  697. $total = (count($total_arr) > 0) ? $total_arr[0]->total_record : 0;
  698. //DATE TO STRING
  699. if ($data_arr['nr'] > 0) {
  700. foreach ($data_arr['result'] as $key => $res) {
  701. //MASK
  702. $data_arr['result'][$key]->mobile = maskenquiry($res->mobile);
  703. //LEFT JOIN ".DMS_ENQUIRY_MODEL." m ON m.title_code=e.model1
  704. //,m.title as model_name_str
  705. $model_arr = $parent->selectQuery(DMS_ENQUIRY_MODEL, "title as model_name,variant as variant_name,color as color_name", "title_code='" . $res->model1 . "' AND variant_code='" . $res->variant1 . "' AND color_code='" . $res->color1 . "'", "");
  706. $data_arr['result'][$key]->model_name = ($model_arr['nr'] > 0) ? $model_arr['result'][0]->model_name : $res->model1;
  707. $data_arr['result'][$key]->variant_name = ($model_arr['nr'] > 0) ? $model_arr['result'][0]->variant_name : $res->variant1;
  708. $data_arr['result'][$key]->color_name = ($model_arr['nr'] > 0) ? $model_arr['result'][0]->color_name : $res->color1;
  709. $data_arr['result'][$key]->enq_through = ($res->is_starapp == 1) ? "HYPER-M App" : "DMS";
  710. $data_arr['result'][$key]->newvechicledatatime_str = projectfunc::enqdatediff($parent, NOW, $res->newvechicledatatime);
  711. $checkdate = date('Y-m-d', strtotime($res->newvechicledatatime));
  712. //0-overdue,1-current day,2-future
  713. switch (true) {
  714. case (strtotime($checkdate) < strtotime(CUR_DATE)): $data_arr['result'][$key]->enq_date_type = 0;
  715. break;
  716. case (strtotime($checkdate) == strtotime(CUR_DATE)): $data_arr['result'][$key]->enq_date_type = 1;
  717. break;
  718. case (strtotime($checkdate) > strtotime(CUR_DATE)): $data_arr['result'][$key]->enq_date_type = 2;
  719. break;
  720. }
  721. ///PENDING ENQUIRY MASTER
  722. if (strtoupper($res->enquiry_stage) == 'T') {
  723. $data_arr['result'][$key]->icon_type = 1;
  724. } else if (strtoupper($res->modeofcontact) == 'S' || strtoupper($res->modeofcontact) == 'V') {
  725. $data_arr['result'][$key]->icon_type = 2;
  726. } else if (in_array(strtoupper($res->modeofcontact), array('E', 'F', 'O', 'T'))) {
  727. $data_arr['result'][$key]->icon_type = 3;
  728. } else {
  729. $data_arr['result'][$key]->icon_type = 0;
  730. }
  731. //visit,call,testdrive
  732. }
  733. }
  734. //LOG
  735. $logstr = 'MANAGER DSE ENQUIRY LIST';
  736. globalfunc::insertUserLog($parent, $logstr);
  737. $last_page = ($total) ? ceil($total / $parent->current_limit) - 1 : 0;
  738. $parent->response(array('response' => 'success', 'data' => $data_arr['result'], 'total' => $total, 'last_page' => $last_page, 'current_page' => $parent->current_page, 'message' => $this->page_data['success1']), 200);
  739. } catch (PDOException $e) {
  740. $parent->response(array('response' => 'failed', 'message' => $e->getMessage()), 500);
  741. } catch (Exception $e) {
  742. $parent->response(array('response' => 'failed', 'message' => $e->getMessage()), 500);
  743. }
  744. }
  745. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  746. /* /////////////////////////////// PLANNER LIST //////////////////////////////////////////////// */
  747. private function plannerlist($parent)
  748. {
  749. globalfunc::checkParamCount($parent, 2);
  750. globalfunc::checkMethodType($parent, array('POST'));
  751. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  752. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7'));
  753. $smpin = escape_str($parent->params[1]);
  754. $dse_details = $this->getdsedetails($parent, $smpin);
  755. $data = $parent->selectQuery(TABLE_USER, "userid", "smpin='" . $smpin . "' AND is_deleted='0' AND status='1' AND role>7 AND role<14", "1");
  756. $userid = ($data['nr'] > 0) ? $data['result'][0]->userid : '';
  757. //$userid = $parent->current_user_id;
  758. $type = escape_str($parent->_request['type']);
  759. $monthdata = array();
  760. $todaydata = array();
  761. $date_arr = array();
  762. $REQUEST_KEYS = array('type' => 'string');
  763. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  764. if ($type == 'month') {
  765. $REQUEST_KEYS = array('month' => 'number', 'year' => 'number');
  766. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  767. $month = escape_str($parent->_request['month']);
  768. $year = escape_str($parent->_request['year']);
  769. if (!globalfunc::isValidDateTimeString($year . '-' . $month . '-01', 'Y-m-d', 'Asia/Kolkata')) {
  770. $parent->response(array('response' => 'failed', 'message' => $this->page_data['error21']), 406);
  771. }
  772. $start_date = date('Y-m-d', strtotime($year . '-' . $month . '-01'));
  773. $end_date = date('Y-m-t', strtotime($year . '-' . $month . '-01'));
  774. $temp = $start_date;
  775. while (strtotime($temp) <= strtotime($end_date)) {
  776. $date_str = @explode('-', $temp);
  777. $value = $date_str[2];
  778. $monthdata[$value] = array('date' => $temp, 'data' => array());
  779. $temp = date('Y-m-d', strtotime('+ 1 day', strtotime($temp)));
  780. }
  781. $get_list_arr = $parent->selectQuery(TABLE_ENQUIRYPLANNER, "*,DATE_FORMAT(plan_date, '%d-%m-%Y')plandate,DATE_FORMAT(plan_fromtime, '%H:%i') fromtime,DATE_FORMAT(plan_totime, '%H:%i') totime", " is_deleted='0' AND userid='" . $userid . "' AND plan_date>='" . $start_date . "' AND plan_date<='" . $end_date . "' ORDER BY plan_fromtime ASC", "");
  782. if ($get_list_arr['nr'] > 0) {
  783. foreach ($get_list_arr['result'] as $res) {
  784. $value = date('d', strtotime($res->plan_date));
  785. $monthdata[$value]['data'][] = $res;
  786. }
  787. }
  788. } else if ($type == 'today') {
  789. $start_date = CUR_DATE;
  790. $end_date = CUR_DATE;
  791. $get_list_arr = $parent->selectQuery(TABLE_ENQUIRYPLANNER, "*,DATE_FORMAT(plan_date, '%d-%m-%Y')plandate,DATE_FORMAT(plan_fromtime, '%H:%i') fromtime,DATE_FORMAT(plan_totime, '%H:%i') totime", " is_deleted='0' AND userid='" . $userid . "' AND plan_date>='" . $start_date . "' AND plan_date<='" . $end_date . "' ORDER BY plan_fromtime ASC", "");
  792. $todaydata = ($get_list_arr['nr'] > 0) ? $get_list_arr['result'] : array();
  793. $monthdata = new stdClass();
  794. } else if ($type == 'date') {
  795. $REQUEST_KEYS = array('date' => 'date|Y-m-d');
  796. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  797. $date = escape_str($parent->_request['date']);
  798. $start_date = $date;
  799. $end_date = $date;
  800. $get_list_arr = $parent->selectQuery(TABLE_ENQUIRYPLANNER, "*,DATE_FORMAT(plan_date, '%d-%m-%Y')plandate,DATE_FORMAT(plan_fromtime, '%H:%i') fromtime,DATE_FORMAT(plan_totime, '%H:%i') totime", " is_deleted='0' AND userid='" . $userid . "' AND plan_date>='" . $start_date . "' AND plan_date<='" . $end_date . "' ORDER BY plan_fromtime ASC", "");
  801. $date_arr = ($get_list_arr['nr'] > 0) ? $get_list_arr['result'] : array();
  802. } else {
  803. $parent->response(array('response' => 'failed', 'message' => "Invalid type format"), 406);
  804. }
  805. $data = array('month' => $monthdata, 'today' => $todaydata, 'date' => $date_arr);
  806. //LOG
  807. $logstr = 'PLANNER LIST';
  808. globalfunc::insertUserLog($parent, $logstr, $id);
  809. $parent->response(array('response' => 'success', 'data' => $data, 'message' => $this->page_data['success1']), 200);
  810. }
  811. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  812. }