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 + System.Environment.NewLine;
\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 ) + System.Environment.NewLine;
\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 )
205 public AutorizacionManual()
\r
209 //para consultas a db4o
210 public AutorizacionManual( int codigo )
212 this.Codigo = codigo;
215 #endregion Constructores
217 #region Métodos Públicos
219 public override Autorizacion.Estado getEstado( DateTime fecha )
221 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
223 //Evalúo Fecha SOLICITUD
224 if ( this.FechaSolicitud != DateTime.MinValue )
226 if ( this.FechaSolicitud <= fecha )
228 //Evalúo Fecha RESOLUCIÓN
229 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
231 //Evalúo si está APROBADA
234 //Evalúo Fecha REALIZACIÓN
235 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
237 estado = Autorizacion.Estado.Realizada;
241 //Aprobada pero NO realizada
242 //Evalúo Fecha VENCIMIENTO
243 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
245 estado = Autorizacion.Estado.Vencida;
249 estado = Autorizacion.Estado.Aprobada;
255 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
257 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
260 estado = Autorizacion.Estado.Rechazada;
265 if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
266 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
268 estado = Autorizacion.Estado.Invalida;
271 //FechaSolicitud > fecha
272 estado = Autorizacion.Estado.Inexistente;
275 //FechaSolicitud no seteada
276 estado = Autorizacion.Estado.Invalida;
281 #endregion Métodos Públicos
284 public class AutorizacionAutomatica : Autorizacion
286 #region Constructores
288 public AutorizacionAutomatica( DateTime fechaSolicitud )
289 : base( fechaSolicitud )
293 public AutorizacionAutomatica()
297 //para consultas a db4o
298 public AutorizacionAutomatica( int codigo )
300 this.Codigo = codigo;
303 #endregion Constructores
305 #region Métodos Públicos
307 public override Autorizacion.Estado getEstado( DateTime fecha )
309 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
311 //Evalúo Fecha SOLICITUD
312 if ( this.FechaSolicitud != DateTime.MinValue )
314 if ( this.FechaSolicitud <= fecha )
316 //Evalúo si está APROBADA
319 //Evalúo Fecha REALIZACIÓN
320 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
322 estado = Autorizacion.Estado.Realizada;
326 //Aprobada pero NO realizada
327 //Evalúo Fecha VENCIMIENTO
328 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
330 estado = Autorizacion.Estado.Vencida;
334 estado = Autorizacion.Estado.Aprobada;
340 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
342 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
345 estado = Autorizacion.Estado.Rechazada;
349 //FechaSolicitud > fecha
350 estado = Autorizacion.Estado.Inexistente;
353 //FechaSolicitud no seteada
354 estado = Autorizacion.Estado.Invalida;
359 #endregion Métodos Públicos
362 #endregion Clases derivadas de Autorizacion