krgm.so-manager-dev.com/app/Http/Controllers/Admin/MailTemplateController.php
kin.rinzen 70bfd18204
All checks were successful
Deploy preview (main_kin) / deploy (push) Successful in 13s
画面追加(mail_templates/inv_settings)
2025-08-27 17:16:05 +09:00

125 lines
3.6 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\MailTemplate;
class MailTemplateController extends Controller
{
/**
* 一覧表示
*/
public function list(Request $request)
{
if ($request->input('action') === 'reset') {
return redirect()->route('mail_templates');
}
$sort = $request->input('sort', 'mail_template_id');
$sort_type = $request->input('sort_type', 'desc');
$query = MailTemplate::query();
// 絞り込み
if ($request->filled('mail_template_id')) {
$query->where('mail_template_id', $request->mail_template_id);
}
if ($request->filled('pg_id')) {
$query->where('pg_id', $request->pg_id);
}
if ($request->has('mgr_cc_flag') && $request->mgr_cc_flag !== '') {
$query->where('mgr_cc_flag', $request->mgr_cc_flag);
}
if ($request->has('use_flag') && $request->use_flag !== '') {
$query->where('use_flag', $request->use_flag);
}
if ($request->filled('subject')) {
$query->where('subject', 'LIKE', "%{$request->subject}%");
}
$templates = $query->orderBy($sort, $sort_type)->paginate(20);
return view('admin.mail_templates.list', compact(
'templates', 'sort', 'sort_type'
));
}
/**
* 新規登録
*/
public function add(Request $request)
{
if ($request->isMethod('post')) {
$data = $this->validateTemplate($request);
MailTemplate::create($data);
return redirect()->route('mail_templates')
->with('success', 'テンプレートを登録しました');
}
$mailTemplate = new MailTemplate();
return view('admin.mail_templates.add', compact('mailTemplate'));
}
/**
* 編集
*/
public function edit($id, Request $request)
{
$mailTemplate = MailTemplate::findOrFail($id);
if ($request->isMethod('post')) {
$data = $this->validateTemplate($request);
$mailTemplate->update($data);
return redirect()->route('mail_templates')
->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'));
}
/**
* 削除
*/
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', '削除対象が指定されていません');
}
/**
* バリデーション共通化
*/
private function validateTemplate(Request $request)
{
return $request->validate([
'pg_id' => 'nullable|integer',
'internal_id' => 'nullable|integer',
'mgr_cc_flag' => 'nullable|boolean',
'bcc_adrs' => 'nullable|string|max:255',
'use_flag' => 'nullable|boolean',
'memo' => 'nullable|string|max:255',
'subject' => 'required|string|max:255',
'text' => 'required|string',
'operator_id' => 'nullable|integer',
]);
}
}