4 namespace Autorizaciones
8 using Dominio.Afiliados;
10 #region Clase Autorizacion
12 public abstract class Autorizacion
14 #region Campos privados
16 private int _codigo = int.MinValue;
17 private float _porcentajeCobertura = 0;
18 private DateTime _fechaSolicitud = DateTime.MinValue;
19 private DateTime _fechaRealizacion = DateTime.MinValue;
20 private DateTime _fechaVencimiento = DateTime.MinValue;
21 private bool _aprobada = false;
22 private string _fundamentosResolucion = string.Empty;
23 private Prestador _prestador = null;
24 private Prestacion _prestacion = null;
25 private Afiliado _afiliado = null;
27 #endregion Campos privados
29 #region Propiedades Públicas
33 get { return this._codigo; }
34 set { this._codigo = value; }
37 public Afiliado Afiliado
39 get { return this._afiliado; }
40 set { this._afiliado = value; }
43 public float PorcentajeCobertura
45 get { return this._porcentajeCobertura; }
46 set { this._porcentajeCobertura = value; }
49 public DateTime FechaSolicitud
51 get { return this._fechaSolicitud; }
52 set { this._fechaSolicitud = value; }
55 public DateTime FechaRealizacion
57 get { return this._fechaRealizacion; }
58 set { this._fechaRealizacion = value; }
61 public DateTime FechaVencimiento
63 get { return this._fechaVencimiento; }
64 set { this._fechaVencimiento = value; }
69 get { return this._aprobada; }
70 set { this._aprobada = value; }
73 public string FundamentosResolucion
75 get { return this._fundamentosResolucion; }
76 set { this._fundamentosResolucion = value; }
79 public Prestador Prestador
81 get { return this._prestador; }
82 set { this._prestador = value; }
85 public Prestacion Prestacion
87 get { return this._prestacion; }
88 set { this._prestacion = value; }
91 #endregion Propiedades Públicas
95 public Autorizacion( DateTime fechaSolicitud )
97 this.FechaSolicitud = fechaSolicitud;
100 //GR. Lo agrego por comodidad para hacer consultas a db4o
101 public Autorizacion( int codigo )
103 this.Codigo = codigo;
106 //Se necesita alguno vacio por tema de consultas en db4.
107 public Autorizacion()
\r
111 #endregion Constructores
113 #region Métodos Públicos
115 public abstract Autorizacion.Estado getEstado( DateTime fecha );
117 public Autorizacion.Estado getEstado( )
119 return this.getEstado( DateTime.Now );
122 public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
124 this.FundamentosResolucion = fundamentosResolucion;
125 this.PorcentajeCobertura = porcentajeCobertura;
128 public override string ToString()
\r
130 string strAut = string.Empty;
\r
132 strAut += "Tipo: " + this.GetType().Name + "\n";
\r
134 System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties();
\r
135 foreach ( System.Reflection.PropertyInfo property in properties )
\r
137 strAut += property.Name + " = " + property.GetValue( this, null ) + "\n";
\r
144 #endregion Métodos Públicos
146 #region Estados de una autorización
155 Invalida, //Corresponde a inconsistencia de datos en el sistema
156 Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
159 #endregion Estados de una autorización
162 #endregion Clase Autorizacion
164 #region Clases derivadas de Autorizacion
166 public class AutorizacionManual : Autorizacion
168 #region Campos Privados
170 private string _observaciones;
171 private DateTime _fechaResolucion = DateTime.MinValue;
172 private int _nroDeLegajo = int.MinValue;
174 #endregion Campos Privados
176 #region Propiedades Públicas
178 public string Observaciones
180 get { return this._observaciones; }
181 set { this._observaciones = value; }
184 public DateTime FechaResolucion
186 get { return this._fechaResolucion; }
187 set { this._fechaResolucion = value; }
190 public int NroDeLegajo
192 get { return this._nroDeLegajo ; }
193 set { this._nroDeLegajo = value ; }
196 #endregion Propiedades Públicas
198 #region Constructores
200 public AutorizacionManual( DateTime fechaSolicitud )
201 : base( fechaSolicitud )
204 public AutorizacionManual()
\r
208 #endregion Constructores
210 #region Métodos Públicos
212 public override Autorizacion.Estado getEstado( DateTime fecha )
214 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
216 //Evalúo Fecha SOLICITUD
217 if ( this.FechaSolicitud != DateTime.MinValue )
219 if ( this.FechaSolicitud <= fecha )
221 //Evalúo Fecha RESOLUCIÓN
222 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
224 //Evalúo si está APROBADA
227 //Evalúo Fecha REALIZACIÓN
228 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
230 estado = Autorizacion.Estado.Realizada;
234 //Aprobada pero NO realizada
235 //Evalúo Fecha VENCIMIENTO
236 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
238 estado = Autorizacion.Estado.Vencida;
242 estado = Autorizacion.Estado.Aprobada;
248 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
250 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
253 estado = Autorizacion.Estado.Rechazada;
258 if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
259 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
261 estado = Autorizacion.Estado.Invalida;
264 //FechaSolicitud > fecha
265 estado = Autorizacion.Estado.Inexistente;
268 //FechaSolicitud no seteada
269 estado = Autorizacion.Estado.Invalida;
274 #endregion Métodos Públicos
277 public class AutorizacionAutomatica : Autorizacion
279 #region Constructores
281 public AutorizacionAutomatica( DateTime fechaSolicitud )
282 : base( fechaSolicitud )
285 public AutorizacionAutomatica()
289 #endregion Constructores
291 #region Métodos Públicos
293 public override Autorizacion.Estado getEstado( DateTime fecha )
295 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
297 //Evalúo Fecha SOLICITUD
298 if ( this.FechaSolicitud != DateTime.MinValue )
300 if ( this.FechaSolicitud <= fecha )
302 //Evalúo si está APROBADA
305 //Evalúo Fecha REALIZACIÓN
306 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
308 estado = Autorizacion.Estado.Realizada;
312 //Aprobada pero NO realizada
313 //Evalúo Fecha VENCIMIENTO
314 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
316 estado = Autorizacion.Estado.Vencida;
320 estado = Autorizacion.Estado.Aprobada;
326 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
328 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
331 estado = Autorizacion.Estado.Rechazada;
335 //FechaSolicitud > fecha
336 estado = Autorizacion.Estado.Inexistente;
339 //FechaSolicitud no seteada
340 estado = Autorizacion.Estado.Invalida;
345 #endregion Métodos Públicos
348 #endregion Clases derivadas de Autorizacion