TrackManagementController.php 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. namespace App\Http\Controllers\Backend\DataManagement;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Storage;
  5. use App\Http\Services\CheckParamService;
  6. use App\Http\Controllers\Controller;
  7. use App\Http\Services\Backend\DataManagement\TrackManagementService;
  8. use Log;
  9. class TrackManagementController extends Controller
  10. {
  11. // 相關私有服務層調用器宣告
  12. private $checkParamSv;
  13. private $trackManagementSv;
  14. public function __construct()
  15. {
  16. // 建構服務層調用器
  17. $this->checkParamSv=new CheckParamService();
  18. $this->trackManagementSv = new TrackManagementService();
  19. }
  20. public function index()
  21. {
  22. // 渲染
  23. return view('admin.DataManagement.TrackManagement');
  24. }
  25. public function grid()
  26. {
  27. // 取得參數
  28. $param = $_GET;
  29. if ($param == null) exit();
  30. $draw = $param["draw"]; //客戶端傳來的查詢次數,無條件回傳用以核對
  31. $orderColumn = $param["order"][0]["column"] + 1; //前端從 0 開始送,但 mysql 從 1 開始算
  32. $orderDir = $param["order"][0]["dir"];
  33. $start = $param["start"]; // 頁碼
  34. $length = $param["length"]; // 一頁多大
  35. $searchValue = $param["search"]["value"];
  36. //客製化搜尋欄位
  37. $keyword = $param["columns"][1]["search"]["value"] ?? null ;
  38. // 驗證
  39. if ($keyword != filter_var($keyword, FILTER_SANITIZE_SPECIAL_CHARS)) $keyword = "___CANNOT_FIND_STRING___";
  40. if (!$this->checkParamSv->LenMToN($keyword, 0, 50)) $keyword = "___CANNOT_FIND_STRING___";
  41. //資料庫
  42. $recordsTotal = 0;
  43. $result=$this->trackManagementSv->getList($recordsTotal, $orderColumn, $orderDir, $start, $length, $searchValue, $keyword);
  44. // 整理返回資料
  45. $data = array();
  46. $registeredSession = '';
  47. $lunchOptions = '';
  48. for ($i = 0; $i < count($result); $i++) {
  49. $result[$i]["ctrEdit"]='
  50. <a class="btn _btn-warning btn-sm _fz-12" href="track/edit/'.$result[$i]["id"].'"><span class="_glyphicon _glyphicon-list"></span> 編輯 </a>
  51. <a class="btn btn-danger btn-sm _fz-12" onclick="return delWarning();" href="track/delete/'.$result[$i]["id"].'"><span class="_glyphicon _glyphicon-remove"></span> 刪除 </a>';
  52. $data[] = array(
  53. //一般資料
  54. $result[$i]["id"],
  55. htmlspecialchars($result[$i]["trackNo"]),
  56. htmlspecialchars($result[$i]["trackTitle"]),
  57. htmlspecialchars($result[$i]["trackLimit"]),
  58. $result[$i]["createDate"],
  59. $result[$i]["ctrEdit"],
  60. );
  61. }
  62. $json = array(
  63. "draw" => $draw,
  64. "recordsTotal" => $recordsTotal,
  65. "recordsFiltered" => $recordsTotal, //其實還是填入所有筆數,本次筆數可從陣列取得
  66. "data" => $data,
  67. );
  68. // 返回
  69. return json_decode(json_encode($json), true);
  70. }
  71. public function create()
  72. {
  73. // 渲染
  74. return view('admin.DataManagement.TrackManagementEdit', [
  75. 'operdata' => '',
  76. 'id' => '',
  77. ]);
  78. }
  79. public function edit($id)
  80. {
  81. // 取得參數與驗證
  82. // 服務層取得資料(以及實現各種業務上的邏輯)
  83. $res = $this->trackManagementSv->getTrackDataById($id);
  84. // 渲染
  85. return view('admin.DataManagement.TrackManagementEdit', [
  86. 'operdata' => $res,
  87. 'id' => $id,
  88. ]);
  89. }
  90. public function store(Request $request)
  91. {
  92. // 取得參數(由於是內部系統因此不做後端驗證)
  93. try {
  94. $mode = $request->operateMode;
  95. $id = $request->id ?? null;
  96. $trackNo = $request->trackNo;
  97. $trackTitle = $request->trackTitle;
  98. $trackLimit = $request->trackLimit;
  99. \DB::beginTransaction();
  100. // 服務層設置(以及實現各種業務上的邏輯)
  101. if ($mode=='insert') {
  102. $this->trackManagementSv->insert(
  103. $trackNo,
  104. $trackTitle,
  105. $trackLimit,
  106. );
  107. } elseif ($mode=='edit') {
  108. $this->trackManagementSv->store(
  109. $id,
  110. $trackNo,
  111. $trackTitle,
  112. $trackLimit,
  113. );
  114. }
  115. \DB::commit();
  116. return response()->json([
  117. 'code' => 0,
  118. 'message' => 'ok',
  119. 'data' => [],
  120. ]);
  121. } catch (\Exception $e) {
  122. \DB::rollBack();
  123. return response()->json([
  124. 'code' => 99,
  125. 'message' => $e->getMessage().'/'.$e->getLine().'/'.$e->getFile(),
  126. 'data' => [],
  127. ]);
  128. }
  129. // $this->referralTagManagementSv->modifyreferralTagByReferralAndTagIds($id, $hidTag);
  130. // 跳轉
  131. return redirect('/backend/dataManagement/track');
  132. }
  133. public function delete($id)
  134. {
  135. // 取得參數與驗證
  136. // 服務層取得資料(以及實現各種業務上的邏輯)
  137. $this->trackManagementSv->deleteDataById($id);
  138. // 跳轉
  139. return redirect('/backend/dataManagement/track');
  140. }
  141. }