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 #warning Ver cómo manejar los códigos con DB4O
98 this.FechaSolicitud = fechaSolicitud;
101 #endregion Constructores
103 #region Métodos Públicos
105 public abstract Autorizacion.Estado getEstado( DateTime fecha );
107 public Autorizacion.Estado getEstado( )
109 return this.getEstado( DateTime.Now );
112 public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
114 this.FundamentosResolucion = fundamentosResolucion;
115 this.PorcentajeCobertura = porcentajeCobertura;
118 public override string ToString()
\r
120 string strAut = string.Empty;
\r
122 strAut += "Tipo: " + this.GetType().Name + "\n";
\r
124 System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties();
\r
125 foreach ( System.Reflection.PropertyInfo property in properties )
\r
127 strAut += property.Name + " = " + property.GetValue( this, null ) + "\n";
\r
134 #endregion Métodos Públicos
136 #region Estados de una autorización
145 Invalida, //Corresponde a inconsistencia de datos en el sistema
146 Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
149 #endregion Estados de una autorización
152 #endregion Clase Autorizacion
154 #region Clases derivadas de Autorizacion
156 public class AutorizacionManual : Autorizacion
158 #region Campos Privados
160 private string _observaciones;
161 private DateTime _fechaResolucion = DateTime.MinValue;
162 private int _nroDeLegajo = int.MinValue;
164 #endregion Campos Privados
166 #region Propiedades Públicas
168 public string Observaciones
170 get { return this._observaciones; }
171 set { this._observaciones = value; }
174 public DateTime FechaResolucion
176 get { return this._fechaResolucion; }
177 set { this._fechaResolucion = value; }
180 public int NroDeLegajo
182 get { return this._nroDeLegajo ; }
183 set { this._nroDeLegajo = value ; }
186 #endregion Propiedades Públicas
188 #region Constructores
190 public AutorizacionManual( DateTime fechaSolicitud )
191 : base( fechaSolicitud )
195 #endregion Constructores
197 #region Métodos Públicos
199 public override Autorizacion.Estado getEstado( DateTime fecha )
201 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
203 //Evalúo Fecha SOLICITUD
204 if ( this.FechaSolicitud != DateTime.MinValue )
206 if ( this.FechaSolicitud <= fecha )
208 //Evalúo Fecha RESOLUCIÓN
209 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
211 //Evalúo si está APROBADA
214 //Evalúo Fecha REALIZACIÓN
215 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
217 estado = Autorizacion.Estado.Realizada;
221 //Aprobada pero NO realizada
222 //Evalúo Fecha VENCIMIENTO
223 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
225 estado = Autorizacion.Estado.Vencida;
229 estado = Autorizacion.Estado.Aprobada;
235 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
237 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
240 estado = Autorizacion.Estado.Rechazada;
245 if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
246 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
248 estado = Autorizacion.Estado.Invalida;
251 //FechaSolicitud > fecha
252 estado = Autorizacion.Estado.Inexistente;
255 //FechaSolicitud no seteada
256 estado = Autorizacion.Estado.Invalida;
261 #endregion Métodos Públicos
264 public class AutorizacionAutomatica : Autorizacion
266 #region Constructores
268 public AutorizacionAutomatica( DateTime fechaSolicitud )
269 : base( fechaSolicitud )
273 #endregion Constructores
275 #region Métodos Públicos
277 public override Autorizacion.Estado getEstado( DateTime fecha )
279 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
281 //Evalúo Fecha SOLICITUD
282 if ( this.FechaSolicitud != DateTime.MinValue )
284 if ( this.FechaSolicitud <= fecha )
286 //Evalúo si está APROBADA
289 //Evalúo Fecha REALIZACIÓN
290 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
292 estado = Autorizacion.Estado.Realizada;
296 //Aprobada pero NO realizada
297 //Evalúo Fecha VENCIMIENTO
298 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
300 estado = Autorizacion.Estado.Vencida;
304 estado = Autorizacion.Estado.Aprobada;
310 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
312 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
315 estado = Autorizacion.Estado.Rechazada;
319 //FechaSolicitud > fecha
320 estado = Autorizacion.Estado.Inexistente;
323 //FechaSolicitud no seteada
324 estado = Autorizacion.Estado.Invalida;
329 #endregion Métodos Públicos
332 #endregion Clases derivadas de Autorizacion