]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blobdiff - demo/src/Dominio/Autorizacion.cs
* Copio la direccion cuando creo un Afiliado en base a un Solicitante
[z.facultad/75.10/miklolife.git] / demo / src / Dominio / Autorizacion.cs
index 554b129c3da40996128f91bb232e2a6df57bc4da..2d93c4e6dd7ac4f247a5907db12a567fa78d7629 100644 (file)
@@ -5,6 +5,7 @@ namespace Dominio
        {
                using System;
                using Dominio.Planes;
+               using Dominio.Afiliados;
 
                #region Clase Autorizacion
 
@@ -12,25 +13,32 @@ namespace Dominio
                {
                        #region Campos privados
                        
-                       private int _codigo;
-                       private float _porcentajeCobertura;
-                       private DateTime _fechaSolicitud;
-                       private DateTime _fechaRealizacion;
-                       private DateTime _fechaVencimiento;
-                       private bool _aprobada;
-                       private string _fundamentosResolucion;
-                       private Prestador _prestador;
-                       private Prestacion _prestacion;
+                       private int _codigo = int.MinValue;
+                       private float _porcentajeCobertura = 0;
+                       private DateTime _fechaSolicitud = DateTime.MinValue;
+                       private DateTime _fechaRealizacion = DateTime.MinValue;
+                       private DateTime _fechaVencimiento = DateTime.MinValue;
+                       private bool _aprobada = false;
+                       private string _fundamentosResolucion = string.Empty;
+                       private Prestador _prestador = null;
+                       private Prestacion _prestacion = null;
+                       private Afiliado _afiliado = null;
                        
                        #endregion Campos privados
 
                        #region Propiedades Públicas
-
+       
                        public int Codigo
                        {
                                get { return this._codigo; }
                                set { this._codigo = value; }
                        }
+                       
+                       public Afiliado Afiliado
+                       {
+                               get { return this._afiliado; }
+                               set { this._afiliado = value; }
+                       }
 
                        public float PorcentajeCobertura
                        {
@@ -84,43 +92,55 @@ namespace Dominio
 
                        #region Constructores
 
-                       public Autorizacion (Cobertura c, Prestador p, DateTime solicitud)
+                       public Autorizacion( DateTime fechaSolicitud )
                        {
-                               /* TODO */
-                               _codigo = 0;
-                               _porcentajeCobertura = c.Porcentaje;
-                               _fechaSolicitud = solicitud;
-                               _aprobada = false;
-                               _prestador = p;
-                               _prestacion = c.Prestacion;
+                               this.FechaSolicitud = fechaSolicitud;
                        }
 
-                       public Autorizacion (Autorizacion auth)
+                       //GR. Lo agrego por comodidad para hacer consultas a db4o
+                       public Autorizacion( int codigo )
+                       {
+                               this.Codigo = codigo;
+                       }
+
+                       //Se necesita alguno vacio por tema de consultas en db4.
+                       public Autorizacion()\r
                        {
-                               _codigo = auth._codigo;
-                               _porcentajeCobertura = auth._porcentajeCobertura;
-                               _fechaSolicitud = auth._fechaSolicitud;
                        }
 
                        #endregion Constructores
 
                        #region Métodos Públicos
 
-                       public Autorizacion.Estado getEstado( )
-                       {
-                               return getEstado( DateTime.Now );
-                       }
+                       public abstract Autorizacion.Estado getEstado( DateTime fecha );
 
-                       public Autorizacion.Estado getEstado( DateTime fecha )
+                       public Autorizacion.Estado getEstado( )
                        {
-
-                               return 0;
+                               return this.getEstado( DateTime.Now );
                        }
 
                        public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
                        {
+                               this.FundamentosResolucion = fundamentosResolucion;
+                               this.PorcentajeCobertura = porcentajeCobertura;
                        }
                        
+                       public override string ToString()\r
+                       {\r
+                               string strAut = string.Empty;\r
+\r
+                               strAut += "Tipo: " + this.GetType().Name + "\n";\r
+                               \r
+                               System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties();\r
+                               foreach ( System.Reflection.PropertyInfo property in properties )\r
+                               {\r
+                                       strAut += property.Name + " = " + property.GetValue( this, null ) + "\n";\r
+                               }\r
+                       \r
+                               return strAut;\r
+                       }\r
+
+
                        #endregion Métodos Públicos
 
                        #region Estados de una autorización
@@ -131,7 +151,9 @@ namespace Dominio
                                Aprobada,
                                Rechazada,
                                Realizada,
-                               Vencida
+                               Vencida,
+                               Invalida,       //Corresponde a inconsistencia de datos en el sistema
+                               Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
                        }
 
                        #endregion Estados de una autorización
@@ -146,8 +168,9 @@ namespace Dominio
                        #region Campos Privados
                        
                        private string _observaciones;
-                       private DateTime _fechaResolucion;
-                       
+                       private DateTime _fechaResolucion = DateTime.MinValue;
+                       private int _nroDeLegajo = int.MinValue;                
+       
                        #endregion Campos Privados
 
                        #region Propiedades Públicas
@@ -163,27 +186,177 @@ namespace Dominio
                                get { return this._fechaResolucion; }
                                set { this._fechaResolucion = value; }
                        }
+                       
+                       public int NroDeLegajo
+                       {
+                               get { return this._nroDeLegajo ;  }
+                               set { this._nroDeLegajo = value ; }
 
+                       }
                        #endregion Propiedades Públicas
 
                        #region Constructores
 
-                       public AutorizacionManual (Autorizacion auth):base (auth)
+                       public AutorizacionManual( DateTime fechaSolicitud )
+                               : base( fechaSolicitud )
+                       {
+                       }
+
+                       public AutorizacionManual()\r
+                       {
+                       }
+                       
+                       //para consultas a db4o
+                       public AutorizacionManual( int codigo )
                        {
+                               this.Codigo = codigo;
                        }
 
                        #endregion Constructores
+
+                       #region Métodos Públicos
+                       
+                       public override Autorizacion.Estado getEstado( DateTime fecha )
+                       {
+                               Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
+
+                               //Evalúo Fecha SOLICITUD
+                               if ( this.FechaSolicitud != DateTime.MinValue )
+                               {
+                                       if ( this.FechaSolicitud <= fecha )
+                                       {
+                                               //Evalúo Fecha RESOLUCIÓN
+                                               if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
+                                               {
+                                                       //Evalúo si está APROBADA
+                                                       if ( this.Aprobada )
+                                                       {
+                                                               //Evalúo Fecha REALIZACIÓN
+                                                               if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
+                                                               {
+                                                                       estado = Autorizacion.Estado.Realizada;
+                                                               }
+                                                               else
+                                                               {
+                                                                       //Aprobada pero NO realizada
+                                                                       //Evalúo Fecha VENCIMIENTO
+                                                                       if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
+                                                                       {
+                                                                               estado = Autorizacion.Estado.Vencida;
+                                                                       }
+                                                                       else
+                                                                               //Sin vencer
+                                                                               estado = Autorizacion.Estado.Aprobada;
+                                                               }
+                                                       }
+                                                       else
+                                                               //DESAPROBADA
+                                                       {
+                                                               if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
+                                                               {
+                                                                       estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
+                                                               }
+                                                               else
+                                                                       estado = Autorizacion.Estado.Rechazada;
+                                                       }
+                                               }
+                                               else
+                                                       //No está resuelta
+                                                       if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
+                                                               estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
+                                                       else 
+                                                               estado = Autorizacion.Estado.Invalida;
+                                       }
+                                       else
+                                               //FechaSolicitud > fecha
+                                               estado = Autorizacion.Estado.Inexistente;
+                               }
+                               else
+                                       //FechaSolicitud no seteada
+                                       estado = Autorizacion.Estado.Invalida;
+
+                               return estado;
+                       }
+
+                       #endregion Métodos Públicos
                }
 
                public class AutorizacionAutomatica : Autorizacion
                {
                        #region Constructores
 
-                       public AutorizacionAutomatica (Autorizacion auth):base (auth)
+                       public AutorizacionAutomatica( DateTime fechaSolicitud )
+                               : base( fechaSolicitud )
+                       {
+                       }
+                       
+                       public AutorizacionAutomatica()         
+                       {
+                       }
+
+                       //para consultas a db4o
+                       public AutorizacionAutomatica( int codigo )
                        {
+                               this.Codigo = codigo;
                        }
 
                        #endregion Constructores
+
+                       #region Métodos Públicos
+
+                       public override Autorizacion.Estado getEstado( DateTime fecha )
+                       {
+                               Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
+
+                               //Evalúo Fecha SOLICITUD
+                               if ( this.FechaSolicitud != DateTime.MinValue )
+                               {
+                                       if ( this.FechaSolicitud <= fecha )
+                                       {
+                                               //Evalúo si está APROBADA
+                                               if ( this.Aprobada )
+                                               {
+                                                       //Evalúo Fecha REALIZACIÓN
+                                                       if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
+                                                       {
+                                                               estado = Autorizacion.Estado.Realizada;
+                                                       }
+                                                       else
+                                                       {
+                                                               //Aprobada pero NO realizada
+                                                               //Evalúo Fecha VENCIMIENTO
+                                                               if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
+                                                               {
+                                                                       estado = Autorizacion.Estado.Vencida;
+                                                               }
+                                                               else
+                                                                       //Sin vencer
+                                                                       estado = Autorizacion.Estado.Aprobada;
+                                                       }
+                                               }
+                                               else
+                                                       //DESAPROBADA
+                                               {
+                                                       if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
+                                                       {
+                                                               estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
+                                                       }
+                                                       else
+                                                               estado = Autorizacion.Estado.Rechazada;
+                                               }
+                                       }
+                                       else
+                                               //FechaSolicitud > fecha
+                                               estado = Autorizacion.Estado.Inexistente;
+                               }
+                               else
+                                       //FechaSolicitud no seteada
+                                       estado = Autorizacion.Estado.Invalida;
+
+                               return estado;
+                       }
+
+                       #endregion Métodos Públicos
                }
 
                #endregion Clases derivadas de Autorizacion