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 //Se necesita alguno vacio por tema de consultas en db4.
102 public Autorizacion()
\r
106 #endregion Constructores
108 #region Métodos Públicos
110 public abstract Autorizacion.Estado getEstado( DateTime fecha );
112 public Autorizacion.Estado getEstado( )
114 return this.getEstado( DateTime.Now );
117 public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
119 this.FundamentosResolucion = fundamentosResolucion;
120 this.PorcentajeCobertura = porcentajeCobertura;
123 public override string ToString()
\r
125 string strAut = string.Empty;
\r
127 strAut += "Tipo: " + this.GetType().Name + "\n";
\r
129 System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties();
\r
130 foreach ( System.Reflection.PropertyInfo property in properties )
\r
132 strAut += property.Name + " = " + property.GetValue( this, null ) + "\n";
\r
139 #endregion Métodos Públicos
141 #region Estados de una autorización
150 Invalida, //Corresponde a inconsistencia de datos en el sistema
151 Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
154 #endregion Estados de una autorización
157 #endregion Clase Autorizacion
159 #region Clases derivadas de Autorizacion
161 public class AutorizacionManual : Autorizacion
163 #region Campos Privados
165 private string _observaciones;
166 private DateTime _fechaResolucion = DateTime.MinValue;
167 private int _nroDeLegajo = int.MinValue;
169 #endregion Campos Privados
171 #region Propiedades Públicas
173 public string Observaciones
175 get { return this._observaciones; }
176 set { this._observaciones = value; }
179 public DateTime FechaResolucion
181 get { return this._fechaResolucion; }
182 set { this._fechaResolucion = value; }
185 public int NroDeLegajo
187 get { return this._nroDeLegajo ; }
188 set { this._nroDeLegajo = value ; }
191 #endregion Propiedades Públicas
193 #region Constructores
195 public AutorizacionManual( DateTime fechaSolicitud )
196 : base( fechaSolicitud )
199 public AutorizacionManual()
\r
203 #endregion Constructores
205 #region Métodos Públicos
207 public override Autorizacion.Estado getEstado( DateTime fecha )
209 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
211 //Evalúo Fecha SOLICITUD
212 if ( this.FechaSolicitud != DateTime.MinValue )
214 if ( this.FechaSolicitud <= fecha )
216 //Evalúo Fecha RESOLUCIÓN
217 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
219 //Evalúo si está APROBADA
222 //Evalúo Fecha REALIZACIÓN
223 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
225 estado = Autorizacion.Estado.Realizada;
229 //Aprobada pero NO realizada
230 //Evalúo Fecha VENCIMIENTO
231 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
233 estado = Autorizacion.Estado.Vencida;
237 estado = Autorizacion.Estado.Aprobada;
243 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
245 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
248 estado = Autorizacion.Estado.Rechazada;
253 if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
254 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
256 estado = Autorizacion.Estado.Invalida;
259 //FechaSolicitud > fecha
260 estado = Autorizacion.Estado.Inexistente;
263 //FechaSolicitud no seteada
264 estado = Autorizacion.Estado.Invalida;
269 #endregion Métodos Públicos
272 public class AutorizacionAutomatica : Autorizacion
274 #region Constructores
276 public AutorizacionAutomatica( DateTime fechaSolicitud )
277 : base( fechaSolicitud )
280 public AutorizacionAutomatica()
284 #endregion Constructores
286 #region Métodos Públicos
288 public override Autorizacion.Estado getEstado( DateTime fecha )
290 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
292 //Evalúo Fecha SOLICITUD
293 if ( this.FechaSolicitud != DateTime.MinValue )
295 if ( this.FechaSolicitud <= fecha )
297 //Evalúo si está APROBADA
300 //Evalúo Fecha REALIZACIÓN
301 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
303 estado = Autorizacion.Estado.Realizada;
307 //Aprobada pero NO realizada
308 //Evalúo Fecha VENCIMIENTO
309 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
311 estado = Autorizacion.Estado.Vencida;
315 estado = Autorizacion.Estado.Aprobada;
321 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
323 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
326 estado = Autorizacion.Estado.Rechazada;
330 //FechaSolicitud > fecha
331 estado = Autorizacion.Estado.Inexistente;
334 //FechaSolicitud no seteada
335 estado = Autorizacion.Estado.Invalida;
340 #endregion Métodos Públicos
343 #endregion Clases derivadas de Autorizacion