model = new MenuModel(); } public function __invoke(ServerRequestInterface $request) { $companyId = $request->getAttribute('id'); if (!is_numeric($companyId) || (int)$companyId <= 0) { return ResponseLib::sendFail("Invalid company_id", [], "E_VALIDATE")->withStatus(400); } $menuItems = $this->model->getMenu((int)$companyId); if (!$menuItems) { return ResponseLib::sendFail("Failed to Retrieve Menu", [], "E_DATABASE")->withStatus(500); } $cardapio = []; foreach ($menuItems as $item) { $categoria = $item['category_name']; if (!isset($cardapio[$categoria])) { $cardapio[$categoria] = [ 'categoria' => $categoria, 'produtos' => [] ]; } $cardapio[$categoria]['produtos'][] = [ 'nome' => $item['product_name'], 'preco' => 'R$ ' . number_format((float)$item['product_price'], 2, ',', ''), 'descricao' => $item['description_text'] ?? '' ]; } return ResponseLib::sendOk(array_values($cardapio)); } }