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')) -
| @@ -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) }} | +