]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blobdiff - demo/src/Dominio/Autorizacion.cs
Agrego modelo 3 a la carpeta (también vinculado). Falta diagrama de alcance.
[z.facultad/75.10/miklolife.git] / demo / src / Dominio / Autorizacion.cs
index 412a05cd43c4730d5a07ff28abcd4cdcb9d55d59..fb508c288b845e9936d280b32590b76ba712fb2b 100644 (file)
 
-namespace Dominio {
-namespace Autorizaciones {
-
-using System;
-using Dominio.Autorizaciones;
-using Dominio.Planes;
-
-public class Autorizacion
+namespace Dominio 
 {
-       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;
-
-       public Autorizacion (Cobertura c, Prestador p, DateTime solicitud)
+       namespace Autorizaciones 
        {
-               /* TODO */
-               _codigo = 0;
-               _porcentajeCobertura = c.Porcentaje;
-               _fechaSolicitud = solicitud;
-               _aprobada = false;
-               _prestador = p;
-               _prestacion = c.Prestacion;
-       }
+               using System;
+               using Dominio.Planes;
 
-       public Autorizacion (Autorizacion auth)
-       {
-               _codigo = auth._codigo;
-               _porcentajeCobertura = auth._porcentajeCobertura;
-               _fechaSolicitud = auth._fechaSolicitud;
-       }
+               #region Clase Autorizacion
 
-       public int getEstado ()
-       {
-               return 0;
-       }
+               public abstract class Autorizacion
+               {
+                       #region Campos privados
+                       
+                       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
 
-       public int getEstado (DateTime fechaRecepcion)
-       {
-               return 0;
-       }
+                       #region Propiedades Públicas
 
-       public void setResolucion (int resolucion, string fundamentoResolucion)
-       {
-       }
-       
-}
+                       public int Codigo
+                       {
+                               get { return this._codigo; }
+                               set { this._codigo = value; }
+                       }
 
-public class AutorizacionManual : Autorizacion
-{
-       private string _observaciones;
-       private DateTime _fechaResolucion;
+                       public float PorcentajeCobertura
+                       {
+                               get { return this._porcentajeCobertura; }
+                               set { this._porcentajeCobertura = value; }
+                       }
 
-       public AutorizacionManual (Autorizacion auth):base (auth)
-       {
-       }
-}
+                       public DateTime FechaSolicitud
+                       {
+                               get { return this._fechaSolicitud; }
+                               set { this._fechaSolicitud = value; }
+                       }
 
-public class AutorizacionAutomatica : Autorizacion
-{
-       public AutorizacionAutomatica (Autorizacion auth):base (auth)
-       {
-       }
-}
+                       public DateTime FechaRealizacion
+                       {
+                               get { return this._fechaRealizacion; }
+                               set { this._fechaRealizacion = value; }
+                       }
 
-}
+                       public DateTime FechaVencimiento
+                       {
+                               get { return this._fechaVencimiento; }
+                               set { this._fechaVencimiento = value; }
+                       }
+
+                       public bool Aprobada
+                       {
+                               get { return this._aprobada; }
+                               set { this._aprobada = value; }
+                       }
+
+                       public string FundamentosResolucion
+                       {
+                               get { return this._fundamentosResolucion; }
+                               set { this._fundamentosResolucion = value; }
+                       }
+
+                       public Prestador Prestador
+                       {
+                               get { return this._prestador; }
+                               set { this._prestador = value; }
+                       }
+
+                       public Prestacion Prestacion
+                       {
+                               get { return this._prestacion; }
+                               set { this._prestacion = value; }
+                       }       
+
+                       #endregion Propiedades Públicas
+
+                       #region Constructores
+
+                       public Autorizacion( DateTime fechaSolicitud )
+                       {
+                               #warning Ver cómo manejar los códigos con DB4O
+                               this.FechaSolicitud = fechaSolicitud;
+                       }
+
+                       #endregion Constructores
+
+                       #region Métodos Públicos
+
+                       public abstract Autorizacion.Estado getEstado( DateTime fecha );
+
+                       public Autorizacion.Estado getEstado( )
+                       {
+                               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
+
+               #region Clases derivadas de Autorizacion
+
+               public class AutorizacionManual : Autorizacion
+               {
+                       #region Campos Privados
+                       
+                       private string _observaciones;
+                       private DateTime _fechaResolucion = DateTime.MinValue;
+                       
+                       #endregion Campos Privados
+
+                       #region Propiedades Públicas
+                       
+                       public string Observaciones
+                       {
+                               get { return this._observaciones; }
+                               set { this._observaciones = value; }
+                       }
+
+                       public DateTime FechaResolucion
+                       {
+                               get { return this._fechaResolucion; }
+                               set { this._fechaResolucion = value; }
+                       }
+
+                       #endregion Propiedades Públicas
+
+                       #region Constructores
+
+                       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( 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
+       }
 }