diff --git a/app/Http/Controllers/Admin/MailTemplateController.php b/app/Http/Controllers/Admin/MailTemplateController.php index bad801f..6c18190 100644 --- a/app/Http/Controllers/Admin/MailTemplateController.php +++ b/app/Http/Controllers/Admin/MailTemplateController.php @@ -11,116 +11,101 @@ class MailTemplateController extends Controller /** * 一覧表示 */ - public function list(Request $request) + public function list(Request $request) { if ($request->input('action') === 'reset') { return redirect()->route('mail_templates'); } - // 許可されたソートカラム一覧 - $allowedSorts = [ - 'mail_template_id', - 'pg_id', - 'internal_id', - 'mgr_cc_flag', - 'bcc_adrs', - 'use_flag', - 'memo', - 'subject', - 'text', - 'created_at', - 'updated_at', - 'operator_id', - ]; - - - $sort = $request->input('sort', 'mail_template_id'); - $sort_type = $request->input('sort_type', 'desc'); - $allowedSorts = [ 'mail_template_id', 'pg_id', 'internal_id', 'mgr_cc_flag', 'bcc_adrs', 'use_flag', 'memo', 'subject', 'text', 'created_at', 'updated_at', 'operator_id' ]; + $sort = $request->input('sort', 'mail_template_id'); + $sort_type = $request->input('sort_type', 'asc'); + if (!in_array($sort, $allowedSorts)) { $sort = 'mail_template_id'; } - if (!in_array($sort_type, ['asc', 'desc'])) { $sort_type = 'desc'; -} + } $query = MailTemplate::query(); - // 絞り込み - if ($request->filled('mail_template_id')) { - $query->where('mail_template_id', $request->mail_template_id); + // === 絞り込み === + $mail_template_id = $request->input('mail_template_id'); + $pg_id = $request->input('pg_id'); + $mgr_cc_flag = $request->input('mgr_cc_flag'); + $use_flag = $request->input('use_flag'); + $subject = $request->input('subject'); + + if ($mail_template_id) { + $query->where('mail_template_id', $mail_template_id); } - if ($request->filled('pg_id')) { - $query->where('pg_id', $request->pg_id); + if ($pg_id) { + $query->where('pg_id', $pg_id); } - if ($request->has('mgr_cc_flag') && $request->mgr_cc_flag !== '') { - $query->where('mgr_cc_flag', $request->mgr_cc_flag); + if ($mgr_cc_flag !== null && $mgr_cc_flag !== '') { + $query->where('mgr_cc_flag', $mgr_cc_flag); } - if ($request->has('use_flag') && $request->use_flag !== '') { - $query->where('use_flag', $request->use_flag); + if ($use_flag !== null && $use_flag !== '') { + $query->where('use_flag', $use_flag); } - if ($request->filled('subject')) { - $query->where('subject', 'LIKE', "%{$request->subject}%"); + if ($subject) { + $query->where('subject', 'LIKE', "%{$subject}%"); } $templates = $query->orderBy($sort, $sort_type)->paginate(20); return view('admin.mail_templates.list', compact( - 'templates', 'sort', 'sort_type' + 'templates', 'sort', 'sort_type', + 'mail_template_id', 'pg_id', 'mgr_cc_flag', 'use_flag', 'subject' )); } - /** - * 新規登録 - */ public function add(Request $request) { if ($request->isMethod('post')) { $data = $this->validateTemplate($request); + $data['operator_id'] = optional(\Auth::user())->ope_id ?? null; + MailTemplate::create($data); return redirect()->route('mail_templates') - ->with('success', 'テンプレートを登録しました'); + ->with('success', '登録しました。'); } - $mailTemplate = new MailTemplate(); - return view('admin.mail_templates.add', compact('mailTemplate')); + return view('admin.mail_templates.add', [ + 'mailTemplate' => new MailTemplate(), + 'isEdit' => false, + ]); } /** * 編集 */ - public function edit($id, Request $request) + public function edit(int $id, Request $request) { $mailTemplate = MailTemplate::findOrFail($id); if ($request->isMethod('post')) { $data = $this->validateTemplate($request); + $data['operator_id'] = optional(\Auth::user())->ope_id ?? null; + $mailTemplate->update($data); return redirect()->route('mail_templates') - ->with('success', 'テンプレートを更新しました'); + ->with('success', '更新しました。'); } - return view('admin.mail_templates.edit', compact('mailTemplate')); - } - - /** - * 詳細表示 - */ - public function info($id) - { - $mailTemplate = MailTemplate::findOrFail($id); - - return view('admin.mail_templates.info', compact('mailTemplate')); + return view('admin.mail_templates.edit', [ + 'mailTemplate' => $mailTemplate, + 'isEdit' => true, + ]); } /** @@ -128,29 +113,34 @@ class MailTemplateController extends Controller */ public function delete(Request $request) { - $id = $request->input('id'); - if ($id) { - MailTemplate::destroy($id); - return redirect()->route('mail_templates')->with('success', 'テンプレートを削除しました'); - } - return redirect()->route('mail_templates')->with('error', '削除対象が指定されていません'); - } + $pk = $request->input('pk', []); + // 配列に統一 + $ids = is_array($pk) ? $pk : [$pk]; + $ids = array_values(array_filter($ids, fn($v) => preg_match('/^\d+$/', (string) $v))); + + if (empty($ids)) { + return redirect()->route('mail_templates')->with('error', '削除対象が選択されていません。'); + } + + MailTemplate::whereIn('mail_template_id', $ids)->delete(); + + return redirect()->route('mail_templates')->with('success', '削除しました。'); + } /** * バリデーション共通化 */ private function validateTemplate(Request $request) { return $request->validate([ - 'pg_id' => 'nullable|integer', - 'internal_id' => 'nullable|integer', - 'mgr_cc_flag' => 'nullable|boolean', + 'pg_id' => 'required|integer', + 'internal_id' => 'required|integer', + 'mgr_cc_flag' => 'required|boolean', 'bcc_adrs' => 'nullable|string|max:255', - 'use_flag' => 'nullable|boolean', + 'use_flag' => 'required|boolean', 'memo' => 'nullable|string|max:255', 'subject' => 'required|string|max:255', 'text' => 'required|string', - 'operator_id' => 'nullable|integer', ]); } } diff --git a/resources/lang/ja/validation.php b/resources/lang/ja/validation.php index 22f0aaa..f7e7073 100644 --- a/resources/lang/ja/validation.php +++ b/resources/lang/ja/validation.php @@ -409,7 +409,16 @@ return [ 'device_work' => '稼働状況', 'device_workstart' => '稼働開始日', 'device_replace' => '交換日', - 'device_remarks' => '備考', + 'device_remarks' => '備考', +//SWA-97 + 'pg_id' => '使用プログラムID', + 'internal_id' => '内部ID', + 'mgr_cc_flag' => 'エリアマネージャー同報', + 'bcc_adrs' => 'BCCアドレス', + 'use_flag' => '使用フラグ', + 'memo' => '備考', + 'subject' => '件名', + 'text' => '本文', diff --git a/resources/views/admin/mail_templates/_form.blade.php b/resources/views/admin/mail_templates/_form.blade.php index 224c8d8..39ceba9 100644 --- a/resources/views/admin/mail_templates/_form.blade.php +++ b/resources/views/admin/mail_templates/_form.blade.php @@ -1,101 +1,146 @@ -@if(Session::has('success')) - -@elseif(Session::has('error')) -
- -

エラー:

- {!! Session::get('error') !!} -
-@endif - -
+ + {{-- セッションメッセージ --}} + @if(Session::has('success')) + + @elseif(Session::has('error')) +
+ +

エラー:

+ {!! Session::get('error') !!} +
+ @endif + + {{-- バリデーションエラー --}} + @if ($errors->any()) + + @endif + + +
- {{-- 編集・詳細時のみテンプレートID表示 --}} - @if($isEdit || $isInfo) -
- -
-
- -
+ + {{-- テンプレートID(メールテンプレートID)--}} + @if($isEdit) +
+ +
+
+ {{-- システム自動入力・右寄せ・読取専用 --}} + +
@endif -
- +
+
-
- +
+
- + {{-- 内部ID --}}
- +
- + {{-- 数値入力・必須・負数NG(0以上)・右寄せ --}} +
- -
- + {{-- エリアマネージャー同報 --}} +
+
-
+
+
mgr_cc_flag ?? '') == 1) checked @endif - @if($isInfo) disabled @endif> + @if(old('mgr_cc_flag', $mailTemplate->mgr_cc_flag ?? 1) == 1) checked @endif required>
-
+
mgr_cc_flag ?? '') == 0) checked @endif - @if($isInfo) disabled @endif> + @if(old('mgr_cc_flag', $mailTemplate->mgr_cc_flag ?? 1) == 0) checked @endif>
+ +
- +
- + {{-- 半角128文字以内・左寄せ --}} +
- -
- + {{-- 使用フラグ --}} +
+
-
+
use_flag ?? '') == 1) checked @endif - @if($isInfo) disabled @endif> + @if(old('use_flag', $mailTemplate->use_flag ?? 1) == 1) checked @endif required>
-
+
use_flag ?? '') == 0) checked @endif - @if($isInfo) disabled @endif> + @if(old('use_flag', $mailTemplate->use_flag ?? 1) == 0) checked @endif required>
- +
- +
- + {{-- 全角可・255文字以内・左寄せ --}} +
@@ -103,8 +148,15 @@
- + {{-- 全角可・128文字以内・左寄せ・必須 --}} +
@@ -112,29 +164,40 @@
- -
- - -
- -
-
- + {{-- 全角可・400文字以内・左寄せ・必須 --}} +
- {{-- ===== 下部ボタン領域 ===== --}} + {{-- ▼ 下部ボタン --}} +
+
- {{-- 下部ボタン --}} - @if($isEdit) - - - @else - - - @endif + {{-- 登録ボタン --}} + @if($isEdit) + + @else + + @endif + + {{-- 削除ボタン(編集時のみ表示) --}} + @if($isEdit) + + @endif + +
+
diff --git a/resources/views/admin/mail_templates/add.blade.php b/resources/views/admin/mail_templates/add.blade.php index 0a08565..1f1c0fe 100644 --- a/resources/views/admin/mail_templates/add.blade.php +++ b/resources/views/admin/mail_templates/add.blade.php @@ -1,5 +1,5 @@ @extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] メール送信テンプレート新規登録') +@section('title', '新規') @section('content') @@ -7,14 +7,14 @@
-

