static function updateProducto($productoDto) { $producto = BaseDao::getProductoById($productoDto->id); $result = new Result(); try { $transaction = GenericDao::beginTransaction(); $producto->categoriaId = $productoDto->categoriaId; $producto->nombre = $productoDto->nombre; $producto->descripcion = $productoDto->descripcion; $producto->terminos = $productoDto->terminos; $producto->enabled = $productoDto->enabled; $producto->updateDate = date("Y-m-d H:i:s", time()); if ($producto->orden != $productoDto->orden) { $productos = $data = BaseDao::getAllProductos(); $productosFiltered = Phinq::create($productos)->orderBy(function ($item) { return $item->orden; })->where(function ($item) use($productoDto) { return $item->id != $productoDto->id && $item->orden >= $productoDto->orden; })->toArray(); $firstOrden = $productoDto->orden; foreach ($productosFiltered as $cf) { $firstOrden++; $cf->orden = $firstOrden; BaseDao::updateCategoria($cf, $transaction); } } $producto->orden = $productoDto->orden; BaseDao::updateProducto($producto, $transaction); $transaction->commit(); } catch (\Exception $ex) { $transaction->rollBack(); $result->hasErrors = true; $result->messages = array($ex->getMessage()); } $response = new Response($result, NULL); return json_encode($response); }