From b674f20b66a5a72d55c80bb6d14bd3b673013442 Mon Sep 17 00:00:00 2001 From: Guillermo Rugilo Date: Thu, 7 Jul 2005 01:22:21 +0000 Subject: [PATCH] =?utf8?q?Bocha=20de=20cosas=20dif=C3=ADciles=20y=20largas?= =?utf8?q?=20de=20explicar=20:P?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../RecibirPrestacionesController.cs | 95 ++++++-- demo/src/Reportes/ConsumoAfiliadosReport.cs | 77 ++++++ demo/src/Reportes/InfoPrestacionesAdmin.cs | 5 + demo/src/Reportes/InfoPrestacionesReport.cs | 2 - .../Reportes/LineaInfoPrestacionesReport.cs | 219 +++++++++++++++++- .../Reportes/PrestacionesRealizadasReport.cs | 159 +++++++++++++ 6 files changed, 534 insertions(+), 23 deletions(-) diff --git a/demo/src/Controlador/RecibirPrestacionesController.cs b/demo/src/Controlador/RecibirPrestacionesController.cs index e068778..838c82e 100644 --- a/demo/src/Controlador/RecibirPrestacionesController.cs +++ b/demo/src/Controlador/RecibirPrestacionesController.cs @@ -7,6 +7,8 @@ using Dominio; using Dominio.Autorizaciones; using Reportes; +using com.db4o; + #endregion Usings namespace Controlador @@ -27,24 +29,20 @@ namespace Controlador #region Campos Privados - private ConsumoAfiliadosReport _reporteConsumo = null; - private PrestacionesRealizadasReport _reporteAprobaciones = null; + private ConsumoAfiliadosReport _reporteConsumo = new ConsumoAfiliadosReport(); + private PrestacionesRealizadasReport _reporteAprobaciones = new PrestacionesRealizadasReport(); #endregion Campos Privados - #region Métodos Públicos - - /// - /// Dispara el proceso de recepción y procesamiento de la info recibida de los Presadores - /// - public void procesarInfoRecibida() + #region Creacion de Datos en la BD + public void InsertarDatosNecesarios() { - try + //PRESTADOR + Prestador pre = new Prestador(); + pre.Cuit = "30-12345678-1"; + ObjectSet os = this.Db.get( pre ); + if ( (os == null) || (os.size() == 0) ) { - #region Creacion de Prestador para test - //Para test: - /*Prestador pre = new Prestador(); - pre.Cuit = "30-12345678-1"; Dominio.SDireccion dir; dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = ""; dir.Numero = 1234; dir.Piso = 0; dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL; @@ -55,10 +53,38 @@ namespace Controlador pre.Nombre = "Clinica San Camilo"; pre.Password = "camilo"; pre.Zona = new SZona( "Caballito", "Zona de Caballito" ); - this.Db.set( pre );*/ - //Para test - #endregion Creacion de Prestador para test + this.Db.set( pre ); + } + //AUTORIZACIONES + AutorizacionAutomatica a = new AutorizacionAutomatica(); + a.Codigo = 123; + os = this.Db.get( a ); + if ( (os == null) || (os.size() == 0) ) + { + a.Afiliado = new Dominio.Afiliados.Afiliado( 987 ); + a.Prestacion = new Prestacion( "B01AC06" ); + a.Prestador = pre; + a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo + a.FechaRealizacion = DateTime.MinValue; + a.FechaVencimiento = a.FechaSolicitud.AddMonths( 2 ); // 20 de julio, aprox + a.Aprobada = true; + a.PorcentajeCobertura = 12.5F; + this.Db.set( a ); + } + } + + #endregion Creacion de Datos en la BD + + #region Métodos Públicos + + /// + /// Dispara el proceso de recepción y procesamiento de la info recibida de los Presadores + /// + public void procesarInfoRecibida() + { + try + { //1. Obtener todos los prestadores ArrayList prestadores = this.ObjectSetToArrayList( this.Db.get(new Prestador()) ); @@ -83,7 +109,7 @@ namespace Controlador if ( (ip.ValidarFormato()) && ( ip.CuitPrestador == p.Cuit ) ) { //OK ip.ValidarLineas( p ); //Las marca como aprobadas/rechazadas - this.ProcesarLineas( ip ); + this.ProcesarLineas( p, ip ); ipAdmin.MoverArchivoAceptado( ip ); this.NotificarPrestador( NotificacionPrestador.Tipo.ProcesoExitoso, ip ); } @@ -121,9 +147,23 @@ namespace Controlador /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas. /// /// Reporte del cual se porcesarán las lineas - private void ProcesarLineas( InfoPrestacionesReport ip ) + private void ProcesarLineas( Prestador p, InfoPrestacionesReport ip ) { - //this._reporteAprobaciones = new + foreach ( LineaInfoPrestacionesReport linea in ip.Lineas ) + { + this._reporteAprobaciones.AgregarInfo( p, ip.FechaEnvio, linea ); + + if ( linea.Aprobada ) + { + //actualizo en el sistema + Autorizacion a = this.getAutorizacion( linea.CodigoAutorizacion ); + a.FechaRealizacion = linea.FechaRealizacion; + this.Db.set( a ); + + //agego info al reporte de consumo + this._reporteConsumo.AgregarInfo( p, linea ); + } + } } private void NotificarPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip ) @@ -136,6 +176,23 @@ namespace Controlador } + + private Autorizacion getAutorizacion( int codigo ) + { + ArrayList al = new ArrayList(); + + al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) ); + Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual; + + if ( a == null ) + { + al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) ); + a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica; + } + + return a; + } + #endregion Métodos Privados } diff --git a/demo/src/Reportes/ConsumoAfiliadosReport.cs b/demo/src/Reportes/ConsumoAfiliadosReport.cs index 83e278b..ddf781c 100644 --- a/demo/src/Reportes/ConsumoAfiliadosReport.cs +++ b/demo/src/Reportes/ConsumoAfiliadosReport.cs @@ -1,4 +1,10 @@ using System; +using System.Collections; +using System.Xml; +using Dominio.Autorizaciones; +using Dominio.Afiliados; +using com.db4o; + namespace Reportes { @@ -7,8 +13,79 @@ namespace Reportes /// public class ConsumoAfiliadosReport { + #region Constructores + public ConsumoAfiliadosReport() { + XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); + xmlDoc.AppendChild(xmlDeclaration); + + XmlElement root = this.xmlDoc.CreateElement( "reporteConsumo" ); + root.SetAttribute( "fechaGeneracion", DateTime.Now.ToString( "yyyy-MM-dd" ) ); + + root.AppendChild( xmlDoc.CreateElement( "lineas" ) ); + + xmlDoc.AppendChild( root ); + } + + #endregion Constructores + + private XmlDocument xmlDoc = new XmlDocument(); + + #region Metodos Publicos + + public void AgregarInfo( Prestador p, LineaInfoPrestacionesReport lineaIp ) + { + + } + + #endregion Metodos Publicos + + + #region Metodos privados + + private Autorizacion getAutorizacion( int codigo ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + + ArrayList al = new ArrayList(); + + al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) ); + Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual; + + if ( a == null ) + { + al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) ); + a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica; + } + + this.db.close(); + this.db = null; + + return a; } + + #endregion Metodos privados + + #region DB + private com.db4o.ObjectContainer db = null; + + private ArrayList ObjectSetToArrayList (ObjectSet result) + { + ArrayList lst = new ArrayList (); + Object s; + if (result == null) + return lst; + + while ((s = result.next ()) != null) + { + lst.Add (s); + } + return lst; + } + + #endregion DB + + } } diff --git a/demo/src/Reportes/InfoPrestacionesAdmin.cs b/demo/src/Reportes/InfoPrestacionesAdmin.cs index 473490e..fb6ff2e 100644 --- a/demo/src/Reportes/InfoPrestacionesAdmin.cs +++ b/demo/src/Reportes/InfoPrestacionesAdmin.cs @@ -60,12 +60,17 @@ namespace Reportes { if ( reporteConsumo == null ) return; + else + Console.WriteLine( reporteConsumo.ToString() ); } public void EnviarReporte( PrestacionesRealizadasReport informeAprobaciones ) { if ( informeAprobaciones == null ) return; + else + informeAprobaciones.Serializar(); + } public void MoverArchivoAceptado( InfoPrestacionesReport ip ) diff --git a/demo/src/Reportes/InfoPrestacionesReport.cs b/demo/src/Reportes/InfoPrestacionesReport.cs index a127f1c..6ca31d6 100644 --- a/demo/src/Reportes/InfoPrestacionesReport.cs +++ b/demo/src/Reportes/InfoPrestacionesReport.cs @@ -32,8 +32,6 @@ namespace Reportes #region Campos Privados - private bool _esBienFormado = true; - private string _pathArchivo = string.Empty; private string _cuitPrestador; private DateTime _fechaEnvio; diff --git a/demo/src/Reportes/LineaInfoPrestacionesReport.cs b/demo/src/Reportes/LineaInfoPrestacionesReport.cs index cb87904..61e2533 100644 --- a/demo/src/Reportes/LineaInfoPrestacionesReport.cs +++ b/demo/src/Reportes/LineaInfoPrestacionesReport.cs @@ -1,4 +1,9 @@ using System; +using System.Collections; +using com.db4o; +using Dominio.Afiliados; +using Dominio.Autorizaciones; +//using Dominio.Planes; namespace Reportes { @@ -26,6 +31,7 @@ namespace Reportes #region Campos Privados private bool _aprobada = false; + private bool _existeAutorizacion = false; private string _motivoRechazo = string.Empty; private int _codigoAutorizacion; @@ -48,6 +54,11 @@ namespace Reportes get { return this._aprobada; } } + public bool ExisteAutorizacion + { + get { return this._existeAutorizacion; } + } + /// /// Motivo por el cual se rechazó la línea, si es que se rechazó. /// En caso de haberse aprobado, debe estar vacío @@ -89,6 +100,25 @@ namespace Reportes #endregion Propiedades Públicas + #region DB + private com.db4o.ObjectContainer db = null; + + private ArrayList ObjectSetToArrayList (ObjectSet result) + { + ArrayList lst = new ArrayList (); + Object s; + if (result == null) + return lst; + + while ((s = result.next ()) != null) + { + lst.Add (s); + } + return lst; + } + + #endregion DB + #region Métodos Públicos /// @@ -97,11 +127,196 @@ namespace Reportes /// True si la linea es válida public bool Validar( Dominio.Autorizaciones.Prestador prestador ) { - bool resultado = false; + #region Chequeo de la autorización + + Autorizacion aut = this.getAutorizacion( this.CodigoAutorizacion ); + if ( aut == null ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionInexistente ); + this._existeAutorizacion = false; + return false; + } + else + { + this._existeAutorizacion = true; + + if ( (aut.Prestador == null) || (aut.Prestador.Cuit != prestador.Cuit) ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestadorInvalido ); + return false; + } + + if ( (aut.Prestacion == null) || (aut.Prestacion.Codigo != this.CodigoPrestacion) ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPrestacionInvalida ); + return false; + } + + if ( aut.FechaRealizacion != DateTime.MinValue ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionYaRealizada ); + return false; + } + + if ( aut.getEstado(this.FechaRealizacion) != Autorizacion.Estado.Aprobada ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionNoAprobada ); + return false; + } + + if ( this.TipoAutorizacion.Trim() == "Manual" ) + { + if ( aut.GetType() != typeof(AutorizacionManual) ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido ); + return false; + } + } + else + { + if ( aut.GetType() != typeof(AutorizacionAutomatica) ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionTipoInvalido ); + return false; + } + } + + if ( aut.PorcentajeCobertura != this.PorcentajeCobertura ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AutorizacionPorcentajeInvalido ); + return false; + } + } + + #endregion Chequeo de la autorización + + #region Chequeo de Prestador + if ( (prestador.FechaBaja != DateTime.MinValue) && (prestador.FechaBaja <= this.FechaRealizacion) ) + { + this.MarcarRechazada( MensajeMotivoRechazo.PrestadorDadoDeBaja ); + return false; + } + #endregion Chequeo de Prestador - return resultado; + #region Chequeo del Afiliado + Afiliado a = this.getAfiliado( this.CodigoAfiliado ); + if (a == null) + { + this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoInexistente ); + return false; + } + else + if ( (a.FechaBaja != DateTime.MinValue) && (a.FechaBaja <= this.FechaRealizacion) ) + { + this.MarcarRechazada( MensajeMotivoRechazo.AfiliadoDadoDeBaja ); + return false; + } + #endregion Chequeo del Afiliado + + #region Chequeo de la prestación + + Prestacion p = this.getPrestacion( this.CodigoPrestacion ); + if ( p == null ) + { + this.MarcarRechazada( MensajeMotivoRechazo.PrestacionInexistente ); + return false; + } + else + { + if ( (p.FechaBaja != DateTime.MinValue) && (p.FechaBaja <= this.FechaRealizacion) ) + { + this.MarcarRechazada( MensajeMotivoRechazo.PrestacionDadaDeBaja ); + return false; + } + } + + #endregion Chequeo de la prestación + + this._aprobada = true; + return true; } #endregion Métodos Públicos + + #region Métodos Privados + + private Afiliado getAfiliado( int codigo ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + ArrayList al = this.ObjectSetToArrayList( db.get( new Afiliado(this.CodigoAfiliado) ) ); + + Afiliado a = ( (al.Count == 0)? null : al[0] ) as Afiliado; + this.db.close(); + this.db = null; + + return a; + } + + private Prestacion getPrestacion( string codigo ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + ArrayList al = this.ObjectSetToArrayList( db.get( new Prestacion(this.CodigoPrestacion) ) ); + + Prestacion p = ( (al.Count == 0)? null : al[0] ) as Prestacion; + this.db.close(); + this.db = null; + + return p; + } + + private Autorizacion getAutorizacion( int codigo ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + + ArrayList al = new ArrayList(); + + al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) ); + Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual; + + if ( a == null ) + { + al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) ); + a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica; + } + + this.db.close(); + this.db = null; + + return a; + } + + private void MarcarRechazada( string motivo ) + { + this._aprobada = false; + this._motivoRechazo = motivo; + } + + #endregion Métodos Privados + + } //clase + + #region Motivos de rechazo + + public struct MensajeMotivoRechazo + { + public static string PrestadorDadoDeBaja = "El prestador estaba dado de baja en la fecha de realización de la prestación informada por el prestador"; + public static string AfiliadoDadoDeBaja = "El afiliado estaba dado de baja en la fecha de realización de la prestación informada por el prestador"; + public static string AfiliadoInexistente = "El afiliado informado por el prestador no existe en el Sistema"; + public static string PrestacionDadaDeBaja = "La prestación estaba dada de baja en la fecha de realización de la prestación informada por el prestador"; + public static string PrestacionInexistente = "La prestación informada por el prestador no existe en el Sistema"; + + public static string AutorizacionInexistente = "La autorizacion informada por el prestador no existe en el Sistema"; + public static string AutorizacionPrestadorInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con dicho prestador"; + public static string AutorizacionAfiliadoInvalido = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con el afiliado informado"; + public static string AutorizacionPrestacionInvalida = "La autorizacion informada por el prestador no esta relacionada, en el Sistema, con la prestacion informada"; + public static string AutorizacionYaRealizada = "La autorizacion informada por el prestador ya ha sido realizada, segun los datos del Sistema"; + public static string AutorizacionNoAprobada = "La autorizacion no estaba aprobada, segun los datos del Sistema, en la fecha de realizacion informada por el prestador"; + public static string AutorizacionTipoInvalido = "El tipo de autorizacion informado por el prestador, no coincide con el tipo de autorizacion en el Sistema"; + public static string AutorizacionPorcentajeInvalido = "El porcentaje de cobertura informado por el prestador, es distinto al que se aplicaba al momento de la aprobación de la autorización, segun los datos del Sistema"; + } + + #endregion Motivos de rechazo + + } diff --git a/demo/src/Reportes/PrestacionesRealizadasReport.cs b/demo/src/Reportes/PrestacionesRealizadasReport.cs index 2f7cb0b..96c2a46 100644 --- a/demo/src/Reportes/PrestacionesRealizadasReport.cs +++ b/demo/src/Reportes/PrestacionesRealizadasReport.cs @@ -1,4 +1,9 @@ using System; +using System.Collections; +using System.Xml; +using Dominio.Autorizaciones; +using Dominio.Afiliados; +using com.db4o; namespace Reportes { @@ -11,8 +16,162 @@ namespace Reportes public PrestacionesRealizadasReport() { + XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); + xmlDoc.AppendChild(xmlDeclaration); + + XmlElement root = this.xmlDoc.CreateElement( "informeAprRechazos" ); + root.SetAttribute( "fechaGeneracion", DateTime.Now.ToString( "yyyy-MM-dd" ) ); + + root.AppendChild( xmlDoc.CreateElement( "lineas" ) ); + + xmlDoc.AppendChild( root ); } #endregion Constructores + + private XmlDocument xmlDoc = new XmlDocument(); + + #region Metodos publicos + + public void AgregarInfo( Prestador p, DateTime fechaRecepcionInfo, LineaInfoPrestacionesReport lineaIp ) + { + //LINEA + XmlElement elemLinea = this.xmlDoc.CreateElement( "linea" ); + elemLinea.SetAttribute( "codigoAutorizacion", lineaIp.CodigoAutorizacion.ToString() ); + elemLinea.SetAttribute( "aprobada", lineaIp.Aprobada.ToString().ToLower() ); + + //tipoAutorizacion + XmlElement elemTipoAut = this.xmlDoc.CreateElement( "tipoAutorizacion" ); + elemTipoAut.InnerText = lineaIp.TipoAutorizacion; + elemLinea.AppendChild( elemTipoAut ); + + //prestador + XmlElement elemPrestador = this.xmlDoc.CreateElement( "prestador" ); + XmlElement elemCuit = this.xmlDoc.CreateElement( "CUIT" ); + elemCuit.InnerText = p.Cuit.ToString().Trim(); + elemPrestador.AppendChild( elemCuit ); + XmlElement elemNombrePrestador = this.xmlDoc.CreateElement( "nombre" ); + elemNombrePrestador.InnerText = p.Nombre.ToString().Trim(); + elemPrestador.AppendChild( elemNombrePrestador ); + + elemLinea.AppendChild( elemPrestador ); + + //codigoPrestacion + XmlElement elemCodPrestacion = this.xmlDoc.CreateElement( "codigoPrestacion" ); + elemCodPrestacion.InnerText = lineaIp.CodigoPrestacion.Trim(); + elemLinea.AppendChild( elemCodPrestacion ); + + //codigoAfiliado + XmlElement elemCodAfiliado = this.xmlDoc.CreateElement( "codigoAfiliado" ); + elemCodAfiliado.InnerText = lineaIp.CodigoAfiliado.ToString().Trim(); + elemLinea.AppendChild( elemCodAfiliado ); + + //porcentajeCoberturaReclamado + XmlElement elemPorcentajeReclamado = this.xmlDoc.CreateElement( "porcentajeCoberturaReclamado" ); + elemPorcentajeReclamado.InnerText = lineaIp.PorcentajeCobertura.ToString().Trim(); + elemLinea.AppendChild( elemPorcentajeReclamado ); + + //Campos a completar si es que la autorizacion existe en el sistema + if ( lineaIp.ExisteAutorizacion ) + { + Autorizacion a = this.getAutorizacion( lineaIp.CodigoAutorizacion ); + + //porcentajeCoberturaReal + XmlElement elemPorcentajeReal = this.xmlDoc.CreateElement( "porcentajeCoberturaReal" ); + elemPorcentajeReal.InnerText = a.PorcentajeCobertura.ToString().Trim(); + elemLinea.AppendChild( elemPorcentajeReal ); + + //fechaAprobacion + XmlElement elemFechaAprobacion = this.xmlDoc.CreateElement( "fechaAprobacion" ); + elemFechaAprobacion.InnerText = a.FechaSolicitud.ToString( "yyyy-MM-dd" ); + elemLinea.AppendChild( elemFechaAprobacion ); + + //fechaVencimiento + XmlElement elemFechaVencimiento = this.xmlDoc.CreateElement( "fechaVencimiento" ); + elemFechaVencimiento.InnerText = a.FechaVencimiento.ToString( "yyyy-MM-dd" ); + elemLinea.AppendChild( elemFechaVencimiento ); + } + + //fechaRealizacion + XmlElement elemFechaRealizacion = this.xmlDoc.CreateElement( "fechaRealizacion" ); + elemFechaRealizacion.InnerText = lineaIp.FechaRealizacion.ToString( "yyyy-MM-dd" ); + elemLinea.AppendChild( elemFechaRealizacion ); + + //fechaRecepcionInfo + XmlElement elemFechaRecepcionInfo = this.xmlDoc.CreateElement( "fechaRecepcionInfo" ); + elemFechaRecepcionInfo.InnerText = fechaRecepcionInfo.ToString( "yyyy-MM-dd" ); + elemLinea.AppendChild( elemFechaRecepcionInfo ); + + if ( ! lineaIp.Aprobada ) + { + //motivoRechazo + XmlElement elemMotivoRechazo = this.xmlDoc.CreateElement( "motivoRechazo" ); + elemMotivoRechazo.InnerText = lineaIp.MotivoRechazo.Trim(); + elemLinea.AppendChild( elemMotivoRechazo ); + } + + //AgregoLINEA + XmlElement lineas = xmlDoc.DocumentElement["lineas"]; + lineas.AppendChild( elemLinea ); + } + + public override string ToString() + { + return xmlDoc.OuterXml; + } + + public void Serializar() + { + XmlTextWriter writer = new XmlTextWriter("c:\\borrame.xml",null); + writer.Formatting = Formatting.Indented; + this.xmlDoc.Save(writer); + + } + + #endregion Metodos publicos + + #region Metodos privados + + private Autorizacion getAutorizacion( int codigo ) + { + this.db = com.db4o.Db4o.openFile("os.yap"); + + ArrayList al = new ArrayList(); + + al = this.ObjectSetToArrayList( db.get( new AutorizacionManual(codigo) ) ); + Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual; + + if ( a == null ) + { + al = this.ObjectSetToArrayList( db.get( new AutorizacionAutomatica(codigo) ) ); + a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica; + } + + this.db.close(); + this.db = null; + + return a; + } + + #endregion Metodos privados + + #region DB + private com.db4o.ObjectContainer db = null; + + private ArrayList ObjectSetToArrayList (ObjectSet result) + { + ArrayList lst = new ArrayList (); + Object s; + if (result == null) + return lst; + + while ((s = result.next ()) != null) + { + lst.Add (s); + } + return lst; + } + + #endregion DB } } -- 2.43.0