新規登録

+

新規

@@ -22,25 +22,22 @@
- +
- -
-
-
-
- @csrf - @include('admin.mail_templates._form', [ - 'isEdit' => false, - 'isInfo' => false, - 'mailTemplate' => $mailTemplate, - ]) -
-
-
+
+ +
+ @csrf + @include('admin.mail_templates._form', [ + 'isEdit' => false, + 'mailTemplate' => $mailTemplate, + ]) +
+
+ @endsection diff --git a/resources/views/admin/mail_templates/edit.blade.php b/resources/views/admin/mail_templates/edit.blade.php index cf79dfa..fe1655d 100644 --- a/resources/views/admin/mail_templates/edit.blade.php +++ b/resources/views/admin/mail_templates/edit.blade.php @@ -1,5 +1,5 @@ @extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] メール送信テンプレート') +@section('title', '編集') @section('content') @@ -21,13 +21,23 @@
- +
-
+ {{-- 編集フォーム --}} + @csrf - @include('admin.mail_templates._form', ['isEdit' => 1, 'isInfo' => 0, 'mailTemplate' => $mailTemplate]) + @include('admin.mail_templates._form', [ + 'isEdit' => true, + 'mailTemplate' => $mailTemplate, + ]) +
+ + {{-- 削除フォーム(非表示) --}} +
diff --git a/resources/views/admin/mail_templates/info.blade.php b/resources/views/admin/mail_templates/info.blade.php deleted file mode 100644 index 98c4472..0000000 --- a/resources/views/admin/mail_templates/info.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] メール送信テンプレート') - -@section('content') -
-
-

