]> git.llucax.com Git - z.facultad/75.10/miklolife.git/commitdiff
Implementacion del MEGA Metodo Super estrella mundialmente conocido como getEstado().
authorGuillermo Rugilo <guillerugilo@yahoo.com.ar>
Thu, 23 Jun 2005 06:19:17 +0000 (06:19 +0000)
committerGuillermo Rugilo <guillerugilo@yahoo.com.ar>
Thu, 23 Jun 2005 06:19:17 +0000 (06:19 +0000)
Le falta el testing.

demo/src/Dominio/Autorizacion.cs

index 554b129c3da40996128f91bb232e2a6df57bc4da..8cdbc23aa23ace6ea9535d28ba603f02f64c2191 100644 (file)
@@ -12,15 +12,15 @@ 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;
                        
                        #endregion Campos privados
 
@@ -84,37 +84,22 @@ namespace Dominio
 
                        #region Constructores
 
-                       public Autorizacion (Cobertura c, Prestador p, DateTime solicitud)
+                       public Autorizacion( int codigo, DateTime fechaSolicitud )
                        {
-                               /* TODO */
-                               _codigo = 0;
-                               _porcentajeCobertura = c.Porcentaje;
-                               _fechaSolicitud = solicitud;
-                               _aprobada = false;
-                               _prestador = p;
-                               _prestacion = c.Prestacion;
-                       }
-
-                       public Autorizacion (Autorizacion auth)
-                       {
-                               _codigo = auth._codigo;
-                               _porcentajeCobertura = auth._porcentajeCobertura;
-                               _fechaSolicitud = auth._fechaSolicitud;
+                               #warning Ver cómo manejar los códigos con DB4O
+                               this.Codigo = codigo;
+                               this.FechaSolicitud = 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 )
@@ -131,7 +116,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
@@ -168,22 +155,146 @@ namespace Dominio
 
                        #region Constructores
 
-                       public AutorizacionManual (Autorizacion auth):base (auth)
+                       public AutorizacionManual( int codigo, DateTime fechaSolicitud )
+                               : base( codigo, fechaSolicitud )
                        {
                        }
 
                        #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( int codigo, DateTime fechaSolicitud )
+                               : base( codigo, fechaSolicitud )
                        {
                        }
 
                        #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