PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/app/Http/Controllers/TableController.php

https://bitbucket.org/designokno/soap
PHP | 393 lines | 289 code | 66 blank | 38 comment | 19 complexity | 2c6c5ae008ca9812d465e7ac605bc523 MD5 | raw file
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Client1C;
  4. use Illuminate\Http\Request;
  5. class TableController extends Controller
  6. {
  7. const ZAYAVKA_KEY = 'Заявка';
  8. const ZAMER_KEY = 'Замер';
  9. /**
  10. * @var \Illuminate\Redis\RedisManager
  11. */
  12. private $_redis = null;
  13. /**
  14. * @var Client1C
  15. */
  16. private $_soap = null;
  17. public function __construct()
  18. {
  19. parent::__construct();
  20. $this->_soap = $this->_app['soap'];
  21. $this->_redis = $this->_app['redis'];
  22. }
  23. public function indexAction(Request $request)
  24. {
  25. $user = $request->user();
  26. $date = $request->input('date');
  27. $parsed_date = date_parse_from_format("Y.m.d", $date);
  28. if (!$parsed_date['year']) {
  29. $date = date("Y.m.d");
  30. } else {
  31. $date = date("Y.m.d", mktime(0, 0, 0, $parsed_date['month'], $parsed_date['day'], $parsed_date['year']));
  32. }
  33. $template = "table/index";
  34. if ($user->hasRole('manager')) {
  35. $template = "table/index_manager";
  36. $result = $this->_soap->gettablemanager(['sessionid' => $user->session_id, 'dt' => $date]);
  37. $table = json_decode($result->return, true);
  38. } else {
  39. $template = "table/index";
  40. $result = $this->_soap->gettable(['sessionid' => $user->session_id, 'dt' => $date]);
  41. $table = json_decode($result->return, true);
  42. }
  43. $table_keys = [];
  44. if ($table && is_array($table)) {
  45. foreach ($table as $row) {
  46. $table_keys = array_merge(array_keys($row), $table_keys);
  47. }
  48. } else {
  49. $table = [];
  50. }
  51. $table_keys = array_unique($table_keys);
  52. $params = [
  53. 'table_keys' => $table_keys,
  54. 'table_rows' => $table,
  55. 'date' => $date
  56. ];
  57. return $this->render($template, $params);
  58. }
  59. public function detailAction(Request $request, $zamerId)
  60. {
  61. $user = $request->user();
  62. $template = "table/detail";
  63. if ($user->hasRole('manager')) {
  64. $template = "table/detail_manager";
  65. $result = $this->_soap->getdetailedmanager(['sessionid' => $user->session_id, 'itemnum' => $zamerId]);
  66. } else {
  67. $template = "table/detail";
  68. $result = $this->_soap->getzamer(['sessionid' => $user->session_id, 'zamernum' => $zamerId]);
  69. }
  70. $detail = json_decode($result->return, true);
  71. $detail = $detail ? array_shift($detail) : [];
  72. $state = null;
  73. if (isset($detail['Состояние'])) {
  74. $state = $detail['Состояние'];
  75. unset($detail['Состояние']);
  76. }
  77. return $this->render($template, [
  78. 'detail' => $detail,
  79. 'state' => $state,
  80. 'zayavNum' => $request->get('zayavNum'),
  81. 'zamerId' => $zamerId,
  82. 'date' => $request->get('date')
  83. ]);
  84. }
  85. public function filesAction(Request $request, $zayavNum)
  86. {
  87. $user = $request->user();
  88. $result = $this->_soap->getfilelist(['sessionid' => $user->session_id, 'zayavnum' => $zayavNum]);
  89. $files = json_decode($result->return, true);
  90. $fileTypeList = $this->_soap->getFileTypeList();
  91. if ($user->hasRole('manager')) {
  92. $result = $this->_soap->getdetailedmanager(['sessionid' => $user->session_id, 'itemnum' => $request->get('zamerId')]);
  93. } else {
  94. $result = $this->_soap->getzamer(['sessionid' => $user->session_id, 'zamernum' => $request->get('zamerId')]);
  95. }
  96. $detail = json_decode($result->return, true);
  97. $detail = $detail ? array_shift($detail) : [];
  98. $state = null;
  99. if (isset($detail['Состояние'])) {
  100. $state = $detail['Состояние'];
  101. unset($detail['Состояние']);
  102. }
  103. return $this->render('table/files', [
  104. 'files' => is_array($files) ? $files : [],
  105. 'fileTypeList' => $fileTypeList ? $fileTypeList : [],
  106. 'zayavNum' => $zayavNum,
  107. 'zamerId' => $request->get('zamerId'),
  108. 'date' => $request->get('date'),
  109. 'state' => $state,
  110. ]);
  111. }
  112. public function downloadAction(Request $request, $fileId)
  113. {
  114. $result = $this->_soap->getfile(['fileuid' => $fileId]);
  115. try {
  116. $filePath_a = explode('/', $result->return);
  117. $fileName = array_pop($filePath_a);
  118. list(, $ext) = explode('.', $fileName);
  119. $ch = curl_init();
  120. $timeout = 5;
  121. $url = str_replace(" ", "%20", $result->return);
  122. curl_setopt($ch, CURLOPT_URL, $url);
  123. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  124. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  125. $data = curl_exec($ch);
  126. curl_close($ch);
  127. $tmpdir = env('TMP_DIR');
  128. $filePath = storage_path("{$tmpdir}/{$fileId}.{$ext}");
  129. file_put_contents($filePath, $data, FILE_BINARY);
  130. $file = new \SplFileInfo($filePath);
  131. $response = response()->download($file);
  132. $response->deleteFileAfterSend(true);
  133. return $response;
  134. } catch (\Exception $e) {
  135. return abort(404);
  136. }
  137. }
  138. public function uploadAction(Request $request, $zayavNum)
  139. {
  140. $this->validate($request, [
  141. 'file' => 'required|max:5120',
  142. ]);
  143. $file = $request->file('file');
  144. $fileType = $request->input('filetype');
  145. $user = $request->user();
  146. $public_tmp_path = app()->basePath(env('TMP_DIR_PUBLIC'));
  147. $file->move($public_tmp_path, $file->getClientOriginalName());
  148. $result = $this->_soap->savefile(
  149. [
  150. 'temppath' => "/" . env('TMP_DIR_PUBLIC_NAME'),
  151. 'zamernum' => $request->get('zamerId'),
  152. 'filetype' => $fileType,
  153. 'filename' => $file->getClientOriginalName(),
  154. 'login' => $user->login
  155. ]
  156. );
  157. return response()->json(['result' => 'ok']);
  158. }
  159. public function saveresultzamerAction(Request $request, $zamerId)
  160. {
  161. $this->validate($request, [
  162. 'rezultzamer' => 'required',
  163. 'status' => 'required',
  164. ]);
  165. $user = $request->user();
  166. $rezultzamer = $request->input('rezultzamer');
  167. $comment = $request->input('comment');
  168. $status = $request->input('status');
  169. $result = $this->_soap->saveresultzamer(
  170. [
  171. 'sessionid' => $user->session_id,
  172. 'zamernum' => $zamerId,
  173. 'rezultzamer' => $rezultzamer,
  174. 'comment' => $comment,
  175. 'status' => $status,
  176. ]
  177. );
  178. return response()->json([
  179. 'result' => $result->return == 1 ? true : false,
  180. 'message' => $result->return
  181. ]);
  182. }
  183. public function savedogovorAction(Request $request, $zamerId)
  184. {
  185. /*
  186. $this->validate($request, [
  187. 'summadogovor' => 'required',
  188. 'dtdostavka' => 'required',
  189. 'dtmontage' => 'required',
  190. 'summapredoplata' => 'required',
  191. 'typeoplata' => 'required',
  192. ]);*/
  193. $user = $request->user();
  194. $summadogovor = $request->input('summadogovor');
  195. $dtdostavka = $request->input('dtdostavka');
  196. $dtmontage = $request->input('dtmontage');
  197. $isdemontage = boolval($request->input('isdemontage')) ? 1 : 0;
  198. $summapredoplata = $request->input('summapredoplata');
  199. $typeoplata = $request->input('typeoplata');
  200. $comment = $request->input('comment');
  201. $commentmontage = $request->input('commentmontage');
  202. $commentdostavka = $request->input('commentdostavka');
  203. $result = $this->_soap->savedogovor(
  204. [
  205. 'sessionid' => $user->session_id,
  206. 'zamernum' => $zamerId,
  207. 'summadogovor' => $summadogovor,
  208. 'dtdostavka' => $dtdostavka,
  209. 'dtmontage' => $dtmontage,
  210. 'isdemontage' => $isdemontage,
  211. 'summapredoplata' => $summapredoplata,
  212. 'typeoplata' => $typeoplata,
  213. 'comment' => $comment,
  214. 'commentmontage' => $commentmontage,
  215. 'commentdostavka' => $commentdostavka,
  216. ]
  217. );
  218. return response()->json([
  219. 'result' => $result->return == 1 ? true : false,
  220. 'message' => $result->return
  221. ]);
  222. }
  223. public function setpayAction(Request $request, $zamerId)
  224. {
  225. /*
  226. $this->validate($request, [
  227. 'summ' => 'required',
  228. 'dogovor' => 'required',
  229. 'typeoplata' => 'required',
  230. ]);*/
  231. $user = $request->user();
  232. $summ = $request->input('summ');
  233. $dogovor = $request->input('dogovor');
  234. $typeoplata = $request->input('typeoplata');
  235. $result = $this->_soap->dogovor(
  236. [
  237. 'login' => $user->login,
  238. 'dogovor' => $dogovor,
  239. 'typeoplata' => $typeoplata,
  240. 'summ' => $summ,
  241. ]
  242. );
  243. return response()->json([
  244. 'result' => $result->return == 1 ? true : false,
  245. 'message' => $result->return
  246. ]);
  247. }
  248. public function additemAction(Request $request)
  249. {
  250. // $this->validate($request, [
  251. // 'sourceitem' => 'required',
  252. // 'name' => 'required',
  253. // 'phone1' => 'required',
  254. // 'address' => 'required',
  255. // 'email' => 'required',
  256. // 'inforeklama' => 'required',
  257. //// 'comment' => 'required',
  258. // 'result' => 'required',
  259. // ]);
  260. $user = $request->user();
  261. $result = $this->_soap->additem(
  262. [
  263. 'sessionid' => $user->session_id,
  264. 'sourceitem' => $request->input('sourceitem'),
  265. 'name' => $request->input('name'),
  266. 'phone1' => $request->input('phone1'),
  267. 'phone2' => $request->input('phone2'),
  268. 'address' => $request->input('address'),
  269. 'email' => $request->input('email'),
  270. 'inforeklama' => $request->input('inforeklama'),
  271. 'comment' => $request->input('comment'),
  272. 'result' => $request->input('result'),
  273. ]
  274. );
  275. return response()->json([
  276. 'result' => $result->return == 1 ? true : false,
  277. 'message' => $result->return
  278. ]);
  279. }
  280. public function addzamerAction(Request $request, $itemnum)
  281. {
  282. /*$this->validate($request, [
  283. 'dt' => 'required',
  284. 'time' => 'required',
  285. 'info' => 'required',
  286. // 'comment' => 'required',
  287. 'status' => 'required',
  288. 'object' => 'required',
  289. ]);*/
  290. $user = $request->user();
  291. $result = $this->_soap->addzamer(
  292. [
  293. 'sessionid' => $user->session_id,
  294. 'itemnum' => $itemnum,
  295. 'dt' => $request->input('dt'),
  296. 'time' => $request->input('time'),
  297. 'info' => $request->input('info'),
  298. 'comment' => $request->input('comment'),
  299. 'status' => $request->input('status'),
  300. 'object' => $request->input('object'),
  301. ]
  302. );
  303. return response()->json([
  304. 'result' => $result->return == 1 ? true : false,
  305. 'message' => $result->return
  306. ]);
  307. }
  308. public function setstatusrouteAction(Request $request, $zamerId)
  309. {
  310. $this->validate($request, [
  311. 'status' => 'required',
  312. ]);
  313. $user = $request->user();
  314. $status = $request->input('status');
  315. $result = $this->_soap->setstatusroute(
  316. [
  317. 'login' => $user->login,
  318. 'zamernum' => $zamerId,
  319. 'status' => $status
  320. ]
  321. );
  322. return response()->json([
  323. 'result' => $result->return == 1 ? true : false,
  324. 'message' => $result->return
  325. ]);
  326. }
  327. }