メール送信テンプレート詳細

-
-
-
-
-
- {{-- info 画面なので action は不要 --}} -
- @csrf - @include('admin.mail_templates._form', ['isEdit' => 0, 'isInfo' => 1, 'mailTemplate' => $mailTemplate]) -
-
-
-
-@endsection diff --git a/resources/views/admin/mail_templates/list.blade.php b/resources/views/admin/mail_templates/list.blade.php index 13201f3..832c3c8 100644 --- a/resources/views/admin/mail_templates/list.blade.php +++ b/resources/views/admin/mail_templates/list.blade.php @@ -1,6 +1,6 @@ @extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] メール送信テンプレート') +@section('title', 'メール送信テンプレート') @section('content')
@@ -20,84 +20,110 @@
- -
-
- - {{-- タイトル区 --}} -
-

絞り込みフィルター

+
+ @if(Session::has('success')) + + @elseif(Session::has('error')) +
+ +

入力内容に不備があります:

+ {!! Session::get('error') !!} +
+ @endif - {{-- フィルタフォーム主体 --}} -
-
- @csrf - - + @if ($errors->any()) + + @endif - - - {{-- 行1 --}} - - - - - - - - - {{-- 行2 --}} - - - - - - - - - {{-- 行3 --}} - - - - - -
メールテンプレートID - - 使用プログラムID - -
エリアマネージャー同報 - - 使用フラグ - -
件名 - -
- - {{-- ボタン --}} -
- - + +
+
+
+

