From f6ea6db24e89baba5217db7ef7b77f4a4a92fe05 Mon Sep 17 00:00:00 2001 From: Guillermo Rugilo Date: Thu, 23 Jun 2005 06:19:17 +0000 Subject: [PATCH] Implementacion del MEGA Metodo Super estrella mundialmente conocido como getEstado(). Le falta el testing. --- demo/src/Dominio/Autorizacion.cs | 179 +++++++++++++++++++++++++------ 1 file changed, 145 insertions(+), 34 deletions(-) diff --git a/demo/src/Dominio/Autorizacion.cs b/demo/src/Dominio/Autorizacion.cs index 554b129..8cdbc23 100644 --- a/demo/src/Dominio/Autorizacion.cs +++ b/demo/src/Dominio/Autorizacion.cs @@ -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 -- 2.43.0