X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/0196d6f0df6242167677a11063a1bbe5ba4bac63..889da6ee2b0237902b33b5d719a8d2fa55a1a8c2:/demo/src/Dominio/Autorizacion.cs?ds=sidebyside diff --git a/demo/src/Dominio/Autorizacion.cs b/demo/src/Dominio/Autorizacion.cs index d38ad8f..fb508c2 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,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() + { + string strAut = string.Empty; + + strAut += "Tipo: " + this.GetType().Name + "\n"; + + System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties(); + foreach ( System.Reflection.PropertyInfo property in properties ) + { + strAut += property.Name + " = " + property.GetValue( this, null ) + "\n"; + } + + 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,7 +150,7 @@ namespace Dominio #region Campos Privados private string _observaciones; - private DateTime _fechaResolucion; + private DateTime _fechaResolucion = DateTime.MinValue; #endregion Campos Privados @@ -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