PageRenderTime 27ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/app/billing/requests.php

https://gitlab.com/grimkirill/mb-base
PHP | 297 lines | 242 code | 52 blank | 3 comment | 35 complexity | f8776d74766b3a8f0a9a1aacd00036d7 MD5 | raw file
  1. <?php
  2. class requests extends View_Page_Controller {
  3. public $title = 'Просмотр абонента';
  4. public $category = 'billing';
  5. function index()
  6. {
  7. if (!ACL::has_perm(ACL::acl_billing_request_roll )) { $this->AddContent(ACL::deny()); return ; }
  8. $this->AddContent(View_Element::Link('Добавить заявку', CLASSPATH.'addnew'));
  9. $this->AddContent(View_Element::Space(3).'|'.View_Element::Space(3));
  10. $form = new View_Form(array('method' => 'get'));
  11. $form->add('Поиск', array(
  12. new view_form_select_request_servicer('servicer', '', array('as_filter' => TRUE)),View_Element::Space(2),
  13. new view_form_select_request_type('type', '', array('as_filter' => TRUE)),View_Element::Space(2),'C ',
  14. new View_Form_Date('date_start', date('Y-m-d')), ' ПО ',
  15. new View_Form_Date('date_stop', date('Y-m-d')),View_Element::Space(2),
  16. new View_Form_Select('done', '', array('options' => array(0 => '--=--', 1 => 'Выполнено', 2 => 'Не выполнено', 3 => 'Отменена')) ),
  17. new View_Form_Checkbox('num','', array('caption' => '№'))
  18. ));
  19. if ($form->get_values())
  20. {
  21. $this->AddContent(View_Element::Link('Сегодня', CLASSPATH.'?servicer='.$form->return_values['servicer'].'&type=0&date_start='.date('d-m-Y').'&date_stop='.date('d-m-Y').'&done='.$form->return_values['done'].'&form_submit=Принять'));
  22. $this->AddContent(View_Element::Space(2).'|'.View_Element::Space(2));
  23. $tommorow = date('d-m-Y', mktime(0,0,0,date("m"),date("d")+1,date("Y")));
  24. $this->AddContent(View_Element::Link('Завтра', CLASSPATH.'?servicer='.$form->return_values['servicer'].'&type=0&date_start='.$tommorow.'&date_stop='.$tommorow.'&done='.$form->return_values['done'].'&form_submit=Принять'));
  25. $this->AddContent($form);
  26. $show_date = TRUE;
  27. $show_servicer = TRUE;
  28. $sql = "SELECT * FROM `requests` WHERE `date` >= '".$form->return_values['date_start']."' AND `date` <= '".$form->return_values['date_stop']."' ";
  29. if ($form->return_values['date_start'] == $form->return_values['date_stop'])
  30. {
  31. $show_date = FALSE;
  32. }
  33. if ($form->return_values['servicer'])
  34. {
  35. $sql .= ' AND servicer ='.$form->return_values['servicer'];
  36. $show_servicer = FALSE;
  37. }
  38. if ($form->return_values['type'])
  39. {
  40. $sql .= ' AND type ='.$form->return_values['type'];
  41. }
  42. if ($form->return_values['done'])
  43. {
  44. if ($form->return_values['done'] == 1)
  45. {
  46. $sql .= ' AND done = 1';
  47. }
  48. if ($form->return_values['done'] == 2)
  49. {
  50. $sql .= ' AND done = 0';
  51. }
  52. if ($form->return_values['done'] == 3)
  53. {
  54. $sql .= ' AND done = 2';
  55. }
  56. }
  57. if (!$show_date && !$show_servicer)
  58. {
  59. $this->AddContent(View_Element::Link('HTML', CONTROLLER_PATH.'requestprint/printhtml/'.$form->return_values['servicer'].'/'.$form->return_values['date_start'], TRUE ));
  60. $this->AddContent(View_Element::Space(2) );
  61. $this->AddContent(View_Element::Link('PDF', CONTROLLER_PATH.'requestprint/printpdf/'.$form->return_values['servicer'].'/'.$form->return_values['date_start'], TRUE ));
  62. }
  63. $this->showlist($sql, $show_date, $show_servicer, $form->return_values['num']);
  64. }
  65. else
  66. {
  67. $tommorow = date('d-m-Y', mktime(0,0,0,date("m"),date("d")+1,date("Y")));
  68. $this->AddContent(View_Element::Link('Завтра', CLASSPATH.'?servicer=0&type=0&date_start='.$tommorow.'&date_stop='.$tommorow.'&done=0&form_submit=Принять'));
  69. $this->AddContent($form);
  70. $sql = "SELECT * FROM `requests` WHERE `date` >= '".date('Y-m-d')."' AND `date` <= '".date('Y-m-d')."' ";
  71. $this->showlist($sql);
  72. }
  73. }
  74. function showlist($sql, $show_date = TRUE, $show_servicer = TRUE, $num = FALSE)
  75. {
  76. global $db;
  77. $tmp_res = $db->Query($sql.' ORDER BY `date` DESC');
  78. $tb_data = array();
  79. while ($tmp_res->get_next_row_object())
  80. {
  81. $tmp_req = new request($tmp_res->last_row->id);
  82. $tb_data[] = $tmp_req->get_data_array();
  83. }
  84. $table = new View_Table(array('caption' => '',
  85. 'edit_link' => CLASSPATH.'edit/'));
  86. if ($num)
  87. {
  88. $table->AddHead('num', '', View_Table::column_type_autonum);
  89. }
  90. $table->AddHead('gid_link', 'Абонент');
  91. $table->AddHead('time', 'Время', FALSE, '90px;');
  92. $table->AddHead('type', 'Тип');
  93. if ($show_servicer)
  94. {
  95. $table->AddHead('servicer', 'Исполнитель');
  96. }
  97. if ($show_date)
  98. {
  99. $table->AddHead('date', 'Дата');
  100. }
  101. $table->AddHead('comment', 'комментарий');
  102. $table->AddHead('done_print', 'Выполнено');
  103. $table->AddHead('id', '', View_Table::column_type_edit);
  104. $table->AddData($tb_data);
  105. $this->AddContent($table);
  106. }
  107. function addnew()
  108. {
  109. global $db, $auth_user;
  110. $this->title = 'Добавление заявки';
  111. $form_request = new View_Form(array('cancel' => CLASSPATH));
  112. $form_request->add('', array(
  113. 'Адрес: ',
  114. new View_Form_Text('gid_data', '', array('width' => '40em', 'caption' => 'Адрес', 'validators'=>array( View_Form_Element::validator_require => 1)))
  115. ));
  116. $form_request->add('', array(
  117. new view_form_select_request_servicer('servicer', ''),View_Element::Space(2),
  118. new view_form_select_request_type('type', ''),View_Element::Space(2),
  119. new View_Form_Date('date', date('Y-m-d')), ' C ',
  120. new View_Form_Select('time_start', '', array('options' => request_data::timeList()) ), ' продолжительность: ',
  121. new View_Form_Select('time_count', '', array('options' => request_data::timeCount()) )
  122. ));
  123. $form_request->add('Описание', array(
  124. new View_Form_Textarea('comment', '')
  125. ));
  126. $form_request->add('', array(
  127. 'Телефон: ',
  128. new View_Form_Text('phone', '', array('width' => '18em'))
  129. ));
  130. if ($form_request->get_values())
  131. {
  132. $db->InsertData('requests', $form_request->return_values+array('gid' => 0, 'user' => $auth_user->id));
  133. if ($form_request->return_values['date'] == date('Y-m-d'))
  134. {
  135. $tmp_req = new request($db->GetInsertId());
  136. $tmp_req->do_trigger();
  137. }
  138. header('Location: '.WEBPATH.'billing/requests');
  139. }
  140. else
  141. {
  142. $this->AddContent($form_request);
  143. $this->AddContent('<div id="ajax_request_list"></div><script type="text/javascript">bind_request_list_load(); request_list_load();</script>');
  144. }
  145. }
  146. function edit($id)
  147. {
  148. global $db, $auth_user;
  149. if ($data = $db->Query('SELECT * FROM `requests` WHERE id ='.$id)->get_next_row_object())
  150. {
  151. $request = new request($id);
  152. $properties = new View_Properties();
  153. $properties->AddTitle('Параметры заявки');
  154. $properties->AddProperty('Адрес', $request->get_gid_link());
  155. $properties->AddProperty('Дата', $request->data->date);
  156. $properties->AddProperty('Время', $request->get_time_print());
  157. $properties->AddProperty('Тип', $request->get_type());
  158. $properties->AddProperty('Исполнитель', $request->get_serviser());
  159. $properties->AddProperty('Комментарий', $request->data->comment);
  160. $properties->AddProperty('Взята', $request->data->dt.' | '.User_Auth::get_loginid($request->data->user));
  161. //$this->AddContent($properties);
  162. $this->AddContent(View_Element::PanelStandart($properties.View_Element::Button('Редактировать', CLASSPATH.'realedit/'.$id)));
  163. //$this->AddContent();
  164. $form_comment = new View_Form(array('caption' => 'Добавить заметку', 'border' => TRUE));
  165. $form_comment->add('', array(
  166. new View_Form_Textarea('comment', '', array('caption' => 'Адрес', 'validators'=>array( View_Form_Element::validator_require => 1) ))
  167. ));
  168. if ($form_comment->get_values())
  169. {
  170. if ($form_comment->return_values['comment'])
  171. {
  172. $db->InsertData('request_comments', array('text'=>$form_comment->return_values['comment'], 'gid' => $id, 'user' => $auth_user->id));
  173. }
  174. }
  175. $res = $db->Query('SELECT * FROM request_comments WHERE gid ='.$id);
  176. while ($item = $res->get_next_row_object())
  177. {
  178. $this->AddContent(View_Element::PanelInfo($item->text.' | '.$item->dt.' | '.User_Auth::get_loginid($item->user)));
  179. }
  180. $this->AddContent($form_comment);
  181. }
  182. }
  183. function realedit($id)
  184. {
  185. if (!ACL::has_perm(ACL::acl_billing_request_edit )) { $this->AddContent(ACL::deny()); return ; }
  186. global $db;
  187. if ($data = $db->Query('SELECT * FROM `requests` WHERE id ='.$id)->get_next_row_object())
  188. {
  189. $form = new View_Form(array('cancel' => CLASSPATH.'edit/'.$id));
  190. if ($data->gid == 0)
  191. {
  192. $form->add('', array(
  193. 'Адрес: ',
  194. new View_Form_Text('gid_data', $data->gid_data, array('width' => '40em', 'caption' => 'Адрес', 'validators'=>array( View_Form_Element::validator_require => 1) ) )
  195. ));
  196. }
  197. $form->add('', array(
  198. new view_form_select_request_servicer('servicer', $data->servicer),View_Element::Space(2),
  199. new view_form_select_request_type('type', $data->type),View_Element::Space(2),
  200. new View_Form_Date('date', $data->date), ' C ',
  201. new View_Form_Select('time_start', $data->time_start, array('options' => request_data::timeList()) ), ' продолжительность: ',
  202. new View_Form_Select('time_count', $data->time_count, array('options' => request_data::timeCount()) )
  203. ));
  204. $form->add('Описание', array(
  205. new View_Form_Textarea('comment', $data->comment)
  206. ));
  207. $form->add('', array(
  208. 'Телефон: ',
  209. new View_Form_Text('phone', $data->phone, array('width' => '18em'))
  210. ));
  211. $form->add('', array(
  212. new View_Form_Checkbox('delete', '', array('caption' => 'Удалить'))
  213. ));
  214. if ($form->get_values())
  215. {
  216. if ($form->return_values['delete'])
  217. {
  218. $db->DeleteData('requests', array('id' => $id));
  219. }
  220. else
  221. {
  222. unset($form->return_values['delete']);
  223. $db->UpdateData('requests', $form->return_values, array('id' => $id));
  224. if ($db->GetAffectedRows() > 0)
  225. {
  226. $this->AddContent(View_Element::PanelSuccess('Изменения сохранены.') );
  227. }
  228. }
  229. if ($data->gid)
  230. {
  231. header('Location: '.WEBPATH.'billing/looking/show/'.$data->gid);
  232. }
  233. else
  234. {
  235. header('Location: '.WEBPATH.'billing/requests');
  236. }
  237. //$this->index();
  238. }
  239. else
  240. {
  241. $this->AddContent($form);
  242. }
  243. }
  244. }
  245. }