krgm.so-manager-dev.com/app/Http/Controllers/Admin/PrintAreaController.php

114 lines
3.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\PrintArea;
use App\Models\Park;
use Illuminate\Support\Facades\DB;
class PrintAreaController extends Controller
{
// 一覧
public function list(Request $request)
{
$sort = $request->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インポート処理未実装');
}
}