static function createCategoriaNovedad($categoriaNovedadDto) { $categoriaNovedad = new CategoriaNovedad(NULL, date("Y-m-d H:i:s", time()), TRUE, $categoriaNovedadDto->nombre, $categoriaNovedadDto->descripcion, $categoriaNovedadDto->orden); $transaction = NULL; $result = new Result(); $lastOrden = $categoriaNovedadDto->orden; try { $transaction = GenericDao::beginTransaction(); $categoriasNovedad = $data = BaseDao::getAllCategoriasNovedad(); if ($lastOrden == 0 || $lastOrden == null) { $lastOrden = Phinq::create($categoriasNovedad)->max(function ($item) { return $item->orden; }); $categoriaNovedad->orden = $lastOrden == null ? 1 : ++$lastOrden->orden; } else { $categoriasNovedadFiltered = Phinq::create($categoriasNovedad)->where(function ($item) use($categoriaNovedadDto) { return $item->orden >= $categoriaNovedadDto->orden; })->orderBy(function ($item) { return $item->orden; })->toArray(); foreach ($categoriasNovedadFiltered as $cf) { $lastOrden++; $cf->orden = $lastOrden; BaseDao::updateCategoriaNovedad($cf, $transaction); } } $categoriaNovedad->id = BaseDao::createCategoriaNovedad($categoriaNovedad, $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); }