絞り込みフィルター

- + +
+
+ @csrf + + + + + + {{-- 行1 --}} + + + + + + + + + {{-- 行2 --}} + + + + + + + + + {{-- 行3 --}} + + + + + +
メールテンプレートID + + 使用プログラムID + +
エリアマネージャー同報 + + 使用フラグ + +
件名 + +
+ + {{-- ボタン --}} +
+ + +
+
+
+
-
-
- + +
@@ -115,7 +141,7 @@
@csrf - + {{-- チェック + 編集ボタン --}} - @foreach($templates as $item) - - - - - - - - - - - - - @endforeach + @foreach($templates as $item) + + + + + + + + + + + + + @endforeach
@@ -135,25 +161,25 @@
-
- - 編集 -
-
{{ $item->mail_template_id }}{{ $item->pg_id }}{{ $item->internal_id }}{{ $item->mgr_cc_flag ? '同報する' : '同報しない' }}{{ $item->bcc_adrs }}{{ $item->use_flag ? '使用する' : '使用しない' }}{{ $item->memo }}{{ $item->subject }}{{ Str::limit($item->text, 30) }}
+
+ + 編集 +
+
{{ $item->mail_template_id }}{{ $item->pg_id }}{{ $item->internal_id }}{{ $item->mgr_cc_flag ? '同報する' : '同報しない' }}{{ $item->bcc_adrs }}{{ $item->use_flag ? '使用する' : '使用しない' }}{{ $item->memo }}{{ $item->subject }}{{ Str::limit($item->text, 30) }}
diff --git a/resources/views/admin/operator_ques/list.blade.php b/resources/views/admin/operator_ques/list.blade.php index 3c66644..83ba576 100644 --- a/resources/views/admin/operator_ques/list.blade.php +++ b/resources/views/admin/operator_ques/list.blade.php @@ -43,7 +43,7 @@
- + 解除