middleware('permission:itl-device-setting'); } public function page() { // ['custodyunit' => $custodyunit, 'assetownership' => $assetownership] $custodyunit = CustodyUnit::all(); $assetownership = AssetOwnership::all(); return view('system.interval.equipment') ->with('custodyunit', $custodyunit) ->with('assetownership', $assetownership); } public function road() { // ['custodyunit' => $custodyunit, 'assetownership' => $assetownership] $custodyunit = CustodyUnit::all(); $assetownership = AssetOwnership::all(); $location = IntervalEquipment::select('id', 'serialnumber', 'location')->distinct()->get(); // dd($location); return view('system.interval.equ_dis') ->with('location', $location) ->with('custodyunit', $custodyunit) ->with('assetownership', $assetownership); } /** * Display a listing of the resource. */ public function index(Request $request) { #region DataTable 搜尋屬性 $draw = $request->get('draw'); $start = $request->get("start"); $rowperpage = $request->get("length"); // Rows display per page $columnIndex_arr = $request->get('order'); $columnName_arr = $request->get('columns'); $order_arr = $request->get('order'); $search_arr = $request->get('search'); $columnIndex = $columnIndex_arr[0]['column']; // Column index $columnName = $columnName_arr[$columnIndex]['data']; // Column name $columnSortOrder = $order_arr[0]['dir']; // asc or desc $searchValue = $search_arr['value']; // Search value #endregion // Role with permissions $records = IntervalEquipment::query(); if (isset($request->dis)) { $records = Intervaldis::query(); } $totalRecords = $records->count(); if (isset($columnName)) $records->orderBy($columnName, $columnSortOrder); if (isset($searchValue)) { $records->where(function ($query) use ($searchValue) { // $query->where('outlet_id', 'like', '%' . $searchValue . '%') // ->orwhere('name', 'like', '%' . $searchValue . '%') // ->orwhere('serialnumber', 'like', '%' . $searchValue . '%') // ->orwhere('creator_id', 'like', '%' . $searchValue . '%'); }); } $totalRecordswithFilter = $records->count(); if (isset($start)) $records->skip($start); if (isset($rowperpage)) $records->take($rowperpage); $data_arr = $records->get(); $response = array( "draw" => intval($draw), "iTotalRecords" => $totalRecords, "iTotalDisplayRecords" => $totalRecordswithFilter, "aaData" => $data_arr ); return response()->json($response); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $device = new IntervalEquipment(); // 如果缺少必要欄位 DB::beginTransaction(); try { $device->serialnumber = $request->serialnumber; $device->videonumber = $request->videonumber; $device->brand = $request->brand; $device->model = $request->model; $device->custodyunit_id = $request->custodyunit_id; $device->assetownership_id = $request->assetownership_id; $device->buydate = $request->buydate; $device->activatedate = $request->activatedate; $device->locationid = $request->locationid; $device->location = $request->location; $device->comment = $request->comment; $device->precinct = $request->precinct; $device->station = $request->station; $device->save(); $logData = [ 'action' => 'create', 'action_detail' => '新增設備', 'ip' => request()->ip(), 'remark' => "新增設備:{$device->serialnumber}", ]; logWriter::writeLog($logData, 'api'); DB::commit(); return response()->json(['success' => true, 'message' => '新增成功']); } catch (\Throwable $th) { //throw $th; Log::error($th); DB::rollBack(); return response()->json(['success' => false, 'message' => '新增失敗']); } } /** * Display the specified resource. */ public function show(string $id) { $device = IntervalEquipment::find($id); return response()->json(['success' => true, 'data' => $device]); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { $device = IntervalEquipment::find($id); if (!$request->serialnumber || !$request->location || !$request->precinct || !$request->station) { return response()->json(['success' => false, 'message' => '缺少必要欄位']); } DB::beginTransaction(); try { $device->serialnumber = $request->serialnumber; $device->videonumber = $request->videonumber; $device->brand = $request->brand; $device->model = $request->model; $device->custodyunit_id = $request->custodyunit_id ?? null; $device->assetownership_id = $request->assetownership_id ?? null; $device->buydate = $request->buydate; $device->activatedate = $request->activatedate; $device->locationid = $request->locationid; $device->location = $request->location; $device->comment = $request->comment; $device->precinct = $request->precinct; $device->station = $request->station; $device->save(); $logData = [ 'action' => 'update', 'action_detail' => '更新設備', 'ip' => request()->ip(), 'remark' => "更新設備:{$device->serialnumber}", ]; logWriter::writeLog($logData, 'api'); DB::commit(); return response()->json(['success' => true, 'message' => '更新成功']); } catch (\Throwable $th) { //throw $th; Log::error($th); DB::rollBack(); return response()->json(['success' => false, 'message' => '更新失敗']); } } /** * Remove the specified resource from storage. */ public function destroy(string $id) { $device = IntervalEquipment::find($id); try { $device->delete(); return response()->json(['success' => true, 'message' => '刪除成功']); } catch (\Throwable $th) { //throw $th; Log::error($th); return response()->json(['success' => false, 'message' => '刪除失敗']); } } /** * 取得保管單位資料 */ public function indexUnit(Request $request) { if ($request->type == "custodyunit") { $unit = CustodyUnit::all(); return response()->json(['success' => true, 'data' => $unit]); } else if ($request->type == "assetownership") { $unit = AssetOwnership::all(); return response()->json(['success' => true, 'data' => $unit]); } return response()->json(['success' => false, 'message' => '取得失敗']); } /** * 新增單位資料 */ public function storeUnit(Request $request) { // custodyunit_id //assetownership_id) DB::beginTransaction(); try { if ($request->type == "custodyunit") { $unit = new CustodyUnit(); $unit->name = $request->name; $unit->save(); $logData = [ 'action' => 'create', 'action_detail' => '新增保管單位', 'ip' => request()->ip(), 'remark' => "新增保管單位:{$request->name}", ]; LogWriter::writeLog($logData, 'api'); DB::commit(); return response()->json(['success' => true, 'message' => '保管單位-新增成功']); } else if ($request->type == "assetownership") { $unit = new AssetOwnership(); $unit->name = $request->name; $unit->save(); $logData = [ 'action' => 'create', 'action_detail' => '新增財產所屬單位', 'ip' => request()->ip(), 'remark' => "新增財產所屬單位:{$request->name}", ]; LogWriter::writeLog($logData, 'api'); DB::commit(); return response()->json(['success' => true, 'message' => '財產所屬單位-新增成功']); } } catch (\Throwable $th) { //throw $th; Log::error($th); DB::rollBack(); } return response()->json(['success' => false, 'message' => '新增失敗']); } /** * Store a newly created resource in storage. */ public function storeRoad(Request $request) { $road = new Intervaldis(); // 如果缺少必要欄位 if ( !$request->start_num || !$request->end_num || !$request->outlaw_speed || !$request->location || !$request->distance || !$request->limit_speed || !$request->location_id || !$request->start_cert || !$request->end_cert ) { return response()->json(['error' => false, 'message' => '缺少必要欄位']); } // 起始機號與結束機號不可相同 if ($request->start_num == $request->end_num) { return response()->json(['error' => false, 'message' => '起始機號與結束機號不可相同']); } // 起始日期不可大於結束日期 if ($request->start_cert > $request->end_cert) { return response()->json(['error' => false, 'message' => '起始日期不可大於結束日期']); } DB::beginTransaction(); try { $road->start_serialnumber = $request->start_num; $road->end_serialnumber = $request->end_num; $road->distance = $request->distance; $road->limit_speed = $request->limit_speed; $road->outlaw_speed = $request->outlaw_speed; $road->limit_time = round(3600 * $request->distance / $request->limit_speed / 1000, 2); $road->speed_alert = $request->speed_alert; $road->count_alert = $request->count_alert; $road->location = $request->location; $road->location_id = $request->location_id; $road->certificatenumber = $request->certificatenumber; $road->start_cert = $request->start_cert; $road->end_cert = $request->end_cert; // dd($road); $road->save(); $logData = [ 'action' => 'create', 'action_detail' => '新增路段', 'ip' => request()->ip(), 'remark' => "新增路段:{$road->serialnumber}", ]; logWriter::writeLog($logData, 'api'); DB::commit(); return response()->json(['success' => true, 'message' => '新增成功']); } catch (\Throwable $th) { //throw $th; Log::error($th); DB::rollBack(); return response()->json(['error' => false, 'message' => '新增失敗']); } } /** * Display the specified resource. */ public function showRoad(string $id) { $device = Intervaldis::find($id); return response()->json(['success' => true, 'data' => $device]); } /** * Update the specified resource in storage. */ public function updateRoad(Request $request, string $id) { $road = Intervaldis::find($id); if ( !$request->start_num || !$request->end_num || !$request->outlaw_speed || !$request->location || !$request->distance || !$request->limit_speed || !$request->location_id || !$request->start_cert || !$request->end_cert ) { return response()->json(['error' => false, 'message' => '缺少必要欄位']); } // 起始機號與結束機號不可相同 if ($request->start_num == $request->end_num) { return response()->json(['error' => false, 'message' => '起始機號與結束機號不可相同']); } // 起始日期不可大於結束日期 if ($request->start_cert > $request->end_cert) { return response()->json(['error' => false, 'message' => '起始日期不可大於結束日期']); } DB::beginTransaction(); try { $road->start_serialnumber = $request->start_num; $road->end_serialnumber = $request->end_num; $road->distance = $request->distance; $road->limit_speed = $request->limit_speed; $road->outlaw_speed = $request->outlaw_speed; $road->limit_time = round(3600 * $request->distance / $request->limit_speed / 1000, 2); $road->speed_alert = $request->speed_alert; $road->count_alert = $request->count_alert; $road->location = $request->location; $road->location_id = $request->location_id; $road->certificatenumber = $request->certificatenumber; $road->start_cert = $request->start_cert; $road->end_cert = $request->end_cert; $road->save(); $logData = [ 'action' => 'update', 'action_detail' => '更新路段', 'ip' => request()->ip(), 'remark' => "更新路段:{$road->location}", ]; logWriter::writeLog($logData, 'api'); DB::commit(); return response()->json(['success' => true, 'message' => '更新成功']); } catch (\Throwable $th) { //throw $th; Log::error($th); DB::rollBack(); return response()->json(['error' => false, 'message' => '更新失敗']); } } /** * Remove the specified resource from storage. */ public function destroyRoad(string $id) { $device = Intervaldis::find($id); try { $device->delete(); return response()->json(['success' => true, 'message' => '刪除成功']); } catch (\Throwable $th) { //throw $th; Log::error($th); return response()->json(['error' => false, 'message' => '刪除失敗']); } } }