X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/c36c16908f73901f367fe523aeef8dfb688ac2ff..fbad10ba61c6229acb279fb8438a01e9e0a10a62:/demo/src/Dominio/Autorizacion.cs?ds=sidebyside diff --git a/demo/src/Dominio/Autorizacion.cs b/demo/src/Dominio/Autorizacion.cs index 412a05c..fb508c2 100644 --- a/demo/src/Dominio/Autorizacion.cs +++ b/demo/src/Dominio/Autorizacion.cs @@ -1,74 +1,320 @@ -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() + { + 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 + + #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 + } }