]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blobdiff - demo/src/Dominio/Autorizacion.cs
* Saco el feo uso del boolean testing y le agrego pasaje por parametros
[z.facultad/75.10/miklolife.git] / demo / src / Dominio / Autorizacion.cs
index d38ad8f4ceb61a50b5b18076ce9580e2d595841c..83ee7a6cb0ae94c2f8696029bc1f5993edbdcae9 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,43 +84,61 @@ 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;
-                       }
-
-                       public Autorizacion (Autorizacion auth)
-                       {
-                               _codigo = auth._codigo;
-                               _porcentajeCobertura = auth._porcentajeCobertura;
-                               _fechaSolicitud = auth._fechaSolicitud;
+                               #warning Ver cómo manejar los códigos con DB4O
+                               this.FechaSolicitud = fechaSolicitud;
                        }
 
                        #endregion Constructores
 
                        #region Métodos Públicos
 
-                       public int getEstado()
-                       {
-                               return 0;
-                       }
+                       public abstract Autorizacion.Estado getEstado( DateTime fecha );
 
-                       public int getEstado( DateTime fechaRecepcion )
+                       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
+                       
+                       public enum Estado
+                       {
+                               Pendiente,
+                               Aprobada,
+                               Rechazada,
+                               Realizada,
+                               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
                }
 
                #endregion Clase Autorizacion
@@ -154,22 +172,146 @@ namespace Dominio
 
                        #region Constructores
 
-                       public AutorizacionManual (Autorizacion auth):base (auth)
+                       public AutorizacionManual( DateTime fechaSolicitud )
+                               : base( 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( DateTime fechaSolicitud )
+                               : base( 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