X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/96c548067d0d061d4aacb421b9adeebbb1530fd0..820f54373e665a92061edc3decf33e095ecb2678:/demo/src/Controlador/AutorizacionController.cs diff --git a/demo/src/Controlador/AutorizacionController.cs b/demo/src/Controlador/AutorizacionController.cs index 654ca0b..6bc263a 100644 --- a/demo/src/Controlador/AutorizacionController.cs +++ b/demo/src/Controlador/AutorizacionController.cs @@ -1,179 +1,193 @@ - -#region Usings - -using System; -using System.Collections; - -using Dominio; -using Dominio.Autorizaciones; -using Dominio.Afiliados; - + +#region Usings + +using System; +using System.Collections; + +using Dominio; +using Dominio.Autorizaciones; +using Dominio.Afiliados; + using com.db4o; using com.db4o.query; -#endregion Usings - -namespace Controlador -{ - /// - /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica", - /// "Pedir autorizacion manual" y actualizar "autorizacion manual" - /// - public class AutorizacionController : Controller - { - #region Constructores - - public AutorizacionController(DateTime fechaSolicitud): base() - { - - } - - #endregion Constructores - - #region Campos Privados - - private Autorizacion _currentAutorizacion = null ; - - #endregion Campos Privados - - #region Propiedades privadas - - public Autorizacion CurrentAutorizacion +#endregion Usings + +namespace Controlador +{ + /// + /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica", + /// "Pedir autorizacion manual" y actualizar "autorizacion manual" + /// + public class AutorizacionController : Controller + { + #region Constructores + + public AutorizacionController(DateTime fechaSolicitud): base() + { + + } + + #endregion Constructores + + #region Campos Privados + + private Autorizacion _currentAutorizacion = null ; + + #endregion Campos Privados + + #region Propiedades privadas + + public Autorizacion CurrentAutorizacion { get { return _currentAutorizacion; } - } - #endregion Propiedades privadas - - #region Métodos Públicos - - /// - /// Guarda un pedido de autorizacion manual. - /// - public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador - , int codAfiliado, String observaciones) - { - bool codigosOk = true; - - AutorizacionManual aut = new AutorizacionManual(DateTime.Now); - - #region Se insancia prestador, prestacion y afiliado, y se asocia a aut - //Seteo prestacion - - ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) ); - if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion)) - codigosOk=false; - - //Seteo prestador - al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) ); - if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador)) - codigosOk=false; - - - - //Seteo afiliado - al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) ); - if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado)) - codigosOk=false; - - #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut - //Seteo fecha de vencimiento como dentro de 60 días - aut.FechaVencimiento = DateTime.Now.AddDays(60); - - - aut.Observaciones = observaciones; - - //Signo prox codigo para autorizacion - AutoIncrementable c = new AutoIncrementable (); - using (c) - { - aut.Codigo = c.NextAutorizacion(); - } - - if (codigosOk) this.Db.set(aut); - - return codigosOk; - - } - - //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!! - public Autorizacion obtener(int codigo) - { - //Busco manual - ArrayList al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) ); - Autorizacion a = ((al.Count == 0)? null : al[0] ) as Autorizacion; - - if (null==a) - //Busco automatica, si no hay manual para ese codigo - { - al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) ); - a = ((al.Count == 0)? null : al[0] ) as Autorizacion; - } - return a; - } - + } + #endregion Propiedades privadas + + #region Métodos Públicos + + /// + /// Guarda un pedido de autorizacion manual. + /// + public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador + , int codAfiliado, String observaciones) + { + bool codigosOk = true; + + AutorizacionManual aut = new AutorizacionManual(DateTime.Now); + + #region Se insancia prestador, prestacion y afiliado, y se asocia a aut + //Seteo prestacion + + ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) ); + if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion)) + codigosOk=false; + + //Seteo prestador + al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) ); + if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador)) + codigosOk=false; + + + + //Seteo afiliado + al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) ); + if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado)) + codigosOk=false; + + #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut + //Seteo fecha de vencimiento como dentro de 60 días + aut.FechaVencimiento = DateTime.Now.AddDays(60); + + + aut.Observaciones = observaciones; + + //Signo prox codigo para autorizacion + AutoIncrementable c = new AutoIncrementable (); + using (c) + { + aut.Codigo = c.NextAutorizacion(); + } + + if (codigosOk) this.Db.set(aut); + + return codigosOk; + + } + + //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!! + public Autorizacion obtener(int codigo) + { + //Busco manual + /*ArrayList al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) ); + Autorizacion a = ((al.Count == 0)? null : al[0] ) as Autorizacion;*/ + Query query = Db.query(); + query.constrain(typeof(AutorizacionManual)); + query.descend("_codigo").constrain(codigo); + ObjectSet result = query.execute (); + + ArrayList al = ObjectSetToArrayList (result); + + Autorizacion a = null; + try { + a = ((al.Count == 0)? null : al[0] ) as Autorizacion; + } catch (Exception e) { + Console.WriteLine ("Bad"); + } + Console.WriteLine (a); + + if (null==a) { + Console.WriteLine ("NO EXISTE AUTORIZACION MANUAL DE CODIGO {0}", codigo); + //Busco automatica, si no hay manual para ese codigo + al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) ); + a = ((al.Count == 0)? null : al[0] ) as Autorizacion; + } + return a; + } + public float evaluarAutorizacionAutomatica(String cuitPrestador, String codPrestacion, int codAfiliado, out int codAutorizacion) { - bool codigosOk = true; - float porcentajeDeCobertura = 0; - string fundamentosResolucion = "Todo ok"; - - AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now); - - #region Se insancia prestador, prestacion y afiliado, y se asocia a aut - //Seteo prestacion - - ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) ); - if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion)) - codigosOk=false; - - //Seteo prestador - al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) ); - if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador)) - codigosOk=false; - - - - //Seteo afiliado - al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) ); - if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado)) - codigosOk=false; - - #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut - //Seteo fecha de vencimiento como dentro de 60 días - - - //Seteo fecha de vencimiento como dentro de 60 días - aut.FechaVencimiento = DateTime.Now.AddDays(60); - - try + bool codigosOk = true; + float porcentajeDeCobertura = 0; + string fundamentosResolucion = "Todo ok"; + + AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now); + + #region Se insancia prestador, prestacion y afiliado, y se asocia a aut + //Seteo prestacion + + ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) ); + if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion)) + codigosOk=false; + + //Seteo prestador + al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) ); + if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador)) + codigosOk=false; + + + + //Seteo afiliado + al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) ); + if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado)) + codigosOk=false; + + #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut + //Seteo fecha de vencimiento como dentro de 60 días + + + //Seteo fecha de vencimiento como dentro de 60 días + aut.FechaVencimiento = DateTime.Now.AddDays(60); + + try { porcentajeDeCobertura = aut.Afiliado.VerificarCobertura(codPrestacion); - } - catch + } + catch { #warning verificar cobertura deberia tirar excepcion si explota, o se rechaza //TODO Asignar motivo de rechazo a fundamentosResolucion } - finally + finally { //Si porcentaje es 0, se registra rechazada aut.setResolucion(fundamentosResolucion, porcentajeDeCobertura); - if (codigosOk) - { - this.Db.set(aut); - this._currentAutorizacion=aut; - } - #warning deberia obtener codigo de autorizacion ACA y devolverlo - codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!! - + if (codigosOk) + { + this.Db.set(aut); + this._currentAutorizacion=aut; + } + #warning deberia obtener codigo de autorizacion ACA y devolverlo + codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!! + } return porcentajeDeCobertura; } - - public ArrayList obtenerAutorizacionesPendientes() + + public ArrayList obtenerAutorizacionesPendientes() { Query query = Db.query(); query.constrain(typeof(AutorizacionManual)); @@ -183,92 +197,105 @@ namespace Controlador return ObjectSetToArrayList (result); } - - //PRE: El codigo solicitado tiene que ser de una autorizacion manual. - public bool setResolucionAutorizacionManual(int codAutorizacion, - String fundamentosResolucion, float porcentaje) - { - AutorizacionManual a = this.obtener(codAutorizacion) as AutorizacionManual; - if (null==a) return false; - a.Aprobada = (porcentaje==0)?false:true; - a.PorcentajeCobertura = porcentaje; - a.FundamentosResolucion = fundamentosResolucion; - this.Db.set(a); - - return true; - } - - - #endregion Métodos Públicos - - #region Métodos Privados - - /// - /// Procesa las lineas del reporte una vez que el mismo ha sido validado: - /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. - /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas. - /// - /// Reporte del cual se porcesarán las lineas - - private void InsertarDatosNecesarios() - { + + public ArrayList obtenerAutorizacionesPorAfiliado (int codafiliado) + { + Afiliado a = new Afiliado (codafiliado); + + Query query = Db.query(); + query.constrain(typeof(Autorizacion)); + query.descend("_afiliado").constrain(a); + + ObjectSet result = query.execute (); + + return ObjectSetToArrayList (result); + } + //PRE: El codigo solicitado tiene que ser de una autorizacion manual. + public bool setResolucionAutorizacionManual(int codAutorizacion, + String fundamentosResolucion, float porcentaje) + { + AutorizacionManual a = this.obtener(codAutorizacion) as AutorizacionManual; + if (null==a) return false; + a.Aprobada = (porcentaje==0)?false:true; + a.PorcentajeCobertura = porcentaje; + a.FundamentosResolucion = fundamentosResolucion; + a.FechaResolucion = DateTime.Now; + this.Db.set(a); + + return true; + } + + + #endregion Métodos Públicos + + #region Métodos Privados + + /// + /// Procesa las lineas del reporte una vez que el mismo ha sido validado: + /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. + /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas. + /// + /// Reporte del cual se porcesarán las lineas + + private void InsertarDatosNecesarios() + { return; - //PRESTADOR - Prestador pre = new Prestador(); - pre.Cuit = "11-11111111-1"; - ObjectSet os = this.Db.get( pre ); - if ( (os == null) || (os.size() == 0) ) - { - Dominio.SDireccion dir; - dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = ""; - dir.Numero = 1234; dir.Piso = 0; dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL; - dir.Telefono = "5056-4567"; - pre.Direccion = dir; - pre.Email = @"roberto@sancamilo.com"; - pre.FechaBaja = DateTime.MinValue; - pre.Nombre = "Clinica San Camilo"; - pre.Password = "camilo"; - pre.Zona = new SZona( "Caballito", "Zona de Caballito" ); - this.Db.set( pre ); - } - - Prestacion p = new Prestacion(); - p.Codigo = "mierda" ; - - Categoria c = new Categoria(); - c.Codigo=10; - c.Nombre="categoria 1"; - - p.Categoria = c; - p.Nombre= "hospital de clinicas"; - this.Db.set(p); - - Afiliado a = new Afiliado(69); - a.Apellido = "apellido"; - a.EMail = "afiliado@aaa.com"; - - this.Db.set(a); - - - //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 Métodos Privados - - } -} + //PRESTADOR + Prestador pre = new Prestador(); + pre.Cuit = "11-11111111-1"; + ObjectSet os = this.Db.get( pre ); + if ( (os == null) || (os.size() == 0) ) + { + Dominio.SDireccion dir; + dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = ""; + dir.Numero = 1234; dir.Piso = 0; dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL; + dir.Telefono = "5056-4567"; + pre.Direccion = dir; + pre.Email = @"roberto@sancamilo.com"; + pre.FechaBaja = DateTime.MinValue; + pre.Nombre = "Clinica San Camilo"; + pre.Password = "camilo"; + pre.Zona = new SZona( "Caballito", "Zona de Caballito" ); + this.Db.set( pre ); + } + + Prestacion p = new Prestacion(); + p.Codigo = "mierda" ; + + Categoria c = new Categoria(); + c.Codigo=10; + c.Nombre="categoria 1"; + + p.Categoria = c; + p.Nombre= "hospital de clinicas"; + this.Db.set(p); + + Afiliado a = new Afiliado(69); + a.Apellido = "apellido"; + a.EMail = "afiliado@aaa.com"; + + this.Db.set(a); + + + //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 Métodos Privados + + } +}