$this->agents->all()]); } public function register(Request $request): Response { $displayName = trim((string) ($request->body['display_name'] ?? '')); $role = (string) ($request->body['role'] ?? ''); if ($displayName === '') { return Response::error('Feld "display_name" ist erforderlich.', 422); } try { $result = $this->agents->register($displayName, $role); } catch (InvalidArgumentException $e) { return Response::error($e->getMessage(), 422); } // Der Klartext-API-Key wird nur bei der Registrierung einmalig zurueckgegeben. return Response::json(['agent' => $result['agent'], 'api_key' => $result['api_key']], 201); } /** * @param array $params * @param array $authenticatedAgent */ public function activity(Request $request, array $params, array $authenticatedAgent): Response { if ((int) $params['id'] !== (int) $authenticatedAgent['id']) { return Response::error('Ein Agent darf nur seine eigene Aktivitaet melden.', 403); } $state = (string) ($request->body['state'] ?? ''); if ($state === '') { return Response::error('Feld "state" ist erforderlich.', 422); } $currentTicketId = isset($request->body['current_ticket']) ? (int) $request->body['current_ticket'] : null; $agent = $this->agents->updateActivity((int) $params['id'], $state, $currentTicketId); return Response::json(['agent' => $agent]); } }