static function createEmpresa($empresaDto) { $empresa = new Empresa(NULL, date("Y-m-d H:i:s", time()), TRUE, $empresaDto->nombre, $empresaDto->descripcion, null, $empresaDto->orden); $transaction = NULL; $result = new Result(); $lastOrden = $empresaDto->orden; try { $transaction = GenericDao::beginTransaction(); $empresas = $data = BaseDao::getAllEmpresas(); if ($lastOrden == 0 || $lastOrden == null) { $lastOrden = Phinq::create($empresas)->max(function ($item) { return $item->orden; }); $empresa->orden = $lastOrden == null ? 1 : ++$lastOrden->orden; } else { $empresasFiltered = Phinq::create($empresas)->where(function ($item) use($empresaDto) { return $item->orden >= $empresaDto->orden; })->orderBy(function ($item) { return $item->orden; })->toArray(); foreach ($empresasFiltered as $cf) { $lastOrden++; $cf->orden = $lastOrden; BaseDao::updateEmpresa($cf, $transaction); } } $empresa->id = BaseDao::createEmpresa($empresa, $transaction); if (FileManager::fileLoaded()) { $empresa->img = 'empresa_' . $empresa->id . "." . FileManager::getFileExtension(); BaseDao::updateEmpresa($empresa, $transaction); FileManager::saveFile('empresas', 'empresa', $empresa->id); } $transaction->commit(); } catch (\Exception $ex) { $transaction->rollBack(); $result->hasErrors = true; $result->messages = array($ex->getMessage()); } $response = new Response($result, NULL); return json_encode($response); }