Slide 22
Slide 22 text
問題のあるコード
// Controller
public function index(Request $request) {
return $this->service->findUsers($request->context(), $request->all());
}
// Service
public function findUsers(Context $context, array $params) {
// ロジック内で「 HTTP の都合(文字列)」を解釈させられている
$isActive = isset($params['is_active']) && $params['is_active'] === 'true';
$role = UserRole::tryFrom((int)$params['role']);
$dateFrom = isset($params['date_from']) ? Carbon::parse($params['date_from']) : null;
// 本来の Service の責務:コンテキストに基づいて条件の絞り込み
$tenantId = $context->isAdmin()
? ($params['tenant_id'] ?? null)
: $context->tenantId();
return $this->userRepository->search($tenantId, $role, $dateFrom, $isActive);
}