4 namespace Autorizaciones
9 #region Clase Autorizacion
11 public abstract class Autorizacion
13 #region Campos privados
15 private int _codigo = int.MinValue;
16 private float _porcentajeCobertura = 0;
17 private DateTime _fechaSolicitud = DateTime.MinValue;
18 private DateTime _fechaRealizacion = DateTime.MinValue;
19 private DateTime _fechaVencimiento = DateTime.MinValue;
20 private bool _aprobada = false;
21 private string _fundamentosResolucion = string.Empty;
22 private Prestador _prestador = null;
23 private Prestacion _prestacion = null;
25 #endregion Campos privados
27 #region Propiedades Públicas
31 get { return this._codigo; }
32 set { this._codigo = value; }
35 public float PorcentajeCobertura
37 get { return this._porcentajeCobertura; }
38 set { this._porcentajeCobertura = value; }
41 public DateTime FechaSolicitud
43 get { return this._fechaSolicitud; }
44 set { this._fechaSolicitud = value; }
47 public DateTime FechaRealizacion
49 get { return this._fechaRealizacion; }
50 set { this._fechaRealizacion = value; }
53 public DateTime FechaVencimiento
55 get { return this._fechaVencimiento; }
56 set { this._fechaVencimiento = value; }
61 get { return this._aprobada; }
62 set { this._aprobada = value; }
65 public string FundamentosResolucion
67 get { return this._fundamentosResolucion; }
68 set { this._fundamentosResolucion = value; }
71 public Prestador Prestador
73 get { return this._prestador; }
74 set { this._prestador = value; }
77 public Prestacion Prestacion
79 get { return this._prestacion; }
80 set { this._prestacion = value; }
83 #endregion Propiedades Públicas
87 public Autorizacion( DateTime fechaSolicitud )
89 #warning Ver cómo manejar los códigos con DB4O
90 this.FechaSolicitud = fechaSolicitud;
93 #endregion Constructores
95 #region Métodos Públicos
97 public abstract Autorizacion.Estado getEstado( DateTime fecha );
99 public Autorizacion.Estado getEstado( )
101 return this.getEstado( DateTime.Now );
104 public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
106 this.FundamentosResolucion = fundamentosResolucion;
107 this.PorcentajeCobertura = porcentajeCobertura;
110 public override string ToString()
\r
112 string strAut = string.Empty;
\r
114 strAut += "Tipo: " + this.GetType().Name + "\n";
\r
116 System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties();
\r
117 foreach ( System.Reflection.PropertyInfo property in properties )
\r
119 strAut += property.Name + " = " + property.GetValue( this, null ) + "\n";
\r
126 #endregion Métodos Públicos
128 #region Estados de una autorización
137 Invalida, //Corresponde a inconsistencia de datos en el sistema
138 Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
141 #endregion Estados de una autorización
144 #endregion Clase Autorizacion
146 #region Clases derivadas de Autorizacion
148 public class AutorizacionManual : Autorizacion
150 #region Campos Privados
152 private string _observaciones;
153 private DateTime _fechaResolucion = DateTime.MinValue;
155 #endregion Campos Privados
157 #region Propiedades Públicas
159 public string Observaciones
161 get { return this._observaciones; }
162 set { this._observaciones = value; }
165 public DateTime FechaResolucion
167 get { return this._fechaResolucion; }
168 set { this._fechaResolucion = value; }
171 #endregion Propiedades Públicas
173 #region Constructores
175 public AutorizacionManual( DateTime fechaSolicitud )
176 : base( fechaSolicitud )
180 #endregion Constructores
182 #region Métodos Públicos
184 public override Autorizacion.Estado getEstado( DateTime fecha )
186 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
188 //Evalúo Fecha SOLICITUD
189 if ( this.FechaSolicitud != DateTime.MinValue )
191 if ( this.FechaSolicitud <= fecha )
193 //Evalúo Fecha RESOLUCIÓN
194 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
196 //Evalúo si está APROBADA
199 //Evalúo Fecha REALIZACIÓN
200 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
202 estado = Autorizacion.Estado.Realizada;
206 //Aprobada pero NO realizada
207 //Evalúo Fecha VENCIMIENTO
208 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
210 estado = Autorizacion.Estado.Vencida;
214 estado = Autorizacion.Estado.Aprobada;
220 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
222 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
225 estado = Autorizacion.Estado.Rechazada;
230 if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
231 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
233 estado = Autorizacion.Estado.Invalida;
236 //FechaSolicitud > fecha
237 estado = Autorizacion.Estado.Inexistente;
240 //FechaSolicitud no seteada
241 estado = Autorizacion.Estado.Invalida;
246 #endregion Métodos Públicos
249 public class AutorizacionAutomatica : Autorizacion
251 #region Constructores
253 public AutorizacionAutomatica( DateTime fechaSolicitud )
254 : base( fechaSolicitud )
258 #endregion Constructores
260 #region Métodos Públicos
262 public override Autorizacion.Estado getEstado( DateTime fecha )
264 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
266 //Evalúo Fecha SOLICITUD
267 if ( this.FechaSolicitud != DateTime.MinValue )
269 if ( this.FechaSolicitud <= fecha )
271 //Evalúo si está APROBADA
274 //Evalúo Fecha REALIZACIÓN
275 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
277 estado = Autorizacion.Estado.Realizada;
281 //Aprobada pero NO realizada
282 //Evalúo Fecha VENCIMIENTO
283 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
285 estado = Autorizacion.Estado.Vencida;
289 estado = Autorizacion.Estado.Aprobada;
295 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
297 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
300 estado = Autorizacion.Estado.Rechazada;
304 //FechaSolicitud > fecha
305 estado = Autorizacion.Estado.Inexistente;
308 //FechaSolicitud no seteada
309 estado = Autorizacion.Estado.Invalida;
314 #endregion Métodos Públicos
317 #endregion Clases derivadas de Autorizacion