getAttribute('user'); if (!$user instanceof User) { $response->getBody()->write( json_encode(['error' => 'unauthenticated']) ); return $response->withStatus(401) ->withHeader('Content-Type', 'application/json'); } $data = json_decode((string) $request->getBody(), true) ?? []; $textId = isset($data['textId']) ? (int) $data['textId'] : null; $name = $data['name'] ?? null; $dateStart = $data['dateStart'] ?? null; $dateEnd = $data['dateEnd'] ?? null; try { $plan = $createPlanUseCase->execute(new CreatePlanRequest( userId: $user->getId(), textId: $textId, name: $name, dateStart: $dateStart, dateEnd: $dateEnd, )); } catch (BadRequestException $exception) { $response->getBody()->write( json_encode(['error' => $exception->getMessage()]) ); return $response->withStatus(400) ->withHeader('Content-Type', 'application/json'); } catch (DomainException $exception) { $response->getBody()->write( json_encode(['error' => $exception->getMessage()]) ); return $response->withStatus(404) ->withHeader('Content-Type', 'application/json'); } $response->getBody()->write(json_encode([ 'id' => $plan->getId(), 'name' => $plan->getName(), ])); return $response->withStatus(201) ->withHeader('Content-Type', 'application/json'); } }