model = new OrderItemModel(); } public function __invoke(ServerRequestInterface $request) { $body = json_decode((string)$request->getBody(), true) ?? []; try { v::key('company_id', v::intType()->positive()) ->key('order_id', v::intType()->positive()) ->key('product_id', v::intType()->positive()) ->key('kitchen_note', v::optional(v::stringType()), false) ->assert($body); } catch (ValidationException $e) { return ResponseLib::sendFail("Validation failed: " . $e->getFullMessage(), [], "E_VALIDATE")->withStatus(401); } $companyId = (int) $body['company_id']; $orderId = (int) $body['order_id']; $productId = (int) $body['product_id']; $kitchenNote = $body['kitchen_note'] ?? ''; $created = $this->model->createOrderItem($orderId, $productId, $companyId, $kitchenNote); return $created ? ResponseLib::sendOk(['created' => true, 'order_item_id' => $created]) : ResponseLib::sendFail("Failed to Create Order Item", [], "E_DATABASE")->withStatus(500); } }