49 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers\SystemSettings;
use App\Support\CourierOnboardingReviewers;
use App\Utilities\SystemAccess;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class WorkflowReviewers extends Controller
{
public function __construct(private readonly CourierOnboardingReviewers $reviewers)
{
$this->middleware(function ($request, $next) {
abort_unless(SystemAccess::canOpenSettings(), 403);
return $next($request);
});
}
public function index()
{
return view('system_settings.workflow-reviewers.index', [
'reviewers' => $this->reviewers->settings(), 'history' => $this->reviewers->history(),
]);
}
public function search(Request $request)
{
$data = $request->validate(['q' => ['required', 'string', 'min:1', 'max:50']]);
try {
return response()->json(['people' => $this->reviewers->search(trim($data['q']))])->header('Cache-Control', 'no-store');
} catch (\Throwable $e) {
return response()->json(['message' => '钉钉花名册暂时无法查询,请稍后重试。'], 503)->header('Cache-Control', 'no-store');
}
}
public function update(Request $request)
{
$data = $request->validate([
'first' => ['required', 'array', 'min:1', 'max:10'],
'first.*' => ['required', 'string', 'max:100', 'distinct'],
'final' => ['required', 'array', 'min:1', 'max:10'],
'final.*' => ['required', 'string', 'max:100', 'distinct'],
], ['first.required' => '请至少选择一名初审人员。', 'final.required' => '请至少选择一名复审人员。']);
$this->reviewers->save($data, user());
return redirect()->route('system-settings.workflow-reviewers.index')->with('success', '审核人员已保存,立即对待审核申请生效。');
}
}