input('sort', 'print_area_id'); $sort_type = $request->input('sort_type', 'asc'); $list = PrintArea::orderBy($sort, $sort_type)->paginate(20); return view('admin.print_areas.list', [ 'list' => $list, 'sort' => $sort, 'sort_type' => $sort_type, ]); } // 新規登録 public function add(Request $request) { if ($request->isMethod('post')) { $validated = $request->validate([ 'print_area_name' => 'required|string|max:32', 'park_id' => 'required|integer', ]); $validated['operator_id'] = auth()->id(); // 現在のログインユーザーを記録 PrintArea::create($validated); return redirect()->route('print_areas')->with('success', '登録しました'); } $parks = Park::pluck('park_name', 'park_id'); return view('admin.print_areas.add', compact('parks')); } // 編集 public function edit(Request $request, $print_area_id) { $record = PrintArea::findOrFail($print_area_id); if ($request->isMethod('post')) { $validated = $request->validate([ 'print_area_name' => 'required|string|max:32', 'park_id' => 'required|integer', ]); $validated['operator_id'] = auth()->id(); // 更新者を記録 $record->update($validated); return redirect()->route('print_areas')->with('success', '更新しました'); } $parks = Park::pluck('park_name', 'park_id'); return view('admin.print_areas.edit', compact('record', 'parks')); } // 詳細 public function info(Request $request, $print_area_id) { $record = PrintArea::with('park')->findOrFail($print_area_id); return view('admin.print_areas.info', compact('record')); } // 削除(複数可) public function delete(Request $request) { if ($request->has('pk')) { PrintArea::destroy($request->input('pk')); return redirect()->route('print_areas')->with('success', '削除しました'); } return redirect()->route('print_areas')->with('error', '削除対象が見つかりません'); } // CSVエクスポート public function export(Request $request) { $filename = 'print_areas_' . now()->format('Ymd_His') . '.csv'; $data = PrintArea::with('park')->get(); $csv = implode(",", ['印刷範囲ID', '印刷範囲名', '駐輪場ID', '駐輪場名']) . "\n"; foreach ($data as $item) { $csv .= implode(",", [ $item->print_area_id, $item->print_area_name, $item->park_id, optional($item->park)->park_name, ]) . "\n"; } return response($csv) ->header('Content-Type', 'text/csv') ->header('Content-Disposition', "attachment; filename=$filename"); } // CSVインポート(仮) public function import(Request $request) { // 実装未 return redirect()->route('print_areas')->with('success', 'CSVインポート処理(未実装)'); } }