{
#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
#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 )
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
#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