Slide 53
Slide 53 text
public function handle(ServerRequestInterface $request): ResponseInterface
{
$actor = $this->appActor;
$post = $request->getParsedBody();
if (! isset($post['tickets'])) {
return new JsonResponse(['error' => 'tickets is required'], 400);
}
$eventName = $request->getAttribute('name');
$future = $actor->root->requestFuture(
$actor->actorRef,
new EventDescription($eventName, (int) $post['tickets']),
2000
);
$fr = $future->result();
if ($fr->error() !== null) {
return new JsonResponse(['error' => $fr->error()], 400);
}
$v = $fr->value();
return match (true) {
$v instanceof EventCreated => new JsonResponse(['message' => 'event created', 'event' => $eventName]),
$v instanceof EventExists => new JsonResponse(['message' => 'event exists', 'event' => $eventName], 409),
default => new JsonResponse(['message' => 'unknown'], 400),
};
}