#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 { 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; } 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 { porcentajeDeCobertura = afiliado.VerificarCobertura(codPrestacion); } catch { #warning verificar cobertura deberia tirar excepcion si explota, o se rechaza //TODO Asignar motivo de rechazo a fundamentosResolucion } 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!! } return porcentajeDeCobertura; } public ArrayList obtenerAutorizacionesPendientes() { Query query = Db.query(); query.constrain(typeof(AutorizacionManual)); query.descend("_fechaRealizacion").constrain(DateTime.MinValue); ObjectSet result = query.execute (); 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 } }