TrackManagementController.php 9.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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. /**
  72. * 新增訊息頁面
  73. * 本端點非 API,直接到 view
  74. * @return array: 返回渲染頁
  75. */
  76. public function create()
  77. {
  78. // 取得參數與驗證
  79. // 服務層取得資料(以及實現各種業務上的邏輯)
  80. $tagUnassign = $this->tagManagementSv->getTagByReferral("", false);
  81. //有一個referral 貼多個標的情況
  82. $tagUnassign_uniques = array();
  83. foreach ($tagUnassign as $c) {
  84. $tagUnassign_uniques[$c["id"].'-'.$c["tagName"]] = $c; // Get unique country by code.
  85. }
  86. $tagAssigned = $this->tagManagementSv->getTagByReferral("", true);
  87. //有一個referral 貼多個標的情況
  88. $tagAssigned_uniques = array();
  89. foreach ($tagAssigned as $c) {
  90. $tagAssigned_uniques[$c["id"].'-'.$c["tagName"]] = $c; // Get unique country by code.
  91. }
  92. $referralList = $this->referralSv->getReferral();
  93. $referral=array();
  94. foreach($referralList as $data)
  95. {
  96. array_push($referral,$data["referral"]);
  97. }
  98. // 渲染
  99. return view('admin.DataManagement.ReferralManagementEdit', [
  100. 'operdata' => "",
  101. 'richmenuId' => 0,
  102. 'richmenus' => $this->richmenuManagementSv->getRichmenuList(),
  103. 'tagUnassign' => $tagUnassign_uniques,
  104. 'tagAssigned' => $tagAssigned_uniques,
  105. 'existReferral' => $referral,
  106. ]);
  107. }
  108. /**
  109. * 編輯訊息頁面
  110. * 本端點非 API,依照變量取得資料後,渲染到 view
  111. *
  112. * @param integer $id : 訊息的序號
  113. *
  114. * @return array: 返回渲染頁
  115. */
  116. public function edit($id)
  117. {
  118. // 取得參數與驗證
  119. // 服務層取得資料(以及實現各種業務上的邏輯)
  120. $res = $this->trackManagementSv->getTrackDataById($id);
  121. // 渲染
  122. return view('admin.DataManagement.TrackManagementEdit', [
  123. 'operdata' => $res,
  124. 'id' => $id,
  125. ]);
  126. }
  127. /**
  128. * 新增或編輯標籤的端點
  129. * 本端點非 API,依照參數新增或修改資料後,跳轉到既有的 view
  130. *
  131. * @param Request $request : 整包參數
  132. *
  133. * @return array: 返回跳轉渲染頁的資訊
  134. */
  135. public function store(Request $request)
  136. {
  137. // 取得參數(由於是內部系統因此不做後端驗證)
  138. \Log::info($request->all());
  139. // return;
  140. $mode = $request->operateMode;
  141. $trackNo = $request->trackNo;
  142. $trackTitle = $request->trackTitle;
  143. $trackLimit = $request->trackLimit;
  144. // $id = ($request->mode == 'insert') ? '' : $request->id;
  145. // $name = $request->name;
  146. // $referral = $request->referral;
  147. // $orlCode = $request->orlCode;
  148. // $richmenuId = $request->richmenuId;
  149. // $hidTag = $request->hidTag;
  150. // $folderS3 = 'urlQRCode'; //要儲存到S3上的folder名稱
  151. /**
  152. * picsee短網址
  153. */
  154. // 服務層設置(以及實現各種業務上的邏輯)
  155. if ($mode='insert') {
  156. // 新增模式
  157. // 直接創建一組短網址
  158. //$orlCode = $this->insertOrl($name, env('LINE_LIFF_URL').'/'.env('LIFF_PAGE_LOGIN').'?referral='.$referral.'&liffId='.env('LIFF_PAGE_LOGIN'), $name);
  159. // $orlCode = $this->insertOrl($name, env('APP_URL').'/web/referrallogin/'.$referral, $name);
  160. /**
  161. * 改掉以往存到ORL的方式,改以透過Picsee來產生短網址
  162. * 增加儲存欄位
  163. * @picseeCode 短網址存取碼
  164. * @picseeUrl 短網址
  165. * @qRCode_pic
  166. */
  167. //新的新增至PICSEE
  168. // $picseeData = $this->insertPicsee(env("APP_FRONTEND_URL").'/web/referrallogin/'.$referral);
  169. // $picseeUrl = str_replace(env("PICSEE_SERCH_DOMAIN"),env("PICSEE_REPLACE_DOMAIN"),$picseeData->picseeUrl);
  170. // $explodeGetCode = explode("/",$picseeUrl);
  171. // $picseeCode = end($explodeGetCode);
  172. // $qRCode = $this->makeQRCode($picseeCode,$picseeUrl,$folderS3);
  173. // $id = $this->trackManagementSv->insertReferral(
  174. // $name,
  175. // $referral,
  176. // $richmenuId,
  177. // $picseeCode,
  178. // $picseeUrl,
  179. // $qRCode,
  180. // $orlCode
  181. // );
  182. } elseif ($mode=='edit') {
  183. // $referralData = $this->referralSv->getReferralById($id);
  184. // // 編輯模式
  185. // if ($orlCode != 0) {
  186. // $this->updateOrl($orlCode, $name, $name);
  187. // } else {
  188. // // 針對導入短網址服務之後,但又已經存在的紀錄,開放只要編輯過就可以取得短網址
  189. // //$orlCode = $this->insertOrl($name, env('LINE_LIFF_URL').'/'.env('LIFF_PAGE_LOGIN').'?referral='.$referral.'&liffId='.env('LIFF_PAGE_LOGIN'), $name);
  190. // // $orlCode = $this->insertOrl($name, env('APP_URL').'/web/referrallogin/'.$referral, $name);
  191. // //此段取得短網址的功能調整指向picsee流程
  192. // if($referralData["picseeCode"] == ""){
  193. // $picseeData = $this->insertPicsee(env("APP_URL").'/web/referrallogin/'.$referral);
  194. // $picseeUrl = str_replace(env("PICSEE_SERCH_DOMAIN"),env("PICSEE_REPLACE_DOMAIN"),$picseeData->picseeUrl);
  195. // $explodeGetCode = explode("/",$picseeUrl);
  196. // $picseeCode = end($explodeGetCode);
  197. // $qRCode = $this->makeQRCode($picseeCode,$picseeUrl,$folderS3);
  198. // $this->referralSv->modifyReferralPicsee(
  199. // $id,
  200. // $picseeCode,
  201. // $picseeUrl,
  202. // $qRCode
  203. // );
  204. // }
  205. // }
  206. $this->trackManagementSv->store(
  207. $id,
  208. $trackNo,
  209. $trackTitle,
  210. $trackLimit,
  211. );
  212. }
  213. // $this->referralTagManagementSv->modifyreferralTagByReferralAndTagIds($id, $hidTag);
  214. // 跳轉
  215. return redirect('/backend/dataManagement/track');
  216. }
  217. }