69 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\SystemSettings;
use App\Support\CourierOnboardingReviewers;
use App\Support\CourierQuoteWorkflowPermissions;
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(),
'quotePermissions' => app(CourierQuoteWorkflowPermissions::class)->settings(),
'quoteHistory' => app(CourierQuoteWorkflowPermissions::class)->history(),
]);
}
public function search(Request $request)
{
$data = $request->validate(['q' => ['required', 'string', 'min:1', 'max:50']]);
try {
$people = $request->query('workflow') === 'quote'
? app(CourierQuoteWorkflowPermissions::class)->search(trim($data['q']))
: $this->reviewers->search(trim($data['q']));
return response()->json(['people' => $people])->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', '审核人员已保存,立即对待审核申请生效。');
}
public function updateQuote(Request $request)
{
$data = $request->validate([
'initiators' => ['required', 'array', 'min:1', 'max:10'],
'initiators.*' => ['required', 'string', 'max:100', 'distinct'],
'reviewers' => ['required', 'array', 'min:1', 'max:10'],
'reviewers.*' => ['required', 'string', 'max:100', 'distinct'],
]);
app(CourierQuoteWorkflowPermissions::class)->save($data, user()->name, (int) user_id());
return redirect()->route('system-settings.workflow-reviewers.index')->with('success', '报价变价发起和审核人员已保存,立即对未完成变价生效。');
}
}