Update($); GenericSvc::SaveMultipleOperations(); return true; } catch(\Exception $e){ GenericSvc::UndoMultipleOperations(); throw $e; } } public function GuardarNuevo($registro) { $Svc = new Svc(ConnectionEnum::DEFAULT); try { GenericSvc::BeginMultipleOperations(ConnectionEnum::DEFAULT); // Asegurarse de generar un registro nuevo $registro->Id = 0; $ = new Dto( ); $nuevo = $Svc->Insert($); if (!isset($nuevo) || $nuevo->Id <= 0) { GenericSvc::UndoMultipleOperations(); throw new \Exception("Ha ocurrido un problema al intentar guardar el registro", 1); } GenericSvc::SaveMultipleOperations(); return true; } catch(\Exception $e){ GenericSvc::UndoMultipleOperations(); throw $e; } } public function Buscar($filtros) { // Por defecto, buscamos la información para la grilla en la // vista que pudiera existir, en caso contrario, buscamos // la información en la tabla // Obs: Para las "Vistas de base de datos" que llenen la grilla, // se debe cumplir la convención de que contendrá un JOIN // para cada llave foránea y un campo con la descripción // de la tabla destino que será el nombre de la llave // sin anteponer "Id". // // Por ejemplo, si la tabla actual es Cliente, y tiene una // llave foránea IdEmpresa (que por convención pertenece a // una tabla llamada "Empresa"), entonces se asumirá que // existe una vista VWCliente que será como sigue: // // CREATE VIEW VWCliente AS // SELECT // c.IdCliente, c.xxxxxxxxxx ...., e.IdEmpresa, e.Descripcion as Empresa // FROM Cliente c // JOIN Empresa e ON c.IdEmpresa = e.IdEmpresa $Svc = new Svc(ConnectionEnum::DEFAULT); $bindings = []; $result = $Svc->GetBy( bindings: $bindings, avoidNull: true ); return $result; } public function SePuedeEliminar($Id) { $mensaje = ""; $mensajes = $this->ValidarEliminar($Id); if (count($mensajes) > 0) { $mensaje = implode('
', $mensajes); } return $mensaje; } public function Eliminar($Id) { GenericSvc::BeginMultipleOperations(ConnectionEnum::DEFAULT); try { // Eliminamos en cascada $this->EliminarElementosDependientes($Id); $Svc = new Svc(ConnectionEnum::DEFAULT); if ($this->EliminacionLogica) { $Svc->LogicDelete($Id); } else { $Svc->Delete($Id); } GenericSvc::SaveMultipleOperations(); } catch (\Exception $e) { GenericSvc::UndoMultipleOperations(); throw new BusinessException(ExceptionCodesEnum::ERR_DATA_DELETE, 'al intentar eliminar el registro de '); } return ''; } public function ObtenerData($Id = 0, $NombreIdPadre = '', $ValorIdPadre = -1) { $data = []; if ($Id <> 0) { // Obtener el elemento principal $Svc = new Svc(ConnectionEnum::DEFAULT); $elemento = $Svc->Find($Id); $data['Elemento'] = $elemento; } else { if ($NombreIdPadre != '' && $ValorIdPadre > 0) { $elemento = new Dto( Id: 0 ); $ref = new ReflectionClass(Dto::class); $ref->getProperty($NombreIdPadre)->setValue($elemento, $ValorIdPadre); $data['Elemento'] = $elemento; } else { $data['Elemento'] = new Dto( Id: 0 ); } } return (object)$data; } }