예제 #1
0
 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);
 }