X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/1e3b9ee07ec8ed4dd72263248a08772a4e793e81..820f54373e665a92061edc3decf33e095ecb2678:/demo/src/Controlador/AutorizacionController.cs diff --git a/demo/src/Controlador/AutorizacionController.cs b/demo/src/Controlador/AutorizacionController.cs index c43e71f..6bc263a 100644 --- a/demo/src/Controlador/AutorizacionController.cs +++ b/demo/src/Controlador/AutorizacionController.cs @@ -1,154 +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); - - - - //Seteo prestacion - Prestacion prestacion = new Prestacion(); - prestacion.Codigo=codPrestacion; - if (null==(aut.Prestacion = (Prestacion)this.ObjectSetToArrayList( this.Db.get(prestacion) )[0])) - codigosOk = false; - - //Seteo prestador - Prestador prestador = new Prestador(); - prestador.Cuit=cuitPrestador; - if (null==(aut.Prestador = (Prestador)this.ObjectSetToArrayList( this.Db.get(prestador) )[0])) - codigosOk=false; - - - //Seteo afiliado - Afiliado afiliado = new Afiliado(codAfiliado); - if (null==(aut.Afiliado = ((Afiliado)this.ObjectSetToArrayList( this.Db.get(afiliado) )[0]))) - codigosOk=false; - - //Seteo fecha de vencimiento como dentro de 60 días - aut.FechaVencimiento = DateTime.Now.AddDays(60); - - - aut.Observaciones = observaciones; - - #warning Grabar en autorizacionController:ver manejo de codigos!!!! - - if (codigosOk) this.Db.set(aut); - - return codigosOk; - } - + } + #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 - Prestacion prestacion = new Prestacion(); - prestacion.Codigo=codPrestacion; - if (null==(aut.Prestacion = (Prestacion)this.ObjectSetToArrayList( this.Db.get(prestacion) )[0])) - codigosOk = false; - - //Seteo prestador - Prestador prestador = new Prestador(); - prestador.Cuit=cuitPrestador; - if (null==(aut.Prestador = (Prestador)this.ObjectSetToArrayList( this.Db.get(prestador) )[0])) - codigosOk=false; - - - //Seteo afiliado - Afiliado afiliado = new Afiliado(codAfiliado); - if (null==(aut.Afiliado = ((Afiliado)this.ObjectSetToArrayList( this.Db.get(afiliado) )[0]))) - 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); - - 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 = afiliado.VerificarCobertura(codPrestacion); - } - catch + porcentajeDeCobertura = aut.Afiliado.VerificarCobertura(codPrestacion); + } + 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)); @@ -158,21 +197,105 @@ namespace Controlador return ObjectSetToArrayList (result); } - - - - #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 - - #endregion Métodos Privados - - } -} + + 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 + + } +}