superedit-WYNIKI_ANKIETY_FUNC.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. if (!defined('DS')) define('DS', DIRECTORY_SEPARATOR);
  3. if (!defined('APP_PATH_ROOT')) define('APP_PATH_ROOT', dirname(__FILE__));
  4. if (!defined('APP_PATH_WWW')) define('APP_PATH_WWW', dirname(__FILE__));
  5. if (!defined('APP_PATH_CONFIG')) define('APP_PATH_CONFIG', APP_PATH_ROOT . DS . 'config');
  6. function WYNIKI_ANKIETY_FUNC() {
  7. require_once APP_PATH_ROOT . DS . 'se-lib' . DS . 'Lib.php';
  8. Lib::loadClass('V');
  9. Lib::loadClass('User');
  10. Lib::loadClass('Config');
  11. Lib::loadClass('DB');
  12. SEF('MENU');
  13. MENU();
  14. echo '<h1>' . "Wyniki ankiet" . '</h1>';
  15. $task = V::get('task', '', $_GET);
  16. $controller = new WynikiAnkiety();
  17. $controller->run($task);
  18. }
  19. class WynikiAnkiety {
  20. var $allowed_monsths = array();
  21. var $month = null;
  22. var $user = null;
  23. function __construct() {
  24. $cur_y = date('Y');
  25. $cur_m = date('n');
  26. while ($cur_m > 0) {
  27. $this->allowed_monsths []= sprintf('%d-%02d', $cur_y, $cur_m);
  28. $cur_m--;
  29. }
  30. for ($i = 1; $i <= 12; $i++) {
  31. $this->allowed_monsths []= sprintf('%4d-%02d', $cur_y - 1, $i);
  32. }
  33. $this->month = V::get('month', '', $_GET);
  34. if (!in_array($this->month, $this->allowed_monsths)) {
  35. $this->month = '';
  36. }
  37. $this->user = V::get('user', '', $_GET);
  38. }
  39. function run($task) {
  40. $this->task_default();
  41. if ($task != '') {
  42. $task_fun = 'task_' . $task;
  43. if (method_exists($this, $task_fun)) {
  44. $this->$task_fun();
  45. } else {
  46. echo '<p>' . "Error: wrong task. " . '<a href="' . "?MENU_INIT=WYNIKI_ANKIETY_FUNC" . '">' . "WYNIKI_ANKIETY_FUNC" . '</a>' . '</p>';
  47. }
  48. }
  49. }
  50. function task_default() {
  51. echo '<form action="" method="GET">';
  52. echo '<input type="hidden" name="MENU_INIT" value="WYNIKI_ANKIETY_FUNC" />';
  53. echo "Miesiąc: ";
  54. echo '<select name="month">';
  55. echo '<option>' . " [ Wybierz ] " . '</option>';
  56. foreach ($this->allowed_monsths as $v_month) {
  57. $sel = (!empty($this->month) && $this->month == $v_month)? ' selected="selected"' : '';
  58. echo '<option value="' . $v_month . '"' . $sel . '>' . $v_month . '</option>';
  59. }
  60. echo '</select>';
  61. echo ' ';
  62. echo '<input type="submit" value="' . "Wybierz" . '" />';
  63. echo '</form>';
  64. if (!empty($this->month)) {
  65. $stats = $this->get_stats_by_month($this->month);
  66. if (empty($stats)) {
  67. echo '<p>' . "Brak danych" . '</p>';
  68. } else {
  69. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl-view" style="margin:10px 0;">';
  70. echo '<tr>';
  71. echo '<th>' . "T_WORKPOINTS_USER" . '</th>';
  72. echo '<th>' . "ilość" . '</th>';
  73. echo '</tr>';
  74. foreach ($stats as $v_stat) {
  75. echo '<tr>';
  76. echo '<td>';
  77. if (!empty($v_stat->T_WORKPOINTS_USER)) {
  78. echo '<a href="' . "?MENU_INIT=WYNIKI_ANKIETY_FUNC&month=" . $this->month . "&user=" . $v_stat->T_WORKPOINTS_USER . '">' . $v_stat->T_WORKPOINTS_USER . '</a>';
  79. }
  80. echo '</td>';
  81. echo '<td>' . $v_stat->cnt . '</td>';
  82. echo '</tr>';
  83. }
  84. echo '</table>';
  85. }
  86. if (!empty($this->user)) {
  87. $this->show_user();
  88. }
  89. }
  90. }
  91. function get_stats_by_month($month) {
  92. $ret = array();
  93. $db = DB::getDB();
  94. $sql = "SELECT COUNT( * ) AS `cnt`, `T_WORKPOINTS_USER`
  95. -- , GROUP_CONCAT(DISTINCT `A_RECORD_UPDATE_AUTHOR`), GROUP_CONCAT(DISTINCT `T_WORKPOINTS_DATE`)
  96. FROM `USERS2_MARKETING_HIST`
  97. WHERE `T_WORKPOINTS_DATE` LIKE '{$month}-%' AND `T_WORKPOINTS_USER`!='N/S;' AND `T_WORKPOINTS_DATE`!='N/S;'
  98. GROUP BY `T_WORKPOINTS_USER`
  99. ORDER BY `cnt` DESC
  100. ";
  101. $res = $db->query($sql);
  102. while ($r = $db->fetch($res)) {
  103. $ret []= $r;
  104. }
  105. return $ret;
  106. }
  107. function get_user_badania($user, $month) {
  108. $ret = array();
  109. $db = DB::getDB();
  110. $sql = "SELECT h.*
  111. , (select S_ADDRESS_STREET from `USERS2_MARKETING` as m where m.`ID`=h.`ID_USERS2`) as S_ADDRESS_STREET
  112. FROM `USERS2_MARKETING_HIST` as h
  113. WHERE h.`T_WORKPOINTS_DATE` LIKE '{$month}-%' AND h.`T_WORKPOINTS_USER`='{$user}' AND h.`T_WORKPOINTS_DATE`!='N/S;'
  114. order by h.`T_WORKPOINTS_DATE` DESC
  115. ";
  116. $res = $db->query($sql);
  117. while ($r = $db->fetch($res)) {
  118. $ret []= $r;
  119. }
  120. return $ret;
  121. }
  122. function get_badania_cols() {
  123. $cols = array();
  124. $cols []= 'T_WORKPOINTS_USER';
  125. $cols []= 'T_WORKPOINTS_DATE';
  126. //$cols []= 'T_WORKPOINTS_TYPE';
  127. $cols []= 'I_BAD_DATE';
  128. $cols []= 'I_OPER';
  129. $cols []= 'I_OPER_ZAD';
  130. $cols []= 'I_OPER_FIN';
  131. $cols []= 'I_OPER_ZAINT';
  132. $cols []= 'S_OTHER_INFO';
  133. $cols []= 'T_BAD_DATE';
  134. $cols []= 'T_OPER';
  135. $cols []= 'T_OPER_ZAD';
  136. $cols []= 'T_OPER_FIN';
  137. $cols []= 'T_OPER_ZAINT';
  138. $cols []= 'TV_BAD_DATE';
  139. $cols []= 'TV_OPER';
  140. $cols []= 'TV_OPER_ZAD';
  141. $cols []= 'TV_OPER_FIN';
  142. $cols []= 'TV_OPER_ZAINT';
  143. $cols []= 'P_NAME';
  144. $cols []= 'P_PHONE';
  145. $cols []= 'P_FLOOR_CONTROL';
  146. return $cols;
  147. }
  148. function show_user() {
  149. if (!empty($this->month) && !empty($this->user)) {
  150. $badania = $this->get_user_badania($this->user, $this->month);
  151. if (empty($badania)) {
  152. echo '<p>' . "Brak danych" . '</p>';
  153. } else {
  154. $cols = $this->get_badania_cols();
  155. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl-view" style="margin:10px 0;">';
  156. echo '<thead>';
  157. echo '<tr>';
  158. echo '<td>' . "ID" . '</td>';
  159. echo '<td>' . "S_ADDRESS_STREET" . '</td>';
  160. foreach ($cols as $v_col) {
  161. echo '<td>' . $v_col . '</td>';
  162. }
  163. echo '<td>' . "Ilość zmian" . '</td>';
  164. echo '</tr>';
  165. echo '</thead>';
  166. echo '<tbody>';
  167. $t = 0;
  168. foreach ($badania as $v_badanie) {
  169. echo '<tr class="row-'.($t = 1 - $t).'">';
  170. echo '<td>' . $v_badanie->ID_USERS2 . '</td>';
  171. echo '<td>' . $v_badanie->S_ADDRESS_STREET . '</td>';
  172. $zmian = 0;
  173. foreach ($cols as $v_col) {
  174. $val = $v_badanie->$v_col;
  175. if ($val == 'N/S;') {
  176. $val = '';
  177. }
  178. echo '<td>' . $val . '</td>';
  179. if (!empty($val)) {
  180. $zmian++;
  181. }
  182. }
  183. echo '<td>' . ($zmian - 2) . '</td>';// - pola T_WORKPOINTS_USER, T_WORKPOINTS_DATE
  184. echo '</tr>';
  185. }
  186. echo '</tbody>';
  187. echo '</table>';
  188. }
  189. }
  190. }
  191. }