X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/0196d6f0df6242167677a11063a1bbe5ba4bac63..HEAD:/demo/src/Dominio/Autorizacion.cs diff --git a/demo/src/Dominio/Autorizacion.cs b/demo/src/Dominio/Autorizacion.cs index d38ad8f..b62dd1d 100644 --- a/demo/src/Dominio/Autorizacion.cs +++ b/demo/src/Dominio/Autorizacion.cs @@ -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,71 @@ namespace Dominio #region Constructores - public Autorizacion (Cobertura c, Prestador p, DateTime solicitud) + public Autorizacion( DateTime fechaSolicitud ) + { + this.FechaSolicitud = fechaSolicitud; + } + + //GR. Lo agrego por comodidad para hacer consultas a db4o + public Autorizacion( int codigo ) { - /* TODO */ - _codigo = 0; - _porcentajeCobertura = c.Porcentaje; - _fechaSolicitud = solicitud; - _aprobada = false; - _prestador = p; - _prestacion = c.Prestacion; + this.Codigo = codigo; } - public Autorizacion (Autorizacion auth) + //Se necesita alguno vacio por tema de consultas en db4. + public Autorizacion() { - _codigo = auth._codigo; - _porcentajeCobertura = auth._porcentajeCobertura; - _fechaSolicitud = auth._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() + { + string strAut = string.Empty; + + strAut += "Tipo: " + this.GetType().Name + System.Environment.NewLine; + + System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties(); + foreach ( System.Reflection.PropertyInfo property in properties ) + { + strAut += property.Name + " = " + property.GetValue( this, null ) + System.Environment.NewLine; + } + + return strAut; + } + + #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 @@ -132,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 @@ -149,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() { } + + //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