updateController = $updateController; } public function handle(Request $request): Response { $data = $request->getParams(); $workflow = $this->updateController->updateWorkflow(intval($request->getParam('id')), $data); return new Response($this->buildWorkflow($workflow)); } public static function getRequestSchema(): array { return [ 'id' => Builder::integer()->required(), 'name' => Builder::string(), 'status' => Builder::string(), ]; } private function buildWorkflow(Workflow $workflow): array { return [ 'id' => $workflow->getId(), 'name' => $workflow->getName(), 'status' => $workflow->getStatus(), 'created_at' => $workflow->getCreatedAt()->format(DateTimeImmutable::W3C), 'updated_at' => $workflow->getUpdatedAt()->format(DateTimeImmutable::W3C), 'steps' => array_map(function (Step $step) { return [ 'id' => $step->getId(), 'type' => $step->getType(), 'key' => $step->getKey(), 'next_step_id' => $step->getNextStepId(), 'args' => $step->getArgs() ?: new stdClass(), ]; }, $workflow->getSteps()), ]; } }